From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 25 二月 2025 16:41:22 +0800 Subject: [PATCH] 淘宝转链接口更新 --- fanli/src/main/java/com/yeshi/fanli/service/impl/count/DailyCountOrderServiceImpl.java | 1132 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 566 insertions(+), 566 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/count/DailyCountOrderServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/count/DailyCountOrderServiceImpl.java index 06f9e31..6287d80 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/count/DailyCountOrderServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/count/DailyCountOrderServiceImpl.java @@ -1,566 +1,566 @@ -package com.yeshi.fanli.service.impl.count; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import javax.annotation.Resource; - -import org.springframework.stereotype.Service; -import org.yeshi.utils.DateUtil; - -import com.yeshi.fanli.dao.user.count.DailyCountOrderDao; -import com.yeshi.fanli.dto.order.CountOrderDTO; -import com.yeshi.fanli.entity.admin.count.DailyCountOrder; -import com.yeshi.fanli.entity.admin.count.DailyCountOrder.DailyCountOrderEnum; -import com.yeshi.fanli.entity.bus.user.LostOrder; -import com.yeshi.fanli.entity.bus.user.UserInfoRegister; -import com.yeshi.fanli.entity.system.ChannelEnum; -import com.yeshi.fanli.service.inter.count.DailyCountOrderService; -import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; -import com.yeshi.fanli.service.inter.order.CommonOrderCountService; -import com.yeshi.fanli.service.inter.order.LostOrderService; -import com.yeshi.fanli.service.inter.order.UserOrderWeiQuanRecordService; -import com.yeshi.fanli.service.inter.order.jd.JDOrderService; -import com.yeshi.fanli.service.inter.order.pdd.PDDOrderService; -import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService; -import com.yeshi.fanli.service.inter.user.UserInfoRegisterService; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.MoneyBigDecimalUtil; -import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.TimeUtil; - -@Service -public class DailyCountOrderServiceImpl implements DailyCountOrderService { - - @Resource - private DailyCountOrderDao dailyCountOrderDao; - - @Resource - private HongBaoV2CountService hongBaoV2CountService; - - @Resource - private CommonOrderCountService commonOrderCountService; - - @Resource - private UserInfoRegisterService userInfoRegisterService; - - @Resource - private UserOrderWeiQuanRecordService userOrderWeiQuanRecordService; - - @Resource - private TaoBaoOrderService taoBaoOrderService; - - @Resource - private JDOrderService jdOrderService; - - @Resource - private PDDOrderService pddOrderService; - - @Resource - private LostOrderService lostOrderService; - - @Override - public List<DailyCountOrder> getDailyCountList(String type, Date startTime, Date endTime, String channel) - throws Exception { - // 鏌ヨ绫诲瀷 - DailyCountOrderEnum typeEnum = getTypeEnum(type); - if (typeEnum == null) { - return null; - } - - // 鍒濆鍖栨暟鎹� - initData(typeEnum); - - return dailyCountOrderDao.query(typeEnum, startTime, endTime, channel); - } - - /** - * 鑾峰彇鏋氫妇绫诲瀷 - * - * @param type - * @return - */ - private DailyCountOrderEnum getTypeEnum(String name) { - if (StringUtil.isNullOrEmpty(name)) { - return null; - } - - DailyCountOrderEnum[] array = DailyCountOrderEnum.values(); - for (int i = 0; i < array.length; i++) { - if (array[i].name().equals(name)) { - return array[i]; - } - } - return null; - } - - /** - * 鑾峰彇鏋氫妇绫诲瀷 - * - * @param type - * @return - */ - @Override - public String getTypeEnumDesc(String name) { - if (StringUtil.isNullOrEmpty(name)) { - return ""; - } - - DailyCountOrderEnum[] array = DailyCountOrderEnum.values(); - for (int i = 0; i < array.length; i++) { - if (array[i].name().equals(name)) { - return array[i].getDesc(); - } - } - - return ""; - } - - /** - * 鍒濆鏁版嵁 - * - * @param typeEnum - * @throws Exception - */ - @Override - public void initData(DailyCountOrderEnum typeEnum) throws Exception { - Date lastDate = null; - DailyCountOrder lastRecord = dailyCountOrderDao.getMaxDate(typeEnum); - if (lastRecord != null) { - lastDate = lastRecord.getUpdateDate(); - } else { - lastDate = TimeUtil.parse("2018-01-20"); - } - - long min = DateUtil.dateDiffMin(lastDate, new Date()); - if (min <= 10) { // 10鍒嗛挓浠ュ唴涓嶇粺璁� - return; - } - - Date today = new Date(); - int betweenDays = DateUtil.daysBetween2(lastDate, today); - for (int i = 0; i <= betweenDays; i++) { - // 璁$畻鏃ユ湡 - String preDay = DateUtil.plusDay(i, lastDate); - // 缁熻鏁版嵁 - if (DailyCountOrderEnum.fanliOrderNum == typeEnum) { - addOrderNumCount(preDay, typeEnum, 1); - } else if (DailyCountOrderEnum.shareOrderNum == typeEnum) { - addOrderNumCount(preDay, typeEnum, 2); - } else if (DailyCountOrderEnum.inviteOrderNum == typeEnum) { - addOrderNumCount(preDay, typeEnum, 3); - } else if (DailyCountOrderEnum.channelOrderNum24H == typeEnum) { - addChannelOrderNum24H(preDay, typeEnum); - } else if (DailyCountOrderEnum.channelOrderNum == typeEnum) { - addChannelOrderNum(preDay, typeEnum); - } else if (DailyCountOrderEnum.channelOrderMoney == typeEnum) { - addChannelOrderMoney(preDay, typeEnum); - } else if (DailyCountOrderEnum.weiQuanOrderNum == typeEnum) { - addWeiQuanOrderNum(preDay, typeEnum); - } else if (DailyCountOrderEnum.weiQuanOrderMoney == typeEnum) { - addWeiQuanOrderMoney(preDay, typeEnum); - } else if (DailyCountOrderEnum.tbOrderTrackRate == typeEnum) { - addTBOrderTrackRate(preDay, typeEnum); - } else if (DailyCountOrderEnum.jdOrderTrackRate == typeEnum) { - addJDOrderTrackRate(preDay, typeEnum); - } else if (DailyCountOrderEnum.pddOrderTrackRate == typeEnum) { - addPDDOrderTrackRate(preDay, typeEnum); - } else if (DailyCountOrderEnum.lastOrderUntreatedNum == typeEnum) { - addLastOrderUntreatedNum(preDay, typeEnum); - } else if (DailyCountOrderEnum.lastOrderSucceedNum == typeEnum) { - addLastOrderSucceedNum(preDay, typeEnum); - } else if (DailyCountOrderEnum.lastOrderFailNum == typeEnum) { - addLastOrderFailNum(preDay, typeEnum); - } else if (DailyCountOrderEnum.lastOrderSucceedMoney == typeEnum) { - addLastOrderSucceedMoney(preDay, typeEnum); - } - } - } - - /** - * 缁熻璁㈠崟鏁伴噺 - * - * @param preDay - * @param typeEnum - * @param orderType - * @throws Exception - */ - private void addOrderNumCount(String preDay, DailyCountOrderEnum typeEnum, int orderType) throws Exception { - Long count = hongBaoV2CountService.countOrderByTypeAndDate(orderType, preDay); - if (count == null) - count = 0L; - - DailyCountOrder obj = new DailyCountOrder(); - obj.setTotal(BigDecimal.valueOf(count)); - obj.setType(typeEnum); - obj.setUpdateDate(new Date()); - obj.setDay(TimeUtil.parse(preDay)); - obj.setId(StringUtil.Md5(preDay + typeEnum.name())); - dailyCountOrderDao.save(obj); - } - - /** - * 缁熻鍚勪釜娓犻亾璁㈠崟鏁版嵁 - * - * @param preDay - * @param typeEnum - * @throws Exception - */ - private void addChannelOrderNum(String preDay, DailyCountOrderEnum typeEnum) throws Exception { - List<UserInfoRegister> listRegister = null; - // 缁熻褰撴棩璁㈠崟 - List<CountOrderDTO> listOrder = commonOrderCountService.countValidOrderByDay(preDay); - - if (listOrder != null && listOrder.size() > 0) { - List<Long> listUid = new ArrayList<>(); - for (CountOrderDTO countOrderDTO : listOrder) { - listUid.add(countOrderDTO.getUid()); - } - listRegister = userInfoRegisterService.listByMultipleUids(listUid); - } - - // 缁熻鍚勪釜娓犻亾 - ChannelEnum[] channels = ChannelEnum.values(); - for (int i = 0; i < channels.length; i++) { - long count = 0; - String channelVlaue = channels[i].getVlaue(); - if (listOrder != null && listOrder.size() > 0 && listRegister != null && listRegister.size() > 0) { - for (CountOrderDTO dto : listOrder) { - Long orderUid = dto.getUid(); - if (orderUid == null) { - continue; - } - - for (UserInfoRegister register : listRegister) { - Long uid = register.getId(); - String vlaue = register.getChannel(); - // 娓犻亾 銆佺敤鎴穒d鍖归厤 - if (channelVlaue.equalsIgnoreCase(vlaue) && uid.longValue() == orderUid.longValue()) { - count++; - break; - } - } - } - } - - DailyCountOrder obj = new DailyCountOrder(); - obj.setTotal(BigDecimal.valueOf(count)); - obj.setType(typeEnum); - obj.setChannel(channels[i].name()); - obj.setUpdateDate(new Date()); - obj.setDay(TimeUtil.parse(preDay)); - obj.setId(StringUtil.Md5(preDay + channels[i].name() + typeEnum.name())); - dailyCountOrderDao.save(obj); - } - } - - /** - * 缁熻鏂颁汉24H鍐呬笅鍗曟暟閲� - * - * @param preDay - * @param typeEnum - * @throws Exception - */ - private void addChannelOrderNum24H(String preDay, DailyCountOrderEnum typeEnum) throws Exception { - ChannelEnum[] channels = ChannelEnum.values(); - for (int i = 0; i < channels.length; i++) { - int count = 0; - - List<UserInfoRegister> list = userInfoRegisterService.listByChannelAndDay(channels[i].getVlaue(), preDay); - if (list != null && list.size() > 0) { - for (UserInfoRegister user : list) { - Date limitDay = DateUtil.plusDayDate(1, user.getCreateTime()); - Integer total = commonOrderCountService.countOderByUidAndDate(limitDay, user.getId()); - if (total != null) - count += total; - } - } - - DailyCountOrder obj = new DailyCountOrder(); - obj.setTotal(BigDecimal.valueOf(count)); - obj.setType(typeEnum); - obj.setChannel(channels[i].name()); - obj.setUpdateDate(new Date()); - obj.setDay(TimeUtil.parse(preDay)); - obj.setId(StringUtil.Md5(preDay + channels[i].name() + typeEnum.name())); - dailyCountOrderDao.save(obj); - } - } - - /** - * 缁熻娓犻亾閲戦 - * - * @param preDay - * @param typeEnum - * @throws Exception - */ - private void addChannelOrderMoney(String preDay, DailyCountOrderEnum typeEnum) throws Exception { - List<UserInfoRegister> listRegister = null; - // 鏌ヨ璁㈠崟浣i噾 - List<CountOrderDTO> listOrder = commonOrderCountService.countCommissionByDay(preDay); - - if (listOrder != null && listOrder.size() > 0) { - List<Long> listUid = new ArrayList<>(); - for (CountOrderDTO countOrderDTO : listOrder) { - listUid.add(countOrderDTO.getUid()); - } - listRegister = userInfoRegisterService.listByMultipleUids(listUid); - } - - ChannelEnum[] channels = ChannelEnum.values(); - for (int i = 0; i < channels.length; i++) { - BigDecimal money = new BigDecimal(0); - String channelVlaue = channels[i].getVlaue(); - - if (listOrder != null && listOrder.size() > 0 && listRegister != null && listRegister.size() > 0) { - for (CountOrderDTO dto : listOrder) { - Long orderUid = dto.getUid(); - BigDecimal commission = dto.getCommission(); - if (commission == null || orderUid == null) { - continue; - } - - for (UserInfoRegister register : listRegister) { - Long uid = register.getId(); - String vlaue = register.getChannel(); - // 娓犻亾 銆佺敤鎴穒d鍖归厤 - if (channelVlaue.equalsIgnoreCase(vlaue) && uid.longValue() == orderUid.longValue()) { - money = MoneyBigDecimalUtil.add(money, commission); - } - } - } - } - - DailyCountOrder obj = new DailyCountOrder(); - obj.setTotal(money); - obj.setType(typeEnum); - obj.setChannel(channels[i].name()); - obj.setUpdateDate(new Date()); - obj.setDay(TimeUtil.parse(preDay)); - obj.setId(StringUtil.Md5(preDay + channels[i].name() + typeEnum.name())); - dailyCountOrderDao.save(obj); - } - } - - /** - * 缁熻缁存潈璁㈠崟鏁伴噺 - * - * @param preDay - * @param typeEnum - * @throws Exception - */ - private void addWeiQuanOrderNum(String preDay, DailyCountOrderEnum typeEnum) throws Exception { - Integer count = userOrderWeiQuanRecordService.countWeiQaunOrderNumberByDate(preDay); - if (count == null) - count = 0; - - DailyCountOrder obj = new DailyCountOrder(); - obj.setTotal(BigDecimal.valueOf(count)); - obj.setType(typeEnum); - obj.setUpdateDate(new Date()); - obj.setDay(TimeUtil.parse(preDay)); - obj.setId(StringUtil.Md5(preDay + typeEnum.name())); - dailyCountOrderDao.save(obj); - } - - /** - * 鏌ヨ缁存潈閲戦 - * - * @param preDay - * @param typeEnum - * @throws Exception - */ - private void addWeiQuanOrderMoney(String preDay, DailyCountOrderEnum typeEnum) throws Exception { - BigDecimal money = userOrderWeiQuanRecordService.countWeiQaunOrderMoneyByDate(preDay); - if (money == null) - money = new BigDecimal(0); - - DailyCountOrder obj = new DailyCountOrder(); - obj.setTotal(money); - obj.setType(typeEnum); - obj.setUpdateDate(new Date()); - obj.setDay(TimeUtil.parse(preDay)); - obj.setId(StringUtil.Md5(preDay + typeEnum.name())); - dailyCountOrderDao.save(obj); - } - - /** - * 娣樺疂璁㈠崟璺熻釜鐜� - * - * @param preDay - * @param typeEnum - * @throws Exception - */ - private void addTBOrderTrackRate(String preDay, DailyCountOrderEnum typeEnum) throws Exception { - // 缁熻璺熻釜鍒版暟鎹� - Long count = commonOrderCountService.countOrderBySourceTypeAndDay(Constant.SOURCE_TYPE_TAOBAO, preDay); - - Long total = taoBaoOrderService.countOrderByDay(preDay); - - // 璁$畻姣斾緥 - BigDecimal rate = new BigDecimal(0); - if (total != null && total > 0 && count != null && count > 0) { - rate = MoneyBigDecimalUtil.div(BigDecimal.valueOf(count), BigDecimal.valueOf(total)); - rate = MoneyBigDecimalUtil.mul(rate, BigDecimal.valueOf(100)); - } - - DailyCountOrder obj = new DailyCountOrder(); - obj.setRate(true); - obj.setTotalDay(BigDecimal.valueOf(total)); - obj.setTotalValid(BigDecimal.valueOf(count)); - obj.setTotal(rate); - obj.setType(typeEnum); - obj.setUpdateDate(new Date()); - obj.setDay(TimeUtil.parse(preDay)); - obj.setId(StringUtil.Md5(preDay + typeEnum.name())); - dailyCountOrderDao.save(obj); - } - - /** - * 浜笢璁㈠崟璺熻釜鐜� - * - * @param preDay - * @param typeEnum - * @throws Exception - */ - private void addJDOrderTrackRate(String preDay, DailyCountOrderEnum typeEnum) throws Exception { - // 缁熻璺熻釜鍒版暟鎹� - Long count = commonOrderCountService.countOrderBySourceTypeAndDay(Constant.SOURCE_TYPE_JD, preDay); - - Long total = jdOrderService.countOrderByDay(preDay); - - // 璁$畻姣斾緥 - BigDecimal rate = new BigDecimal(0); - if (total != null && total > 0 && count != null && count > 0) { - rate = MoneyBigDecimalUtil.div(BigDecimal.valueOf(count), BigDecimal.valueOf(total)); - rate = MoneyBigDecimalUtil.mul(rate, BigDecimal.valueOf(100)); - } - - DailyCountOrder obj = new DailyCountOrder(); - obj.setRate(true); - obj.setTotalDay(BigDecimal.valueOf(total)); - obj.setTotalValid(BigDecimal.valueOf(count)); - obj.setTotal(rate); - obj.setType(typeEnum); - obj.setUpdateDate(new Date()); - obj.setDay(TimeUtil.parse(preDay)); - obj.setId(StringUtil.Md5(preDay + typeEnum.name())); - dailyCountOrderDao.save(obj); - } - - /** - * 鎷煎澶氳鍗曡窡韪巼 - * - * @param preDay - * @param typeEnum - * @throws Exception - */ - private void addPDDOrderTrackRate(String preDay, DailyCountOrderEnum typeEnum) throws Exception { - // 缁熻璺熻釜鍒版暟鎹� - Long count = commonOrderCountService.countOrderBySourceTypeAndDay(Constant.SOURCE_TYPE_PDD, preDay); - - Long total = pddOrderService.countOrderByDay(preDay); - // 璁$畻姣斾緥 - BigDecimal rate = new BigDecimal(0); - if (total != null && total > 0 && count != null && count > 0) { - rate = MoneyBigDecimalUtil.div(BigDecimal.valueOf(count), BigDecimal.valueOf(total)); - rate = MoneyBigDecimalUtil.mul(rate, BigDecimal.valueOf(100)); - } - - DailyCountOrder obj = new DailyCountOrder(); - obj.setRate(true); - obj.setTotalDay(BigDecimal.valueOf(total)); - obj.setTotalValid(BigDecimal.valueOf(count)); - obj.setTotal(rate); - obj.setType(typeEnum); - obj.setUpdateDate(new Date()); - obj.setDay(TimeUtil.parse(preDay)); - obj.setId(StringUtil.Md5(preDay + typeEnum.name())); - dailyCountOrderDao.save(obj); - } - - /** - * 缁熻鐢宠瘔璁㈠崟鏈鐞嗘暟閲� - * - * @param preDay - * @param typeEnum - * @throws Exception - */ - private void addLastOrderUntreatedNum(String preDay, DailyCountOrderEnum typeEnum) throws Exception { - Integer num = lostOrderService.countLostOrderNum(preDay, LostOrder.RESULT_CODE_VERFING); - if (num == null) - num = 0; - - DailyCountOrder obj = new DailyCountOrder(); - obj.setTotal(BigDecimal.valueOf(num)); - obj.setType(typeEnum); - obj.setUpdateDate(new Date()); - obj.setDay(TimeUtil.parse(preDay)); - obj.setId(StringUtil.Md5(preDay + typeEnum.name())); - dailyCountOrderDao.save(obj); - } - - /** - * 缁熻鐢宠瘔璁㈠崟 澶勭悊澶辫触 - * - * @param preDay - * @param typeEnum - * @throws Exception - */ - private void addLastOrderFailNum(String preDay, DailyCountOrderEnum typeEnum) throws Exception { - Integer num = lostOrderService.countLostOrderNum(preDay, LostOrder.RESULT_CODE_FAIL); - if (num == null) - num = 0; - - DailyCountOrder obj = new DailyCountOrder(); - obj.setTotal(BigDecimal.valueOf(num)); - obj.setType(typeEnum); - obj.setUpdateDate(new Date()); - obj.setDay(TimeUtil.parse(preDay)); - obj.setId(StringUtil.Md5(preDay + typeEnum.name())); - dailyCountOrderDao.save(obj); - } - - /** - * 缁熻鐢宠瘔璁㈠崟 澶勭悊鎴愬姛 - * - * @param preDay - * @param typeEnum - * @throws Exception - */ - private void addLastOrderSucceedNum(String preDay, DailyCountOrderEnum typeEnum) throws Exception { - Integer num = lostOrderService.countLostOrderNum(preDay, LostOrder.RESULT_CODE_SUCCESS); - if (num == null) - num = 0; - - DailyCountOrder obj = new DailyCountOrder(); - obj.setTotal(BigDecimal.valueOf(num)); - obj.setType(typeEnum); - obj.setUpdateDate(new Date()); - obj.setDay(TimeUtil.parse(preDay)); - obj.setId(StringUtil.Md5(preDay + typeEnum.name())); - dailyCountOrderDao.save(obj); - } - - /** - * 璁㈠崟鎵惧洖鎴愬姛缁熻閲戦 - * - * @param preDay - * @throws Exception - */ - private void addLastOrderSucceedMoney(String preDay, DailyCountOrderEnum typeEnum) throws Exception { - BigDecimal money = lostOrderService.countAppealMoney(preDay); - if (money == null) - money = new BigDecimal("0"); - - DailyCountOrder obj = new DailyCountOrder(); - obj.setTotal(money); - obj.setType(typeEnum); - obj.setUpdateDate(new Date()); - obj.setDay(TimeUtil.parse(preDay)); - obj.setId(StringUtil.Md5(preDay + typeEnum.name())); - dailyCountOrderDao.save(obj); - } -} +package com.yeshi.fanli.service.impl.count; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; +import org.yeshi.utils.DateUtil; + +import com.yeshi.fanli.dao.user.count.DailyCountOrderDao; +import com.yeshi.fanli.dto.order.CountOrderDTO; +import com.yeshi.fanli.entity.admin.count.DailyCountOrder; +import com.yeshi.fanli.entity.admin.count.DailyCountOrder.DailyCountOrderEnum; +import com.yeshi.fanli.entity.bus.user.LostOrder; +import com.yeshi.fanli.entity.bus.user.UserInfoRegister; +import com.yeshi.fanli.entity.system.ChannelEnum; +import com.yeshi.fanli.service.inter.count.DailyCountOrderService; +import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; +import com.yeshi.fanli.service.inter.order.CommonOrderCountService; +import com.yeshi.fanli.service.inter.order.LostOrderService; +import com.yeshi.fanli.service.inter.order.UserOrderWeiQuanRecordService; +import com.yeshi.fanli.service.inter.order.jd.JDOrderService; +import com.yeshi.fanli.service.inter.order.pdd.PDDOrderService; +import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService; +import com.yeshi.fanli.service.inter.user.UserInfoRegisterService; +import com.yeshi.fanli.util.Constant; +import org.yeshi.utils.MoneyBigDecimalUtil; +import com.yeshi.fanli.util.StringUtil; +import org.yeshi.utils.TimeUtil; + +@Service +public class DailyCountOrderServiceImpl implements DailyCountOrderService { + + @Resource + private DailyCountOrderDao dailyCountOrderDao; + + @Resource + private HongBaoV2CountService hongBaoV2CountService; + + @Resource + private CommonOrderCountService commonOrderCountService; + + @Resource + private UserInfoRegisterService userInfoRegisterService; + + @Resource + private UserOrderWeiQuanRecordService userOrderWeiQuanRecordService; + + @Resource + private TaoBaoOrderService taoBaoOrderService; + + @Resource + private JDOrderService jdOrderService; + + @Resource + private PDDOrderService pddOrderService; + + @Resource + private LostOrderService lostOrderService; + + @Override + public List<DailyCountOrder> getDailyCountList(String type, Date startTime, Date endTime, String channel) + throws Exception { + // 鏌ヨ绫诲瀷 + DailyCountOrderEnum typeEnum = getTypeEnum(type); + if (typeEnum == null) { + return null; + } + + // 鍒濆鍖栨暟鎹� + initData(typeEnum); + + return dailyCountOrderDao.query(typeEnum, startTime, endTime, channel); + } + + /** + * 鑾峰彇鏋氫妇绫诲瀷 + * + * @param type + * @return + */ + private DailyCountOrderEnum getTypeEnum(String name) { + if (StringUtil.isNullOrEmpty(name)) { + return null; + } + + DailyCountOrderEnum[] array = DailyCountOrderEnum.values(); + for (int i = 0; i < array.length; i++) { + if (array[i].name().equals(name)) { + return array[i]; + } + } + return null; + } + + /** + * 鑾峰彇鏋氫妇绫诲瀷 + * + * @param type + * @return + */ + @Override + public String getTypeEnumDesc(String name) { + if (StringUtil.isNullOrEmpty(name)) { + return ""; + } + + DailyCountOrderEnum[] array = DailyCountOrderEnum.values(); + for (int i = 0; i < array.length; i++) { + if (array[i].name().equals(name)) { + return array[i].getDesc(); + } + } + + return ""; + } + + /** + * 鍒濆鏁版嵁 + * + * @param typeEnum + * @throws Exception + */ + @Override + public void initData(DailyCountOrderEnum typeEnum) throws Exception { + Date lastDate = null; + DailyCountOrder lastRecord = dailyCountOrderDao.getMaxDate(typeEnum); + if (lastRecord != null) { + lastDate = lastRecord.getUpdateDate(); + } else { + lastDate = TimeUtil.parse("2018-01-20"); + } + + long min = DateUtil.dateDiffMin(lastDate, new Date()); + if (min <= 10) { // 10鍒嗛挓浠ュ唴涓嶇粺璁� + return; + } + + Date today = new Date(); + int betweenDays = DateUtil.daysBetween2(lastDate, today); + for (int i = 0; i <= betweenDays; i++) { + // 璁$畻鏃ユ湡 + String preDay = DateUtil.plusDay(i, lastDate); + // 缁熻鏁版嵁 + if (DailyCountOrderEnum.fanliOrderNum == typeEnum) { + addOrderNumCount(preDay, typeEnum, 1); + } else if (DailyCountOrderEnum.shareOrderNum == typeEnum) { + addOrderNumCount(preDay, typeEnum, 2); + } else if (DailyCountOrderEnum.inviteOrderNum == typeEnum) { + addOrderNumCount(preDay, typeEnum, 3); + } else if (DailyCountOrderEnum.channelOrderNum24H == typeEnum) { + addChannelOrderNum24H(preDay, typeEnum); + } else if (DailyCountOrderEnum.channelOrderNum == typeEnum) { + addChannelOrderNum(preDay, typeEnum); + } else if (DailyCountOrderEnum.channelOrderMoney == typeEnum) { + addChannelOrderMoney(preDay, typeEnum); + } else if (DailyCountOrderEnum.weiQuanOrderNum == typeEnum) { + addWeiQuanOrderNum(preDay, typeEnum); + } else if (DailyCountOrderEnum.weiQuanOrderMoney == typeEnum) { + addWeiQuanOrderMoney(preDay, typeEnum); + } else if (DailyCountOrderEnum.tbOrderTrackRate == typeEnum) { + addTBOrderTrackRate(preDay, typeEnum); + } else if (DailyCountOrderEnum.jdOrderTrackRate == typeEnum) { + addJDOrderTrackRate(preDay, typeEnum); + } else if (DailyCountOrderEnum.pddOrderTrackRate == typeEnum) { + addPDDOrderTrackRate(preDay, typeEnum); + } else if (DailyCountOrderEnum.lastOrderUntreatedNum == typeEnum) { + addLastOrderUntreatedNum(preDay, typeEnum); + } else if (DailyCountOrderEnum.lastOrderSucceedNum == typeEnum) { + addLastOrderSucceedNum(preDay, typeEnum); + } else if (DailyCountOrderEnum.lastOrderFailNum == typeEnum) { + addLastOrderFailNum(preDay, typeEnum); + } else if (DailyCountOrderEnum.lastOrderSucceedMoney == typeEnum) { + addLastOrderSucceedMoney(preDay, typeEnum); + } + } + } + + /** + * 缁熻璁㈠崟鏁伴噺 + * + * @param preDay + * @param typeEnum + * @param orderType + * @throws Exception + */ + private void addOrderNumCount(String preDay, DailyCountOrderEnum typeEnum, int orderType) throws Exception { + Long count = hongBaoV2CountService.countOrderByTypeAndDate(orderType, preDay); + if (count == null) + count = 0L; + + DailyCountOrder obj = new DailyCountOrder(); + obj.setTotal(BigDecimal.valueOf(count)); + obj.setType(typeEnum); + obj.setUpdateDate(new Date()); + obj.setDay(TimeUtil.parse(preDay)); + obj.setId(StringUtil.Md5(preDay + typeEnum.name())); + dailyCountOrderDao.save(obj); + } + + /** + * 缁熻鍚勪釜娓犻亾璁㈠崟鏁版嵁 + * + * @param preDay + * @param typeEnum + * @throws Exception + */ + private void addChannelOrderNum(String preDay, DailyCountOrderEnum typeEnum) throws Exception { + List<UserInfoRegister> listRegister = null; + // 缁熻褰撴棩璁㈠崟 + List<CountOrderDTO> listOrder = commonOrderCountService.countValidOrderByDay(preDay); + + if (listOrder != null && listOrder.size() > 0) { + List<Long> listUid = new ArrayList<>(); + for (CountOrderDTO countOrderDTO : listOrder) { + listUid.add(countOrderDTO.getUid()); + } + listRegister = userInfoRegisterService.listByMultipleUids(listUid); + } + + // 缁熻鍚勪釜娓犻亾 + ChannelEnum[] channels = ChannelEnum.values(); + for (int i = 0; i < channels.length; i++) { + long count = 0; + String channelVlaue = channels[i].getVlaue(); + if (listOrder != null && listOrder.size() > 0 && listRegister != null && listRegister.size() > 0) { + for (CountOrderDTO dto : listOrder) { + Long orderUid = dto.getUid(); + if (orderUid == null) { + continue; + } + + for (UserInfoRegister register : listRegister) { + Long uid = register.getId(); + String vlaue = register.getChannel(); + // 娓犻亾 銆佺敤鎴穒d鍖归厤 + if (channelVlaue.equalsIgnoreCase(vlaue) && uid.longValue() == orderUid.longValue()) { + count++; + break; + } + } + } + } + + DailyCountOrder obj = new DailyCountOrder(); + obj.setTotal(BigDecimal.valueOf(count)); + obj.setType(typeEnum); + obj.setChannel(channels[i].name()); + obj.setUpdateDate(new Date()); + obj.setDay(TimeUtil.parse(preDay)); + obj.setId(StringUtil.Md5(preDay + channels[i].name() + typeEnum.name())); + dailyCountOrderDao.save(obj); + } + } + + /** + * 缁熻鏂颁汉24H鍐呬笅鍗曟暟閲� + * + * @param preDay + * @param typeEnum + * @throws Exception + */ + private void addChannelOrderNum24H(String preDay, DailyCountOrderEnum typeEnum) throws Exception { + ChannelEnum[] channels = ChannelEnum.values(); + for (int i = 0; i < channels.length; i++) { + int count = 0; + + List<UserInfoRegister> list = userInfoRegisterService.listByChannelAndDay(channels[i].getVlaue(), preDay); + if (list != null && list.size() > 0) { + for (UserInfoRegister user : list) { + Date limitDay = DateUtil.plusDayDate(1, user.getCreateTime()); + Integer total = commonOrderCountService.countOderByUidAndDate(limitDay, user.getId()); + if (total != null) + count += total; + } + } + + DailyCountOrder obj = new DailyCountOrder(); + obj.setTotal(BigDecimal.valueOf(count)); + obj.setType(typeEnum); + obj.setChannel(channels[i].name()); + obj.setUpdateDate(new Date()); + obj.setDay(TimeUtil.parse(preDay)); + obj.setId(StringUtil.Md5(preDay + channels[i].name() + typeEnum.name())); + dailyCountOrderDao.save(obj); + } + } + + /** + * 缁熻娓犻亾閲戦 + * + * @param preDay + * @param typeEnum + * @throws Exception + */ + public void addChannelOrderMoney(String preDay, DailyCountOrderEnum typeEnum) throws Exception { + List<UserInfoRegister> listRegister = null; + // 鏌ヨ璁㈠崟浣i噾 + List<CountOrderDTO> listOrder = commonOrderCountService.countCommissionByDay(preDay); + + if (listOrder != null && listOrder.size() > 0) { + List<Long> listUid = new ArrayList<>(); + for (CountOrderDTO countOrderDTO : listOrder) { + listUid.add(countOrderDTO.getUid()); + } + listRegister = userInfoRegisterService.listByMultipleUids(listUid); + } + + ChannelEnum[] channels = ChannelEnum.values(); + for (int i = 0; i < channels.length; i++) { + BigDecimal money = new BigDecimal(0); + String channelVlaue = channels[i].getVlaue(); + + if (listOrder != null && listOrder.size() > 0 && listRegister != null && listRegister.size() > 0) { + for (CountOrderDTO dto : listOrder) { + Long orderUid = dto.getUid(); + BigDecimal commission = dto.getCommission(); + if (commission == null || orderUid == null) { + continue; + } + + for (UserInfoRegister register : listRegister) { + Long uid = register.getId(); + String vlaue = register.getChannel(); + // 娓犻亾 銆佺敤鎴穒d鍖归厤 + if (channelVlaue.equalsIgnoreCase(vlaue) && uid.longValue() == orderUid.longValue()) { + money = MoneyBigDecimalUtil.add(money, commission); + } + } + } + } + + DailyCountOrder obj = new DailyCountOrder(); + obj.setTotal(money); + obj.setType(typeEnum); + obj.setChannel(channels[i].name()); + obj.setUpdateDate(new Date()); + obj.setDay(TimeUtil.parse(preDay)); + obj.setId(StringUtil.Md5(preDay + channels[i].name() + typeEnum.name())); + dailyCountOrderDao.save(obj); + } + } + + /** + * 缁熻缁存潈璁㈠崟鏁伴噺 + * + * @param preDay + * @param typeEnum + * @throws Exception + */ + private void addWeiQuanOrderNum(String preDay, DailyCountOrderEnum typeEnum) throws Exception { + Integer count = userOrderWeiQuanRecordService.countWeiQaunOrderNumberByDate(preDay); + if (count == null) + count = 0; + + DailyCountOrder obj = new DailyCountOrder(); + obj.setTotal(BigDecimal.valueOf(count)); + obj.setType(typeEnum); + obj.setUpdateDate(new Date()); + obj.setDay(TimeUtil.parse(preDay)); + obj.setId(StringUtil.Md5(preDay + typeEnum.name())); + dailyCountOrderDao.save(obj); + } + + /** + * 鏌ヨ缁存潈閲戦 + * + * @param preDay + * @param typeEnum + * @throws Exception + */ + private void addWeiQuanOrderMoney(String preDay, DailyCountOrderEnum typeEnum) throws Exception { + BigDecimal money = userOrderWeiQuanRecordService.countWeiQaunOrderMoneyByDate(preDay); + if (money == null) + money = new BigDecimal(0); + + DailyCountOrder obj = new DailyCountOrder(); + obj.setTotal(money); + obj.setType(typeEnum); + obj.setUpdateDate(new Date()); + obj.setDay(TimeUtil.parse(preDay)); + obj.setId(StringUtil.Md5(preDay + typeEnum.name())); + dailyCountOrderDao.save(obj); + } + + /** + * 娣樺疂璁㈠崟璺熻釜鐜� + * + * @param preDay + * @param typeEnum + * @throws Exception + */ + private void addTBOrderTrackRate(String preDay, DailyCountOrderEnum typeEnum) throws Exception { + // 缁熻璺熻釜鍒版暟鎹� + Long count = commonOrderCountService.countOrderBySourceTypeAndDay(Constant.SOURCE_TYPE_TAOBAO, preDay); + + Long total = taoBaoOrderService.countOrderByDay(preDay); + + // 璁$畻姣斾緥 + BigDecimal rate = new BigDecimal(0); + if (total != null && total > 0 && count != null && count > 0) { + rate = MoneyBigDecimalUtil.div(BigDecimal.valueOf(count), BigDecimal.valueOf(total)); + rate = MoneyBigDecimalUtil.mul(rate, BigDecimal.valueOf(100)); + } + + DailyCountOrder obj = new DailyCountOrder(); + obj.setRate(true); + obj.setTotalDay(BigDecimal.valueOf(total)); + obj.setTotalValid(BigDecimal.valueOf(count)); + obj.setTotal(rate); + obj.setType(typeEnum); + obj.setUpdateDate(new Date()); + obj.setDay(TimeUtil.parse(preDay)); + obj.setId(StringUtil.Md5(preDay + typeEnum.name())); + dailyCountOrderDao.save(obj); + } + + /** + * 浜笢璁㈠崟璺熻釜鐜� + * + * @param preDay + * @param typeEnum + * @throws Exception + */ + private void addJDOrderTrackRate(String preDay, DailyCountOrderEnum typeEnum) throws Exception { + // 缁熻璺熻釜鍒版暟鎹� + Long count = commonOrderCountService.countOrderBySourceTypeAndDay(Constant.SOURCE_TYPE_JD, preDay); + + Long total = jdOrderService.countOrderByDay(preDay); + + // 璁$畻姣斾緥 + BigDecimal rate = new BigDecimal(0); + if (total != null && total > 0 && count != null && count > 0) { + rate = MoneyBigDecimalUtil.div(BigDecimal.valueOf(count), BigDecimal.valueOf(total)); + rate = MoneyBigDecimalUtil.mul(rate, BigDecimal.valueOf(100)); + } + + DailyCountOrder obj = new DailyCountOrder(); + obj.setRate(true); + obj.setTotalDay(BigDecimal.valueOf(total)); + obj.setTotalValid(BigDecimal.valueOf(count)); + obj.setTotal(rate); + obj.setType(typeEnum); + obj.setUpdateDate(new Date()); + obj.setDay(TimeUtil.parse(preDay)); + obj.setId(StringUtil.Md5(preDay + typeEnum.name())); + dailyCountOrderDao.save(obj); + } + + /** + * 鎷煎澶氳鍗曡窡韪巼 + * + * @param preDay + * @param typeEnum + * @throws Exception + */ + private void addPDDOrderTrackRate(String preDay, DailyCountOrderEnum typeEnum) throws Exception { + // 缁熻璺熻釜鍒版暟鎹� + Long count = commonOrderCountService.countOrderBySourceTypeAndDay(Constant.SOURCE_TYPE_PDD, preDay); + + Long total = pddOrderService.countOrderByDay(preDay); + // 璁$畻姣斾緥 + BigDecimal rate = new BigDecimal(0); + if (total != null && total > 0 && count != null && count > 0) { + rate = MoneyBigDecimalUtil.div(BigDecimal.valueOf(count), BigDecimal.valueOf(total)); + rate = MoneyBigDecimalUtil.mul(rate, BigDecimal.valueOf(100)); + } + + DailyCountOrder obj = new DailyCountOrder(); + obj.setRate(true); + obj.setTotalDay(BigDecimal.valueOf(total)); + obj.setTotalValid(BigDecimal.valueOf(count)); + obj.setTotal(rate); + obj.setType(typeEnum); + obj.setUpdateDate(new Date()); + obj.setDay(TimeUtil.parse(preDay)); + obj.setId(StringUtil.Md5(preDay + typeEnum.name())); + dailyCountOrderDao.save(obj); + } + + /** + * 缁熻鐢宠瘔璁㈠崟鏈鐞嗘暟閲� + * + * @param preDay + * @param typeEnum + * @throws Exception + */ + private void addLastOrderUntreatedNum(String preDay, DailyCountOrderEnum typeEnum) throws Exception { + Integer num = lostOrderService.countLostOrderNum(preDay, LostOrder.RESULT_CODE_VERFING); + if (num == null) + num = 0; + + DailyCountOrder obj = new DailyCountOrder(); + obj.setTotal(BigDecimal.valueOf(num)); + obj.setType(typeEnum); + obj.setUpdateDate(new Date()); + obj.setDay(TimeUtil.parse(preDay)); + obj.setId(StringUtil.Md5(preDay + typeEnum.name())); + dailyCountOrderDao.save(obj); + } + + /** + * 缁熻鐢宠瘔璁㈠崟 澶勭悊澶辫触 + * + * @param preDay + * @param typeEnum + * @throws Exception + */ + private void addLastOrderFailNum(String preDay, DailyCountOrderEnum typeEnum) throws Exception { + Integer num = lostOrderService.countLostOrderNum(preDay, LostOrder.RESULT_CODE_FAIL); + if (num == null) + num = 0; + + DailyCountOrder obj = new DailyCountOrder(); + obj.setTotal(BigDecimal.valueOf(num)); + obj.setType(typeEnum); + obj.setUpdateDate(new Date()); + obj.setDay(TimeUtil.parse(preDay)); + obj.setId(StringUtil.Md5(preDay + typeEnum.name())); + dailyCountOrderDao.save(obj); + } + + /** + * 缁熻鐢宠瘔璁㈠崟 澶勭悊鎴愬姛 + * + * @param preDay + * @param typeEnum + * @throws Exception + */ + private void addLastOrderSucceedNum(String preDay, DailyCountOrderEnum typeEnum) throws Exception { + Integer num = lostOrderService.countLostOrderNum(preDay, LostOrder.RESULT_CODE_SUCCESS); + if (num == null) + num = 0; + + DailyCountOrder obj = new DailyCountOrder(); + obj.setTotal(BigDecimal.valueOf(num)); + obj.setType(typeEnum); + obj.setUpdateDate(new Date()); + obj.setDay(TimeUtil.parse(preDay)); + obj.setId(StringUtil.Md5(preDay + typeEnum.name())); + dailyCountOrderDao.save(obj); + } + + /** + * 璁㈠崟鎵惧洖鎴愬姛缁熻閲戦 + * + * @param preDay + * @throws Exception + */ + private void addLastOrderSucceedMoney(String preDay, DailyCountOrderEnum typeEnum) throws Exception { + BigDecimal money = lostOrderService.countAppealMoney(preDay); + if (money == null) + money = new BigDecimal("0"); + + DailyCountOrder obj = new DailyCountOrder(); + obj.setTotal(money); + obj.setType(typeEnum); + obj.setUpdateDate(new Date()); + obj.setDay(TimeUtil.parse(preDay)); + obj.setId(StringUtil.Md5(preDay + typeEnum.name())); + dailyCountOrderDao.save(obj); + } +} -- Gitblit v1.8.0