From 9bf738b59e3c007693f9b9bdaa320653a24ac8a5 Mon Sep 17 00:00:00 2001 From: winter Date: Fri, 14 Jan 2022 19:56:50 +0800 Subject: [PATCH] fix bug --- .../controller/mem/WxCUserDataController.java | 195 +++++++++--------- .../mapper/WxCouponMerchantMapper.java | 2 +- .../iformall/mapper/WxCouponOrderMapper.java | 2 +- .../impl/WxCouponChannelServiceImpl.java | 2 +- .../impl/WxCouponOrderServiceImpl.java | 25 ++- .../mapper/WxCouponMerchantMapper.xml | 6 +- .../resources/mapper/WxCouponOrderMapper.xml | 88 ++------ 7 files changed, 143 insertions(+), 177 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserDataController.java b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserDataController.java index d11b247d2..155dc3543 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserDataController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserDataController.java @@ -264,104 +264,103 @@ public class WxCUserDataController extends BaseController { return new ResultData(mapVo); } - //TODO 待优化数据 -// @ApiOperation("查询用户消费金额") -// @GetMapping("findUserAmountData") -// @SystemControllerLog(description = "会员首页-报表数据-查询用户消费金额") -// public ResultData findUserAmountData(Integer plat) { -// logger.debug("[" + getIpAddr() + "] WxCUserDataController::findUserAmountData"); -// if(plat == null){ -// plat = EnumAppPlat.WX.getCode(); -// } -// TenantEntity tenantEntity = getTenantInfo(); -// Calendar c = Calendar.getInstance(); -// Date today = c.getTime(); -// c.add(Calendar.DAY_OF_YEAR, 1); -// c.set(Calendar.HOUR_OF_DAY, 0); -// c.set(Calendar.MINUTE, 0); -// c.set(Calendar.SECOND, 0); -// Date endTime = c.getTime();//明天0点 -// c.add(Calendar.DAY_OF_YEAR, -30);//三十天前 -// Date startTime = c.getTime(); -// List tenantEntitys = wxMallService.getTenantEntitys(tenantEntity); -// WxCouponOrder wxCouponOrder = new WxCouponOrder(); -// wxCouponOrder.updateTenantInfo(tenantEntity); -// wxCouponOrder.setStartTime(startTime); -// wxCouponOrder.setEndTime(endTime); -// int thisMonthCount = wxCouponOrderService.queryPriceTotal(wxCouponOrder,tenantEntitys);//月消费金额 -// c.clear(); -// c.setTime(endTime); -// Date eTime = c.getTime(); -// c.add(Calendar.DAY_OF_YEAR, -30); -// Date sTime = c.getTime(); -// List datas = wxCouponOrderService.queryPriceTotalGroup(tenantEntity, sTime, eTime); -// Map dataMap = new HashMap<>(); -// for (CUserDateAmountVo v : datas) { -// dataMap.put(v.getXTime(), v.getPrice()); -// } -// Integer todayCount = 0;//今日金额数 -// Integer yesterdayCount = 0;//昨日金额数 -// Integer dayOfWeekCount = 0;//上周x -// List weekVos = new ArrayList<>();//周消费金额 -// List monthVos = new ArrayList<>();//周消费金额 -// for (int i = 29, sortNum = 0; i >= 0; i--) { -// c.clear(); -// c.setTime(today); -// c.add(Calendar.DAY_OF_YEAR, -i); -// String dateStr = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()); -// UserStructureVo vo = new UserStructureVo(); -// vo.setName(new SimpleDateFormat("MM/dd").format(c.getTime())); -// vo.setSortNum(sortNum++); -// if (dataMap.get(dateStr) != null) { -// int price = dataMap.get(dateStr); -// vo.setPrice(price); -// } else { -// vo.setPrice(0); -// } -// if (i <= 7) { -// UserStructureVo vow = new UserStructureVo(); -// vow.setName(vo.getName()); -// vow.setSortNum(vo.getSortNum()); -// vow.setPrice(vo.getPrice()); -// -// if (i == 0) { -// todayCount = vow.getPrice(); -// } -// if (i == 1) { -// yesterdayCount = vow.getPrice(); -// } -// if (i == 7) { -// dayOfWeekCount = vow.getPrice(); -// } else { -// weekVos.add(vow); -// } -// } -// monthVos.add(vo); -// } -// -// NumberFormat nf = NumberFormat.getPercentInstance(); -// nf.setMinimumFractionDigits(2); -// String dayPercentage = "--"; -// if (yesterdayCount > 0) { -// Integer count = todayCount - yesterdayCount; -// dayPercentage = nf.format(count.doubleValue() / new Double(yesterdayCount).doubleValue()); -// } -// String weekPercentage = "--"; -// if (dayOfWeekCount > 0) { -// Integer count = todayCount - dayOfWeekCount; -// weekPercentage = nf.format(count.doubleValue() / new Double(dayOfWeekCount).doubleValue()); -// } -// Map map = new HashMap<>(); -// DecimalFormat df = new DecimalFormat("0.00"); -// map.put("todayCount", df.format((float) todayCount / 100));//今日消费金额 -// String thisMonthCountStr = df.format((float) thisMonthCount / 100); -// map.put("thisMonthCount", thisMonthCountStr);//近一个月消费金额数 -// map.put("dayPercentage", dayPercentage);//日环比 -// map.put("weekPercentage", weekPercentage); //周同比 -// map.put("weekVos", weekVos);//一周金额列表 -// map.put("monthVos", monthVos);//一月金额列表 -// return new ResultData(map); -// } + @ApiOperation("查询用户消费金额") + @GetMapping("findUserAmountData") + @SystemControllerLog(description = "会员首页-报表数据-查询用户消费金额") + public ResultData findUserAmountData(Integer plat) { + logger.debug("[" + getIpAddr() + "] WxCUserDataController::findUserAmountData"); + if(plat == null){ + plat = EnumAppPlat.WX.getCode(); + } + TenantEntity tenantEntity = getTenantInfo(); + Calendar c = Calendar.getInstance(); + Date today = c.getTime(); + c.add(Calendar.DAY_OF_YEAR, 1); + c.set(Calendar.HOUR_OF_DAY, 0); + c.set(Calendar.MINUTE, 0); + c.set(Calendar.SECOND, 0); + Date endTime = c.getTime();//明天0点 + c.add(Calendar.DAY_OF_YEAR, -30);//三十天前 + Date startTime = c.getTime(); + List tenantEntitys = wxMallService.getTenantEntitys(tenantEntity); + WxCouponOrder wxCouponOrder = new WxCouponOrder(); + wxCouponOrder.updateTenantInfo(tenantEntity); + wxCouponOrder.setStartTime(startTime); + wxCouponOrder.setEndTime(endTime); + int thisMonthCount = wxCouponOrderService.queryPriceTotal(wxCouponOrder,tenantEntitys);//月消费金额 + c.clear(); + c.setTime(endTime); + Date eTime = c.getTime(); + c.add(Calendar.DAY_OF_YEAR, -30); + Date sTime = c.getTime(); + List datas = wxCouponOrderService.queryPriceTotalGroup(tenantEntity, sTime, eTime); + Map dataMap = new HashMap<>(); + for (CUserDateAmountVo v : datas) { + dataMap.put(v.getXTime(), v.getPrice()); + } + Integer todayCount = 0;//今日金额数 + Integer yesterdayCount = 0;//昨日金额数 + Integer dayOfWeekCount = 0;//上周x + List weekVos = new ArrayList<>();//周消费金额 + List monthVos = new ArrayList<>();//周消费金额 + for (int i = 29, sortNum = 0; i >= 0; i--) { + c.clear(); + c.setTime(today); + c.add(Calendar.DAY_OF_YEAR, -i); + String dateStr = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()); + UserStructureVo vo = new UserStructureVo(); + vo.setName(new SimpleDateFormat("MM/dd").format(c.getTime())); + vo.setSortNum(sortNum++); + if (dataMap.get(dateStr) != null) { + int price = dataMap.get(dateStr); + vo.setPrice(price); + } else { + vo.setPrice(0); + } + if (i <= 7) { + UserStructureVo vow = new UserStructureVo(); + vow.setName(vo.getName()); + vow.setSortNum(vo.getSortNum()); + vow.setPrice(vo.getPrice()); + + if (i == 0) { + todayCount = vow.getPrice(); + } + if (i == 1) { + yesterdayCount = vow.getPrice(); + } + if (i == 7) { + dayOfWeekCount = vow.getPrice(); + } else { + weekVos.add(vow); + } + } + monthVos.add(vo); + } + + NumberFormat nf = NumberFormat.getPercentInstance(); + nf.setMinimumFractionDigits(2); + String dayPercentage = "--"; + if (yesterdayCount > 0) { + Integer count = todayCount - yesterdayCount; + dayPercentage = nf.format(count.doubleValue() / new Double(yesterdayCount).doubleValue()); + } + String weekPercentage = "--"; + if (dayOfWeekCount > 0) { + Integer count = todayCount - dayOfWeekCount; + weekPercentage = nf.format(count.doubleValue() / new Double(dayOfWeekCount).doubleValue()); + } + Map map = new HashMap<>(); + DecimalFormat df = new DecimalFormat("0.00"); + map.put("todayCount", df.format((float) todayCount / 100));//今日消费金额 + String thisMonthCountStr = df.format((float) thisMonthCount / 100); + map.put("thisMonthCount", thisMonthCountStr);//近一个月消费金额数 + map.put("dayPercentage", dayPercentage);//日环比 + map.put("weekPercentage", weekPercentage); //周同比 + map.put("weekVos", weekVos);//一周金额列表 + map.put("monthVos", monthVos);//一月金额列表 + return new ResultData(map); + } } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMerchantMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMerchantMapper.java index edd86cf30..d429c64e5 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMerchantMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMerchantMapper.java @@ -18,7 +18,7 @@ public interface WxCouponMerchantMapper extends CommonMapper findMerchantNameList(@Param("productId")Long productId,@Param("tenantId")String tenantId); List findMerchantBaseList(@Param("productId")Long productId,@Param("tenantId")String tenantId); List findMerchantProduct(@Param("tenantId")String tenantId,@Param("merchantIdList")List merchantIdList); - List findMerchantProductIds(@Param("tenantId")String tenantId,@Param("merchantIdList")List merchantIdList); + List findMerchantProductIds(@Param("tenantId")String tenantId,@Param("merchantIdList")List merchantIdList,@Param("status")Integer status); List findOneMerchantProductIds(@Param("tenantId")String tenantId,@Param("merchantId")Long merchantIdList); List findMerchantByProductIds(@Param("tenantId")String tenantId,@Param("productIds")List productIds); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java index 3deb0935d..c28f8642a 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java @@ -100,6 +100,6 @@ public interface WxCouponOrderMapper extends CommonMapper { Integer findWriteOffCount(WxCouponOrder wxCouponOrder); - List findGoodsList(WxCouponOrderBVo record); + List findGoodsList(WxCouponOrderBVo record); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java index 69488890a..c41218955 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java @@ -324,7 +324,7 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { } cids.retainAll(mcids); }else if(wxCouponChannel.getMerchantIds() != null && !wxCouponChannel.getMerchantIds().isEmpty()){ - List mcids = wxCouponMerchantMapper.findMerchantProductIds(wxCouponChannel.getTenantId(), wxCouponChannel.getMerchantIds()); + List mcids = wxCouponMerchantMapper.findMerchantProductIds(wxCouponChannel.getTenantId(), wxCouponChannel.getMerchantIds(),0); if(mcids == null || mcids.isEmpty()){ wxCouponChannel.setId(-999L); return; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java index 5fb60ad97..c23206436 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -838,7 +838,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { List merchantProductIds = null; if (null != merchantIdListQueryParam) { //查询商户券 - merchantProductIds = wxCouponMerchantMapper.findMerchantProductIds(wxCouponOrder.getTenantId(), merchantIdListQueryParam); + merchantProductIds = wxCouponMerchantMapper.findMerchantProductIds(wxCouponOrder.getTenantId(), merchantIdListQueryParam,0); if (null == merchantProductIds || merchantProductIds.size() <= 0) { //throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(),"商户下查询不到券信息。"); wxCouponOrder.setId(-999L); @@ -2386,7 +2386,28 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Override public PageInfo goodsListAsPage(WxCouponOrderBVo record, Integer pageIndex, Integer pageSize) { - return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findGoodsList(record)); + PageInfo retPageInfo = new PageInfo(); + List merchantIds = new ArrayList(); + merchantIds.add(record.getMerchantId()); + List couponIds = wxCouponMerchantMapper.findMerchantProductIds(record.getTenantId(),merchantIds,null); + if (null == couponIds) { + retPageInfo.setPageNum(pageIndex); + retPageInfo.setPageSize(pageSize); + retPageInfo.setPages(0); + return retPageInfo; + } + //查询商户下的券 + record.setCouponIds(couponIds); + PageInfo pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findGoodsList(record)); + retPageInfo.setPageNum(pageIndex); + retPageInfo.setPageSize(pageSize); + retPageInfo.setPages(pageInfo.getPages()); + if (null != pageInfo && null != pageInfo.getList()){ + List volist = handleQueryResult(pageInfo.getList(), record); + retPageInfo.setList(volist); + } + return retPageInfo; + } @Override diff --git a/mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml index 61fcb41b7..2940bd67f 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMerchantMapper.xml @@ -161,9 +161,9 @@ SELECT DATE_FORMAT(create_date,'%Y-%m-%d') as xTime,IFNULL(SUM(coupon_price),0) as price - from ( - SELECT * from wx_coupon_order${tenantEntity.shardTableSuffix} - ) wx_coupon_order - where 1=1 - - and `tenant_id` = #{tenantId} - + from wx_coupon_order + where create_date_times >= unix_timestamp(#{startTime}) and create_date_times < unix_timestamp(#{endTime}) + and `tenant_id` = #{tenantId} and `parent_tenant_id` = #{parentTenantId} - AND create_date >= #{startTime} and create_date < #{endTime} GROUP BY xTime + GROUP BY xTime @@ -693,56 +689,6 @@ and shipping_type = 2 and shipping_status = 24 and coupon_order_status = 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - select co.id,co.tenant_id,co.parent_tenant_id,co.coupon_id,co.coupon_type,co.c_user_id,co.owner_id,co.b_user_id, co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price,co.verify_type,co.verify_remark, co.pay_vendor, co.`freight_price`,co.`shipping_type`,co.`shipping_address`,co.`shipping_status`,co.`delivery_info`, - c.type,c.title,c.sale_price,c.use_price,c.price,c.unit,c.auto_refund,c.business,c.subsidy_type, - cu.phone,cu.nick_name FROM wx_coupon_order co - left join wx_coupon_merchant wcm on co.coupon_id = wcm.product_id and wcm.merchant_id = #{merchantId} - LEFT JOIN wx_c_user_basic_info cu ON cu.id=co.c_user_id - LEFT JOIN wx_coupon c ON c.id = co.coupon_id - where wcm.merchant_id = #{merchantId} + where co.`tenant_id` = #{tenantId} and co.coupon_type = #{couponType} @@ -862,9 +803,6 @@ and co.coupon_type < 100 - - and co.`tenant_id` = #{tenantId} - and co.`parent_tenant_id` = #{parentTenantId} @@ -883,11 +821,11 @@ - AND co.create_date > #{startDate,jdbcType=TIMESTAMP} + AND co.create_date_times > unix_timestamp(#{startDate}) - AND co.create_date < #{endDate,jdbcType=TIMESTAMP} + AND co.create_date_times < unix_timestamp(#{endDate}) @@ -919,8 +857,16 @@ and c.`source_type` = #{sourceType} + + + and co.coupon_id in + + #{couponIdItem} + + + order by ${sortColumns} - order by co.create_date desc,co.id desc + order co.id desc