package com.caimei.modules.user.service; import com.caimei.modules.order.entity.NewOrder; import com.caimei.modules.user.dao.CmPortraitDao; import com.caimei.modules.user.entity.CmBehaviorRecord; import com.caimei.modules.user.entity.CmClubRemarks; import com.caimei.modules.user.entity.CmPortrait; import com.caimei.modules.user.entity.OrderPortrait; import com.thinkgem.jeesite.common.utils.ObjectUtils; import com.thinkgem.jeesite.common.utils.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; /** * Description * * @author : Charles * @date : 2023/2/15 */ @Service public class ClubPortraitService { @Autowired private CmPortraitDao cmPortraitDao; /** * 查询画像资料总数 * @param cmPortrait * @return */ public CmPortrait dataTotal(CmPortrait cmPortrait) { CmPortrait cmPortraits = cmPortraitDao.selTotal(cmPortrait); return cmPortraits; } /** * 查询机构画像数据 * @param cmPortrait * @return */ public CmPortrait dataList(CmPortrait cmPortrait) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); String endTime = ""; Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, -1); Date time = calendar.getTime(); endTime = dateFormat.format(time); String time1 = ""; String time2 = ""; boolean expty = ObjectUtils.isEmpty(cmPortrait.getStartTime()) && ObjectUtils.isEmpty(cmPortrait.getEndTime()); if (expty) { Date start = null; String startTime = ""; String format = dateFormat.format(date); cmPortrait.setEndTime(endTime); // 日期参数为 日 if (0 == cmPortrait.getDateType() || 1 == cmPortrait.getDateType()) { cmPortrait.setAccessDate(endTime); cmPortrait.setStartTime(endTime); // cmPortrait.setEndTime(endTime); } if (2 == cmPortrait.getDateType()) { // cmPortrait.setEndTime(endTime); calendar.setTime(time); calendar.add(Calendar.MONTH, -1); start = calendar.getTime(); startTime = dateFormat.format(start); cmPortrait.setStartTime(startTime); } if (3 == cmPortrait.getDateType()) { // cmPortrait.setEndTime(endTime); calendar.setTime(time); calendar.add(Calendar.MONTH, -6); start = calendar.getTime(); startTime = dateFormat.format(start); cmPortrait.setStartTime(startTime); } if (4 == cmPortrait.getDateType()) { // cmPortrait.setEndTime(endTime); calendar.setTime(time); calendar.add(Calendar.YEAR, -1); start = calendar.getTime(); startTime = dateFormat.format(start); cmPortrait.setStartTime(startTime); } } else { time1 = cmPortrait.getStartTime(); time2 = cmPortrait.getEndTime(); } // 机构订单 if (0 == cmPortrait.getType() || 4 == cmPortrait.getType()) { if ((0 == cmPortrait.getDateType() || 1 == cmPortrait.getDateType()) && expty) { cmPortrait.setEndTime(dateFormat.format(date)); } if (cmPortrait.getEndTime().equals(endTime)) { cmPortrait.setEndTime(dateFormat.format(date)); } int ordinary = 0, secondHand = 0, rebate = 0, partialRefund = 0, fullRefund = 0, closed = 0; ArrayList orderPortraits = new ArrayList<>(); OrderPortrait orderPortrait = new OrderPortrait(); List orderList = cmPortraitDao.selOrderList(cmPortrait); int length = orderList.size(); NumberFormat instance = NumberFormat.getInstance(); instance.setMaximumFractionDigits(2); if (length != 0) { for (NewOrder order : orderList) { // 普通订单 if (("0".equals(order.getSecondHandOrderFlag()) || StringUtils.isEmpty(order.getSecondHandOrderFlag())) && (!"1".equals(order.getRebateFlag()) || "".equals(order.getRebateFlag()) || StringUtils.isEmpty(order.getRebateFlag())) && ((!"1".equals(order.getRefundType()) && !"2".equals(order.getRefundType())) || "".equals(order.getRefundType()) || StringUtils.isEmpty(order.getRefundType())) && !"6".equals(order.getStatus())) { ordinary++; } // 二手订单 if ("1".equals(order.getSecondHandOrderFlag()) && !"1".equals(order.getRebateFlag()) && (!"1".equals(order.getRefundType()) && !"2".equals(order.getRefundType())) && !"6".equals(order.getStatus())) { secondHand++; } // 返佣订单 if ("1".equals(order.getRebateFlag()) && (!"1".equals(order.getRefundType()) && !"2".equals(order.getRefundType()) || StringUtils.isEmpty(order.getRefundType())) && !"6".equals(order.getStatus())) { rebate++; } // 部分退款 if ("1".equals(order.getRefundType()) && !"6".equals(order.getStatus())) { partialRefund++; } // 全部退款 if ("2".equals(order.getRefundType()) && !"6".equals(order.getStatus())) { fullRefund++; } // 已关闭 if ("6".equals(order.getStatus()) || StringUtils.isEmpty(order.getStatus())) { closed++; } } /*cmPortrait.setOrderTotalAmount(orderList.get(0).getTotalMoney()); cmPortrait.setOrderTotal(orderList.get(0).getNumbers());*/ cmPortrait.setOrderTotal(length); orderPortrait.setValue(ordinary); if (ordinary != 0) { orderPortrait.setName("普通订单 【" + instance.format((float)ordinary / (float) length * 100) + "%】 【" + ordinary + "个】"); } else { orderPortrait.setName("普通订单 【 0 %】 【" + ordinary + "个】"); } orderPortraits.add(orderPortrait); orderPortrait = new OrderPortrait(); orderPortrait.setValue(secondHand); if (secondHand != 0) { orderPortrait.setName("二手订单 【" + instance.format((float)secondHand / (float) length * 100) + "%】 【" + secondHand + "个】"); } else { orderPortrait.setName("二手订单 【 0 %】 【" + secondHand + "个】"); } orderPortraits.add(orderPortrait); orderPortrait = new OrderPortrait(); orderPortrait.setValue(rebate); if (rebate != 0) { orderPortrait.setName("返佣订单 【" + instance.format((float)rebate / (float) length * 100) + "%】 【" + rebate + "个】"); } else { orderPortrait.setName("返佣订单 【 0 %】 【" + rebate + "个】"); } orderPortraits.add(orderPortrait); orderPortrait = new OrderPortrait(); orderPortrait.setValue(partialRefund); if (partialRefund != 0) { orderPortrait.setName("部分退款订单 【" + instance.format((float)partialRefund / (float) length * 100) + "%】 【" + partialRefund + "个】"); } else { orderPortrait.setName("部分退款订单 【 0 %】 【" + partialRefund + "个】"); } orderPortraits.add(orderPortrait); orderPortrait = new OrderPortrait(); orderPortrait.setValue(fullRefund); if (fullRefund != 0) { orderPortrait.setName("全部退款订单 【" + instance.format((float)fullRefund / (float) length * 100) + "%】 【" + fullRefund + "个】"); } else { orderPortrait.setName("全部退款订单 【 0 %】 【" + fullRefund + "个】"); } orderPortraits.add(orderPortrait); orderPortrait = new OrderPortrait(); orderPortrait.setValue(closed); if (closed != 0) { orderPortrait.setName("已关闭订单 【" + instance.format((float)closed / (float) length * 100) + "%】 【" + closed + "个】"); } else { orderPortrait.setName("已关闭订单 【 0 %】 【" + closed + "个】"); } orderPortraits.add(orderPortrait); cmPortrait.setOrderPortrait(orderPortraits); } calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, -1); time = calendar.getTime(); endTime = dateFormat.format(time); cmPortrait.setEndTime(endTime); } // 搜索关键词 if (1 == cmPortrait.getType() || 4 == cmPortrait.getType()) { List behaviorRecordList = cmPortraitDao.selBehaviorList(cmPortrait); ArrayList integers = new ArrayList<>(); ArrayList strings = new ArrayList<>(); if (behaviorRecordList.size() != 0) { for (CmBehaviorRecord record : behaviorRecordList) { integers.add(record.getNumber()); if (!ObjectUtils.isEmpty(record.getPageLabel())) { strings.add(record.getPageLabel()); } else { strings.add("未知"); } cmPortrait.setTotalkeywords(behaviorRecordList.get(0).getNumbers()); cmPortrait.setBehaviorValue(integers); cmPortrait.setBehaviorType(strings); } } } // 咨询记录 if (2 == cmPortrait.getType() || 4 == cmPortrait.getType()) { if ((0 == cmPortrait.getDateType() || 1 == cmPortrait.getDateType()) && expty) { cmPortrait.setEndTime(dateFormat.format(date)); } if (cmPortrait.getEndTime().equals(endTime)) { cmPortrait.setEndTime(dateFormat.format(date)); } List remarksList = cmPortraitDao.selRemarksList(cmPortrait); ArrayList integers = new ArrayList<>(); ArrayList strings = new ArrayList<>(); ArrayList strRemark = new ArrayList<>(); int number = 0; if (remarksList.size() != 0) { for (CmClubRemarks remarks: remarksList) { String[] split = remarks.getRemarks().split(","); for (String str : split) { if (!strRemark.contains(str)) { strRemark.add(str); } } } for (String str : strRemark) { for (CmClubRemarks remarks: remarksList) { if (remarks.getRemarks().contains(str)) { number++; } } integers.add(number); if (!ObjectUtils.isEmpty(str)) { strings.add(str); } else { strings.add("未知"); } number = 0; } cmPortrait.setRemarksTotal(remarksList.get(0).getNumbers()); cmPortrait.setRemarksValue(integers); cmPortrait.setRemarksType(strings); } calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, -1); time = calendar.getTime(); endTime = dateFormat.format(time); cmPortrait.setEndTime(endTime); } // 访问记录 if (3 == cmPortrait.getType() || 4 == cmPortrait.getType()) { List pageTypeList = cmPortraitDao.selBehaviorPageTypeList(cmPortrait); ArrayList integers = new ArrayList<>(); ArrayList strings = new ArrayList<>(); if (pageTypeList.size() != 0) { for(CmBehaviorRecord record : pageTypeList) { integers.add(record.getNumbers()); strings.add(record.getPageLabel()); } cmPortrait.setPageTypeValue(integers); cmPortrait.setPageType(strings); } } if (!expty) { cmPortrait.setStartTime(time1); if ((0 == cmPortrait.getDateType() || 1 == cmPortrait.getDateType()) && ObjectUtils.isEmpty(cmPortrait.getStartTime())) { cmPortrait.setStartTime(time2); } cmPortrait.setEndTime(time2); } return cmPortrait; } }