ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtBaseShopDto.java
@@ -3,6 +3,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * @ClassName MgtBaseShopDto * @Description TODO @@ -16,6 +18,11 @@ @ApiModelProperty(value = "商户id") private Long shopId; @ApiModelProperty(value = "年龄层 1 <20,2 21-30,3 31-40,4 41-50,5 >50") private Integer ageType; @ApiModelProperty(value = "员工list",hidden = true) private List<Long> userIdList; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java
@@ -1,16 +1,15 @@ package com.ruoyi.order.controller.management; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.poi.ExcelUtil; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.domain.vo.MgtPlTotalActivityTotalVo; import com.ruoyi.order.domain.vo.MgtTotalActivityTotalVo; import com.ruoyi.order.domain.vo.MgtTotalDataTotalVo; import com.ruoyi.order.domain.vo.MgtTotalOrderTotalVo; import com.ruoyi.order.service.order.OrderService; import com.ruoyi.system.api.domain.dto.MgtActivityAgeDto; import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; import com.ruoyi.system.api.domain.dto.MgtBaseShopDto; import com.ruoyi.system.api.domain.dto.MgtPlActivityAgeDto; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.RequestBody; @@ -19,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -38,7 +38,7 @@ private OrderService orderService; @RequestMapping(value = "/getTotalOrderTotal", method = RequestMethod.POST) @ApiOperation(value = "获取商户订单统计") @ApiOperation(value = "获取商户订单统计(商户管理-统计经营-经营统计)") public R<MgtTotalOrderTotalVo> getTotalOrderTotal(@RequestBody MgtBaseShopDto mgtBaseShopDto) { Long userId = SecurityUtils.getUserId(); @@ -48,7 +48,7 @@ } @RequestMapping(value = "/getTotalActivityTotal", method = RequestMethod.POST) @ApiOperation(value = "获取商户活动统计") @ApiOperation(value = "获取商户活动统计(商户管理-统计经营-活动统计)") public R<MgtTotalActivityTotalVo> getTotalActivityTotal(@RequestBody MgtBaseShopDto mgtBaseShopDto) { Long userId = SecurityUtils.getUserId(); mgtBaseShopDto.setUserId(userId); @@ -56,17 +56,17 @@ return R.ok(totalActivityTotal); } @RequestMapping(value = "/getTotalActivityAgeRank", method = RequestMethod.POST) /*@RequestMapping(value = "/getTotalActivityAgeRank", method = RequestMethod.POST) @ApiOperation(value = "获取商户活动年龄分布") public R<MgtTotalActivityTotalVo> getTotalActivityAgeRank(@RequestBody MgtActivityAgeDto mgtActivityAgeDto) { Long userId = SecurityUtils.getUserId(); mgtActivityAgeDto.setUserId(userId); MgtTotalActivityTotalVo totalActivityTotal = orderService.getTotalActivityAgeRank(mgtActivityAgeDto); return R.ok(totalActivityTotal); } }*/ @RequestMapping(value = "/getTotalDataTotal", method = RequestMethod.POST) @ApiOperation(value = "获取商户数据统计(数据统计)") @ApiOperation(value = "获取商户数据统计(商户管理-统计经营-数据统计)") public R<MgtTotalDataTotalVo> getTotalDataTotal(@RequestBody MgtBaseShopDto mgtBaseShopDto) { Long userId = SecurityUtils.getUserId(); mgtBaseShopDto.setUserId(userId); @@ -75,7 +75,7 @@ } @RequestMapping(value = "/getPlTotalDataTotal", method = RequestMethod.POST) @ApiOperation(value = "获取平台商户数据统计") @ApiOperation(value = "获取平台商户数据统计(统计-店铺数据统计)") public R<List<MgtTotalDataTotalVo>> getPlTotalDataTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) { Long userId = SecurityUtils.getUserId(); mgtBasePlatformDto.setUserId(userId); @@ -83,8 +83,18 @@ return R.ok(totalDataTotalVoList); } @RequestMapping(value = "/getPlTotalDataTotal", method = RequestMethod.POST) @ApiOperation(value = "导出平台商户数据统计(统计-店铺数据统计)") public void exportPlTotalDataTotal(MgtBasePlatformDto mgtBasePlatformDto, HttpServletResponse response) { Long userId = SecurityUtils.getUserId(); mgtBasePlatformDto.setUserId(userId); List<MgtTotalDataTotalVo> totalDataTotalVoList = orderService.getPlTotalDataTotal(mgtBasePlatformDto); ExcelUtil<MgtTotalDataTotalVo> util = new ExcelUtil<MgtTotalDataTotalVo>(MgtTotalDataTotalVo.class); util.exportExcel(response, totalDataTotalVoList, "店铺数据统计列表"); } @RequestMapping(value = "/getPlTotalOrderTotal", method = RequestMethod.POST) @ApiOperation(value = "获取平台商户订单统计") @ApiOperation(value = "获取平台商户订单统计(统计-经营统计)") public R<MgtTotalOrderTotalVo> getPlTotalOrderTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) { Long userId = SecurityUtils.getUserId(); mgtBasePlatformDto.setUserId(userId); @@ -93,7 +103,7 @@ } @RequestMapping(value = "/getPlTotalActivityTotal", method = RequestMethod.POST) @ApiOperation(value = "获取平台商户活动统计") @ApiOperation(value = "获取平台商户活动统计(统计-活动统计)") public R<MgtPlTotalActivityTotalVo> getPlTotalActivityTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) { Long userId = SecurityUtils.getUserId(); mgtBasePlatformDto.setUserId(userId); @@ -101,12 +111,12 @@ return R.ok(totalActivityTotal); } @RequestMapping(value = "/getPlTotalActivityAgeRank", method = RequestMethod.POST) /*@RequestMapping(value = "/getPlTotalActivityAgeRank", method = RequestMethod.POST) @ApiOperation(value = "获取平台商户活动年龄分布") public R<MgtPlTotalActivityTotalVo> getPlTotalActivityAgeRank(@RequestBody MgtPlActivityAgeDto mgtPlActivityAgeDto) { Long userId = SecurityUtils.getUserId(); mgtPlActivityAgeDto.setUserId(userId); MgtPlTotalActivityTotalVo plTotalActivityTotalVo = orderService.getPlTotalActivityAgeRank(mgtPlActivityAgeDto); return R.ok(plTotalActivityTotalVo); } }*/ } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java
@@ -63,37 +63,37 @@ @ApiModelProperty(value = "服务获客人数") private Integer servicePerson; @ApiModelProperty(value = "订单数量key") @ApiModelProperty(value = "订单分布日期") private String[] orderTotalKey; @ApiModelProperty(value = "订单数量value") @ApiModelProperty(value = "订单分布数量") private Integer[] orderTotalValue; @ApiModelProperty(value = "订单数量value") @ApiModelProperty(value = "订单分布金额") @JsonSerialize(using = ToStringSerializer.class) private BigDecimal[] orderMoneyValue; @ApiModelProperty(value = "商品类型数量") @ApiModelProperty(value = "销售占比数量") private List<MgtMapIntTotalVo> goodsTypeTotalList; @ApiModelProperty(value = "商品类型金额") @ApiModelProperty(value = "销售占比金额") private List<MgtMapBigTotalVo> goodsTypeMoneyList; @ApiModelProperty(value = "活动次数排行") @ApiModelProperty(value = "店铺活动次数排行") private List<MgtMapIntTotalVo> activityRankList; @ApiModelProperty(value = "商户活动销售额排名") @ApiModelProperty(value = "店铺活动销售额排名") private List<MgtMapBigTotalVo> shopSalesRankList; @ApiModelProperty(value = "活动销售额排名") @ApiModelProperty(value = "店铺活动销售额排名") private List<MgtMapBigTotalVo> activitySalesRankList; @ApiModelProperty(value = "活动年龄分布key") /*@ApiModelProperty(value = "活动年龄分布key") private String[] activityAgeKey; @ApiModelProperty(value = "活动年龄分布value") private Integer[] activityAgeValue; */ @ApiModelProperty(value = "参与人数key") private String[] joinMemberTotalKey; ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java
@@ -63,31 +63,31 @@ @ApiModelProperty(value = "服务获客人数") private Integer servicePerson; @ApiModelProperty(value = "订单数量key") @ApiModelProperty(value = "订单分布日期") private String[] orderTotalKey; @ApiModelProperty(value = "订单数量value") @ApiModelProperty(value = "订单分布数量") private Integer[] orderTotalValue; @ApiModelProperty(value = "订单金额value") @ApiModelProperty(value = "订单分布金额") @JsonSerialize(using = ToStringSerializer.class) private BigDecimal[] orderMoneyValue; @ApiModelProperty(value = "商品类型数量") @ApiModelProperty(value = "销售占比数量") private List<MgtMapIntTotalVo> goodsTypeTotalList; @ApiModelProperty(value = "商品类型金额") @ApiModelProperty(value = "销售占比金额") private List<MgtMapBigTotalVo> goodsTypeMoneyList; @ApiModelProperty(value = "活动年龄分布key") /* @ApiModelProperty(value = "活动年龄分布key") private String[] activityAgeKey; @ApiModelProperty(value = "活动年龄分布value") private Integer[] activityAgeValue; private Integer[] activityAgeValue;*/ @ApiModelProperty(value = "参与人数key") private String[] joinMemberTotalKey; @ApiModelProperty(value = "参与人数key") @ApiModelProperty(value = "参与人数value") private Integer[] joinMemberTotalValue; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalDataTotalVo.java
@@ -2,6 +2,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.ruoyi.common.core.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -17,37 +18,48 @@ @Data public class MgtTotalDataTotalVo { @Excel(name = "店铺名称", width = 30, sort = 1) @ApiModelProperty(value = "商户名称") private String shopName; @Excel(name = "营业额", width = 30, sort = 2) @ApiModelProperty(value = "营业额") @JsonSerialize(using = ToStringSerializer.class) private BigDecimal salesTotal; @ApiModelProperty(value = "总人数") @Excel(name = "进店总人数", width = 30, sort = 3) @ApiModelProperty(value = "进店总人数") private Integer orderPerson; @ApiModelProperty(value = "体验人数") @Excel(name = "3次体验人数", width = 30, sort = 4) @ApiModelProperty(value = "3次体验人数") private Integer onlyExperiencePerson; @ApiModelProperty(value = "体验开单人数") @Excel(name = "3次体验开单人数", width = 30, sort = 5) @ApiModelProperty(value = "3次体验开单人数") private Integer experienceCyclePerson; @Excel(name = "没体验开单人数", width = 30, sort = 6) @ApiModelProperty(value = "没体验开单人数") private Integer onlyCyclePerson; @Excel(name = "续单人数", width = 30, sort = 7) @ApiModelProperty(value = "续单人数") private Integer reorderPerson; @Excel(name = "老客户回店人数", width = 30, sort = 9) @ApiModelProperty(value = "老客户回店人数") private Integer returnedPerson; @Excel(name = "整体调理人数", width = 30, sort = 8) @ApiModelProperty(value = "整体调理人数") private Integer cyclePerson; @Excel(name = "单品人数", width = 30, sort = 10) @ApiModelProperty(value = "单品人数") private Integer goodsPerson; @Excel(name = "单品数量", width = 30, sort = 11) @ApiModelProperty(value = "单品数量") private Integer goodsNumber; ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java
@@ -69,25 +69,25 @@ @JsonSerialize(using = ToStringSerializer.class) private BigDecimal serviceMoney; @ApiModelProperty(value = "订单数量key") @ApiModelProperty(value = "订单分布日期") private String[] orderTotalKey; @ApiModelProperty(value = "订单数量value") @ApiModelProperty(value = "订单分布数量") private Integer[] orderTotalValue; @ApiModelProperty(value = "订单金额value") @ApiModelProperty(value = "订单分布金额") @JsonSerialize(using = ToStringSerializer.class) private BigDecimal[] orderMoneyValue; @ApiModelProperty(value = "商品类型数量") @ApiModelProperty(value = "销售占比数量") private List<MgtMapIntTotalVo> goodsTypeTotalList; @ApiModelProperty(value = "商品类型金额") @ApiModelProperty(value = "销售占比金额") private List<MgtMapBigTotalVo> goodsTypeMoneyList; @ApiModelProperty(value = "商品排行") @ApiModelProperty(value = "销售排行") private List<MgtMapBigTotalVo> goodsRankList; @ApiModelProperty(value = "来源排行") @ApiModelProperty(value = "订单渠道排行") private List<MgtMapBigTotalVo> orderFromRankList; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
@@ -655,6 +655,9 @@ List<MgtMapIntTotalVo> getMgtActivityMemberTotal(@Param("param")MgtBasePlatformDto mgtBasePlatformDto); List<MgtMapIntTotalVo> getActivityMemberTotal(@Param("param")MgtBaseShopDto mgtBaseShopDto); /** * @description 获取用户商品购买数量 * @author jqs ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -751,13 +751,16 @@ } appPlaceOrderVo.setOrderId(orderId); appPlaceOrderVo.setOrderNo(orderNo); //商品数据 String goodsName = ""; if (null != goodsNameList) { goodsName = String.join(",", goodsNameList); } if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.TEN)<0){ //减去优惠券 if (StringUtils.isNotBlank(memberCouponSJ.toString())) { remoteCouponService.useMemberCoupon(memberCouponSJ.toString()); } if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){ String outTradeNo = IdUtils.simpleUUID(); // 保存订单 交易流水 @@ -768,25 +771,23 @@ createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, outTradeNo, orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(), appPlaceOrderDto.getSpbillCreateIp(), goodsNameList,1); //生成自动取消订单延时任务 Integer delayTime = 30; if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES); DelayTask delayTask = new DelayTask(); delayTask.setDelFlag(0); delayTask.setCreateTime(new Date()); delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime)); delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); remoteConfigService.addDelayTask(delayTask); appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); }else{ order.setOrderStatus(2); this.saveOrUpdate(order); } //减去优惠券 if (StringUtils.isNotBlank(memberCouponSJ.toString())) { remoteCouponService.useMemberCoupon(memberCouponSJ.toString()); } //生成自动取消订单延时任务 Integer delayTime = 30; if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES); DelayTask delayTask = new DelayTask(); delayTask.setDelFlag(0); delayTask.setCreateTime(new Date()); delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime)); delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); remoteConfigService.addDelayTask(delayTask); appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); return appPlaceOrderVo; } @@ -1156,18 +1157,32 @@ goodsNameList.add(orderGoods.getGoodsName()); if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.TEN)<0){ if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){ String outTradeNo = IdUtils.simpleUUID(); // 保存订单 交易流水 order.setOutTradeNo(outTradeNo); this.saveOrUpdate(order); // 小程序微信下单支付 createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), orderNo, orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(), appPlaceActivityDto.getSpbillCreateIp(), goodsNameList,2); //生成自动取消订单延时任务 Integer delayTime = 30; if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES); DelayTask delayTask = new DelayTask(); delayTask.setDelFlag(0); delayTask.setCreateTime(new Date()); delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime)); delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); remoteConfigService.addDelayTask(delayTask); appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); }else{ order.setOrderStatus(2); this.saveOrUpdate(order); } //生成活动参加记录 ActivityRecord activityRecord = new ActivityRecord(); @@ -1182,19 +1197,6 @@ activityRecord.setGoodsId(orderGoods.getGoodsId()); activityRecord.setActivityMoney(activityGoodsGetVo.getActivityPrice()); remoteActivityService.addActivityRecord(activityRecord); //生成自动取消订单延时任务 Integer delayTime = 30; if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES); DelayTask delayTask = new DelayTask(); delayTask.setDelFlag(0); delayTask.setCreateTime(new Date()); delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime)); delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); remoteConfigService.addDelayTask(delayTask); appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); return appPlaceOrderVo; } @@ -2745,22 +2747,10 @@ */ @Override public MgtTotalOrderTotalVo getTotalOrderTotal(MgtBaseShopDto mgtBaseShopDto) { //订单数量 订单金额 MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getTotalOrderTotalOrderFrom(mgtBaseShopDto); //MgtTotalOrderTotalVo mgtTotalOrderTotalVoGoodsType = orderMapper.getTotalOrderTotalGoodsType(mgtBaseShopDto); List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listTotalOrderTotal(mgtBaseShopDto); if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { String[] orderTotalKey = new String[MgtMapIntTotalVos.size()]; Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()]; BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()]; for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey(); orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst(); orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond(); } mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey); mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue); mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue); } //获取商品分类销售数据 List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listTotalOrderTotalGoodsType(mgtBaseShopDto); List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>(); @@ -2811,6 +2801,26 @@ orderFromList = bigListRemoveNull(orderFromList); mgtTotalOrderTotalVo.setOrderFromRankList(orderFromList); } //订单分布 //日期全部时固定为5天 if(StringUtils.isBlank(mgtBaseShopDto.getStartDate())){ mgtBaseShopDto.setStartDate(DateUtils.getDate()); mgtBaseShopDto.setEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); } List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listTotalOrderTotal(mgtBaseShopDto); if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { String[] orderTotalKey = new String[MgtMapIntTotalVos.size()]; Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()]; BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()]; for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey(); orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst(); orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond(); } mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey); mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue); mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue); } return mgtTotalOrderTotalVo; } @@ -2855,7 +2865,7 @@ */ @Override public MgtTotalActivityTotalVo getTotalActivityTotal(MgtBaseShopDto mgtBaseShopDto) { //获取基础统计 //获取基础统计 总订单数 订单金额 参与人数 MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityTotal(mgtBaseShopDto); //获客人数 MgtTotalActivityTotalVo totalActivityMemberTotalVo = orderMapper.getTotalActivityMemberTotal(mgtBaseShopDto); @@ -2908,7 +2918,13 @@ totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList); } //获取订单分布 //日期全部时固定为5天 if(StringUtils.isBlank(mgtBaseShopDto.getStartDate())){ mgtBaseShopDto.setStartDate(DateUtils.getDate()); mgtBaseShopDto.setEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); } List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto); if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { String[] orderTotalKey = new String[MgtMapIntTotalVos.size()]; @@ -2924,7 +2940,30 @@ totalActivityTotalVo.setOrderMoneyValue(orderMoneyValue); } //参与人数 List<MgtMapIntTotalVo> joinList = orderMapper.getActivityMemberTotal(mgtBaseShopDto); // 将查询结果转为Map Map<String, Integer> mgtMapIntTotalVoMap = new HashMap<>(); if (joinList != null && !joinList.isEmpty()) { mgtMapIntTotalVoMap = joinList.stream() .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue)); } // 获取日期范围 List<String> dateList = getDateRange(mgtBaseShopDto.getStartDate(), mgtBaseShopDto.getEndDate()); int size = dateList.size(); // 创建日期和成员总数的数组 String[] joinMemberTotalKey = new String[size]; Integer[] joinMemberTotalValue = new Integer[size]; // 遍历日期列表,设置日期和成员总数的数组 String str; Integer value; for (int i = 0; i < size; i++) { str = dateList.get(i); joinMemberTotalKey[i] = str; value = mgtMapIntTotalVoMap.get(str); joinMemberTotalValue[i] = (value != null) ? value : 0; } totalActivityTotalVo.setJoinMemberTotalKey(joinMemberTotalKey); totalActivityTotalVo.setJoinMemberTotalValue(joinMemberTotalValue); return totalActivityTotalVo; } @@ -2935,7 +2974,7 @@ * @author jqs * @date 2023/6/20 9:56 */ @Override /*@Override public MgtTotalActivityTotalVo getTotalActivityAgeRank(MgtActivityAgeDto mgtActivityAgeDto) { List<Long> userIds = orderMapper.getUserIdAgeRank(mgtActivityAgeDto); mgtActivityAgeDto.setUserIds(userIds); @@ -2957,7 +2996,7 @@ totalActivityTotalVo.setActivityAgeKey(activityAgeKey); totalActivityTotalVo.setActivityAgeValue(activityAgeValue); return totalActivityTotalVo; } }*/ /** * @param mgtBaseShopDto @@ -3080,20 +3119,6 @@ mgtBasePlatformDto.setShopIdList(shopIdList); //获取基础统计 MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getPlTotalOrderTotalOrderFrom(mgtBasePlatformDto); List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalOrderTotal(mgtBasePlatformDto); if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { String[] orderTotalKey = new String[MgtMapIntTotalVos.size()]; Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()]; BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()]; for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey(); orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst(); orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond(); } mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey); mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue); mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue); } //获取商品分类销售数据 List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listPlTotalOrderTotalGoodsType(mgtBasePlatformDto); List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>(); @@ -3150,6 +3175,27 @@ orderFromList = bigListRemoveNull(orderFromList); mgtTotalOrderTotalVo.setOrderFromRankList(orderFromList); } //订单分布 //日期全部时固定为5天 if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){ mgtBasePlatformDto.setStartDate(DateUtils.getDate()); mgtBasePlatformDto.setEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); } List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalOrderTotal(mgtBasePlatformDto); if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { String[] orderTotalKey = new String[MgtMapIntTotalVos.size()]; Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()]; BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()]; for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey(); orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst(); orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond(); } MerOrderDistributionTotalVo merOrderDistributionTotalVo = fillOrderTotalKeyAndValuesToRecentFiveDays(orderTotalKey,orderTotalValue,orderMoneyValue); mgtTotalOrderTotalVo.setOrderTotalKey(merOrderDistributionTotalVo.getOrderTotalKey()); mgtTotalOrderTotalVo.setOrderTotalValue(merOrderDistributionTotalVo.getOrderTotalValue()); mgtTotalOrderTotalVo.setOrderMoneyValue(merOrderDistributionTotalVo.getOrderMoneyValue()); } return mgtTotalOrderTotalVo; } @@ -3162,6 +3208,9 @@ */ @Override public MgtPlTotalActivityTotalVo getPlTotalActivityTotal(MgtBasePlatformDto mgtBasePlatformDto) { if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){ return new MgtPlTotalActivityTotalVo(); } //获取需要关联的用户id集合 if (mgtBasePlatformDto.getDeptId() != null) { List<Long> userIdList = new ArrayList<>(); @@ -3229,6 +3278,11 @@ totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList); } //日期全部时固定为5天 if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){ mgtBasePlatformDto.setStartDate(DateUtils.getDate()); mgtBasePlatformDto.setEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4))); } //获取订单分布 List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto); if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { @@ -3256,18 +3310,28 @@ mgtBaseBathDto.setIds(joinedString); List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData(); // 将MgtSimpleShopVoList转换为Map<Long, MgtSimpleShopVo>,以便后续根据shopId获取对应的MgtSimpleShopVo Map<Long, MgtSimpleShopVo> map = simpleShopVoList.stream() Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream() .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); //商户活动次数排名 List<MgtMapBigTotalVo> shopActivityRank = orderMapper.listPlTotalShopActivityRank(mgtBasePlatformDto); if (shopActivityRank != null && shopActivityRank.size() > 0) { shopActivityRank = bigListRemoveNull(shopActivityRank); for(MgtMapBigTotalVo mgtMapBigTotalVo : shopActivityRank){ if(shopMap.get(mgtMapBigTotalVo.getMapKey())!=null){ mgtMapBigTotalVo.setMapKey(shopMap.get(mgtMapBigTotalVo.getMapKey()).getShopName()); } } totalActivityTotalVo.setShopSalesRankList(shopActivityRank); } //商户活动销售额排名 List<MgtMapBigTotalVo> shopActivitySalesRank = orderMapper.listPlTotalShopActivitySalesRank(mgtBasePlatformDto); if (shopActivitySalesRank != null && shopActivitySalesRank.size() > 0) { shopActivitySalesRank = bigListRemoveNull(shopActivitySalesRank); for(MgtMapBigTotalVo mgtMapBigTotalVo : shopActivitySalesRank){ if(shopMap.get(mgtMapBigTotalVo.getMapKey())!=null){ mgtMapBigTotalVo.setMapKey(shopMap.get(mgtMapBigTotalVo.getMapKey()).getShopName()); } } totalActivityTotalVo.setShopSalesRankList(shopActivitySalesRank); } //活动销售额排名 @@ -3337,7 +3401,7 @@ * @author jqs * @date 2023/6/20 9:56 */ @Override /*@Override public MgtPlTotalActivityTotalVo getPlTotalActivityAgeRank(MgtPlActivityAgeDto mgtPlActivityAgeDto) { List<Long> userIds = orderMapper.getPlUserIdAgeRank(mgtPlActivityAgeDto); MgtActivityAgeDto mgtActivityAgeDto = new MgtActivityAgeDto(); @@ -3361,7 +3425,7 @@ plTotalActivityTotalVo.setActivityAgeKey(activityAgeKey); plTotalActivityTotalVo.setActivityAgeValue(activityAgeValue); return plTotalActivityTotalVo; } }*/ /** * @param verifyCode ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -252,7 +252,7 @@ * @param mgtActivityAgeDto * @return MgtTotalActivityTotalVo */ MgtTotalActivityTotalVo getTotalActivityAgeRank(MgtActivityAgeDto mgtActivityAgeDto); //MgtTotalActivityTotalVo getTotalActivityAgeRank(MgtActivityAgeDto mgtActivityAgeDto); /** * @description 获取商户数据统计 @@ -306,7 +306,7 @@ * @param mgtPLActivityAgeDto * @return MgtTotalActivityTotalVo */ MgtPlTotalActivityTotalVo getPlTotalActivityAgeRank(MgtPlActivityAgeDto mgtPLActivityAgeDto); //MgtPlTotalActivityTotalVo getPlTotalActivityAgeRank(MgtPlActivityAgeDto mgtPLActivityAgeDto); /** * @description 获取优惠券核销信息 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -748,11 +748,11 @@ IFNULL(SUM(CASE WHEN order_from = 1 THEN 1 ELSE 0 END),0) onlineTotal, IFNULL(SUM(CASE WHEN order_from = 3 THEN 1 ELSE 0 END),0) offlineTotal, IFNULL(SUM(CASE WHEN order_from = 2 THEN 1 ELSE 0 END),0) activityTotal, IFNULL(SUM(order_money),0) orderMoney, IFNULL(SUM(CASE WHEN order_from = 1 THEN order_money ELSE 0 END),0) onlineMoney, IFNULL(SUM(CASE WHEN order_from = 3 THEN order_money ELSE 0 END),0) offlineMoney, IFNULL(SUM(CASE WHEN order_from = 2 THEN order_money ELSE 0 END),0) activityMoney FROM t_order WHERE del_flag = 0 IFNULL(SUM(change_receivable_money),0) orderMoney, IFNULL(SUM(CASE WHEN order_from = 1 THEN change_receivable_money ELSE 0 END),0) onlineMoney, IFNULL(SUM(CASE WHEN order_from = 3 THEN change_receivable_money ELSE 0 END),0) offlineMoney, IFNULL(SUM(CASE WHEN order_from = 2 THEN change_receivable_money ELSE 0 END),0) activityMoney FROM t_order WHERE del_flag = 0 AND order_status = 3 <if test="param.shopId != null and param.shopId != ''"> AND shop_id = #{param.shopId} </if> @@ -818,43 +818,49 @@ SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey, COUNT(order_id) AS mapValueFirst, IFNULL(SUM(order_money),0) AS mapValueSecond FROM t_order WHERE del_flag = 0 AND Date(create_time) >= DATE_SUB(CURDATE(), INTERVAL 6 DAY) IFNULL(SUM(CASE WHEN pay_type = 1 THEN change_receivable_money WHEN pay_type = 2 THEN change_receivable_money + online_pay_money ELSE 0 END),0) AS mapValueSecond FROM t_order WHERE del_flag = 0 AND order_status IN (2,3) <if test="param.shopId != null and param.shopId != ''"> AND shop_id = #{param.shopId} </if> GROUP BY DATE_FORMAT(create_time, '%Y-%m-%d') ORDER BY DATE_FORMAT(create_time, '%Y-%m-%d') ASC <if test="param.startDate!=null and param.startDate!=''"> AND Date(create_time) >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND Date(create_time) <= #{param.endDate} </if> GROUP BY mapKey ORDER BY mapKey ASC </select> <select id="listTotalOrderTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo"> SELECT tog.goods_type mapKey, COUNT(DISTINCT toc.order_id) AS mapValueFirst, IFNULL(SUM(tog.goods_total_money),0) AS mapValueSecond FROM t_order toc IFNULL(SUM(tog.goods_receivable_money),0) AS mapValueSecond FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 WHERE toc.del_flag = 0 AND toc.order_status IN (2,3) <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> GROUP BY tog.goods_type <if test="param.startDate!=null and param.startDate!=''"> AND Date(toc.create_time) >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND Date(toc.create_time) <= #{param.endDate} </if> GROUP BY mapKey </select> <select id="listTotalOrderTotalGoodsRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo"> SELECT tog.goods_name mapKey, IFNULL(SUM(tog.goods_total_money),0) mapValue IFNULL(SUM(tog.goods_receivable_money),0) mapValue FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 WHERE toc.del_flag = 0 AND toc.order_status = 3 <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> @@ -875,9 +881,9 @@ WHEN 2 THEN "秒杀活动订单" WHEN 3 THEN "线下创建订单" END mapKey, IFNULL(SUM(toc.order_money),0) mapValue IFNULL(SUM(CASE WHEN toc.pay_type = 1 THEN toc.change_receivable_money WHEN toc.pay_type = 2 THEN toc.change_receivable_money + toc.online_pay_money ELSE 0 END),0) mapValue FROM t_order toc WHERE toc.del_flag = 0 WHERE toc.del_flag = 0 AND toc.order_status IN (2,3) <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> @@ -919,6 +925,12 @@ WHERE toc.del_flag = 0 AND order_from = 2 <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> <if test="param.startDate!=null and param.startDate!=''"> AND Date(toc.create_time) >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND Date(toc.create_time) <= #{param.endDate} </if> GROUP BY tog.goods_type </select> @@ -1129,11 +1141,11 @@ IFNULL(SUM(CASE WHEN order_from = 1 THEN 1 ELSE 0 END),0) onlineTotal, IFNULL(SUM(CASE WHEN order_from = 3 THEN 1 ELSE 0 END),0) offlineTotal, IFNULL(SUM(CASE WHEN order_from = 2 THEN 1 ELSE 0 END),0) activityTotal, IFNULL(SUM(order_money),0) orderMoney, IFNULL(SUM(CASE WHEN order_from = 1 THEN order_money ELSE 0 END),0) onlineMoney, IFNULL(SUM(CASE WHEN order_from = 3 THEN order_money ELSE 0 END),0) offlineMoney, IFNULL(SUM(CASE WHEN order_from = 2 THEN order_money ELSE 0 END),0) activityMoney FROM t_order WHERE del_flag = 0 IFNULL(SUM(change_receivable_money),0) orderMoney, IFNULL(SUM(CASE WHEN order_from = 1 THEN change_receivable_money ELSE 0 END),0) onlineMoney, IFNULL(SUM(CASE WHEN order_from = 3 THEN change_receivable_money ELSE 0 END),0) offlineMoney, IFNULL(SUM(CASE WHEN order_from = 2 THEN change_receivable_money ELSE 0 END),0) activityMoney FROM t_order WHERE del_flag = 0 AND order_status = 3 <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1177,22 +1189,24 @@ SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey, COUNT(order_id) AS mapValueFirst, IFNULL(SUM(order_money),0) AS mapValueSecond IFNULL(SUM(receivable_money),0) AS mapValueSecond FROM t_order WHERE del_flag = 0 AND Date(create_time) >= DATE_SUB(CURDATE(), INTERVAL 6 DAY) WHERE del_flag = 0 AND order_status = 3 <if test="param.startDate!=null and param.startDate!=''"> AND Date(create_time) >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND Date(create_time) <= #{param.endDate} </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> GROUP BY DATE_FORMAT(create_time, '%Y-%m-%d') ORDER BY DATE_FORMAT(create_time, '%Y-%m-%d') ASC GROUP BY mapKey ORDER BY mapKey ASC </select> <select id="listPlTotalOrderTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo"> @@ -1203,7 +1217,7 @@ FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 WHERE toc.del_flag = 0 AND toc.order_status IN (2,3) <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1216,11 +1230,10 @@ <select id="listPlTotalOrderTotalGoodsRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo"> SELECT tog.goods_name mapKey, IFNULL(SUM(tog.goods_receivable_money),0) mapValue, COUNT(DISTINCT toc.order_id) mapTotalValue IFNULL(SUM(tog.goods_receivable_money),0) mapValue FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 WHERE toc.del_flag = 0 AND order_status = 3 <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1233,8 +1246,8 @@ <if test="param.endDate!=null and param.endDate!=''"> AND Date(toc.create_time) <= #{param.endDate} </if> GROUP BY tog.goods_name ORDER BY SUM(tog.goods_total_money) DESC LIMIT 10 GROUP BY mapKey ORDER BY mapValue DESC LIMIT 15 </select> <select id="listPlTotalOrderTotalOrderFrom" resultType="com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo"> @@ -1246,7 +1259,7 @@ END mapKey, IFNULL(SUM(toc.order_money),0) mapValue FROM t_order toc WHERE toc.del_flag = 0 WHERE toc.del_flag = 0 AND order_status = 3 <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1260,7 +1273,7 @@ AND Date(toc.create_time) <= #{param.endDate} </if> GROUP BY toc.order_from ORDER BY SUM(toc.order_money) DESC LIMIT 10 ORDER BY SUM(toc.order_money) DESC LIMIT 15 </select> <select id="getPlTotalActivityTotal" resultType="com.ruoyi.order.domain.vo.MgtPlTotalActivityTotalVo"> @@ -1274,6 +1287,9 @@ <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="param.activityId!=null and param.activityId!=''"> AND toc.activity_id = #{param.activityId} </if> <if test="param.startDate!=null and param.startDate!=''"> AND Date(create_time) >= #{param.startDate} @@ -1291,7 +1307,7 @@ COUNT(DISTINCT CASE WHEN tog.goods_type = 3 THEN toc.user_id ELSE NULL END) servicePerson FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 AND toc.order_from = 2 AND toc.order_status = 3 AND toc.new_member_flag = 1 WHERE toc.del_flag = 0 AND toc.order_from = 2 AND toc.order_status IN (2,3) AND toc.new_member_flag = 1 <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1345,10 +1361,10 @@ </foreach> </if> <if test="param.startDate!=null and param.startDate!=''"> AND Date(create_time) >= #{param.startDate} AND Date(toc.create_time) >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND Date(create_time) <= #{param.endDate} AND Date(toc.create_time) <= #{param.endDate} </if> GROUP BY tog.goods_type </select> @@ -1360,17 +1376,20 @@ IFNULL(SUM(CASE WHEN pay_type = 1 THEN change_receivable_money WHEN pay_type = 2 THEN change_receivable_money + online_pay_money ELSE 0 END),0) AS mapValueSecond FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status = 3 AND Date(create_time) >= DATE_SUB(CURDATE(), INTERVAL 6 DAY) <if test="param.startDate!=null and param.startDate!=''"> AND Date(create_time) >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND Date(create_time) <= #{param.endDate} </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> GROUP BY DATE_FORMAT(create_time, '%Y-%m-%d') ORDER BY DATE_FORMAT(create_time, '%Y-%m-%d') ASC GROUP BY mapKey ORDER BY mapKey ASC </select> <select id="getPlUserIdAgeRank" resultType="java.lang.Long"> @@ -1407,9 +1426,9 @@ </foreach> </if> GROUP BY DATE_FORMAT(create_time, '%Y-%m-%d') mapKey ORDER BY DATE_FORMAT(create_time, '%Y-%m-%d') ASC mapValue ASC </select> <select id="listPlTotalShopActivityRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo"> @@ -1430,32 +1449,16 @@ <if test="param.endDate!=null and param.endDate!=''"> AND Date(create_time) <= #{param.endDate} </if> GROUP BY shop_id ORDER BY COUNT(order_id) DESC LIMIT 15 GROUP BY mapKey ORDER BY mapValue DESC LIMIT 15 </select> <select id="listPlTotalShopActivitySalesRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo"> SELECT shop_id AS mapKey, IFNULL(SUM(order_money),0) AS mapValue shop_id AS mapKey, IFNULL(SUM(CASE WHEN pay_type = 1 THEN change_receivable_money WHEN pay_type = 2 THEN change_receivable_money+online_pay_money ELSE 0 END),0) AS mapValue FROM t_order WHERE del_flag = 0 AND order_from = 2 <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> GROUP BY shop_id ORDER BY SUM(order_money) DESC LIMIT 15 </select> <select id="listPlTotalActivitySalesRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo"> SELECT activity_name AS mapKey, IFNULL(SUM(order_money),0) AS mapValue FROM t_order WHERE del_flag = 0 AND order_from = 2 WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1468,8 +1471,30 @@ <if test="param.endDate!=null and param.endDate!=''"> AND Date(create_time) <= #{param.endDate} </if> GROUP BY activity_name ORDER BY SUM(order_money) DESC LIMIT 15 GROUP BY mapKey ORDER BY mapValue DESC LIMIT 15 </select> <select id="listPlTotalActivitySalesRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo"> SELECT activity_name AS mapKey, IFNULL(SUM(CASE WHEN pay_type = 1 THEN change_receivable_money WHEN pay_type = 2 THEN change_receivable_money+online_pay_money ELSE 0 END),0) AS mapValue FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="param.startDate!=null and param.startDate!=''"> AND Date(create_time) >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND Date(create_time) <= #{param.endDate} </if> GROUP BY mapKey ORDER BY mapValue DESC LIMIT 15 </select> <select id="getMerHomeShopTotalVo" resultType="com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo"> @@ -1558,7 +1583,7 @@ #{item} </foreach> </if> AND toc.create_time >= DATE_SUB(CURDATE(), INTERVAL 5 DAY) AND toc.create_time >= DATE_SUB(CURDATE(), INTERVAL 4 DAY) GROUP BY mapKey </select> @@ -1812,7 +1837,7 @@ <if test="param.activityId !=null and param.activityId != ''"> AND toc.activity_id = #{param.activityId} </if> AND toc.create_time >= DATE_SUB(CURDATE(), INTERVAL 5 DAY) AND toc.create_time >= DATE_SUB(CURDATE(), INTERVAL 4 DAY) GROUP BY mapKey </select> @@ -1937,6 +1962,25 @@ GROUP BY mapKey </select> <select id="getActivityMemberTotal" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT DATE(toc.create_time) AS mapKey, COUNT(DISTINCT toc.user_id) AS mapValue FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 AND toc.order_from = 2 AND toc.order_status IN (2,3) <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> <if test="param.startDate!=null and param.startDate!=''"> AND Date(toc.create_time) >= #{param.startDate} </if> <if test="param.endDate!=null and param.endDate!=''"> AND Date(toc.create_time) <= #{param.endDate} </if> GROUP BY mapKey </select> <select id="countUserBuyGoodsNum" resultType="java.lang.Integer"> SELECT SUM(tog.buy_num) FROM t_order toc ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTotalController.java
@@ -31,7 +31,7 @@ private ShopService shopService; @RequestMapping(value = "/getPlTotalShopTotal", method = RequestMethod.POST) @ApiOperation(value = "获取平台商户统计") @ApiOperation(value = "获取平台商户统计(统计-合作商统计)") public R<MgtPlTotalShopTotalVo> getPlTotalShopTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) { Long userId = SecurityUtils.getUserId(); mgtBasePlatformDto.setUserId(userId); ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -210,7 +210,7 @@ } //验证商户名唯一 Shop shopSame = this.getOne(new LambdaQueryWrapper<Shop>().eq(Shop::getDelFlag,0).eq(Shop::getShopName,mgtEditShopDto.getShopName())); //Shop shopSame = this.getOne(new LambdaQueryWrapper<Shop>().eq(Shop::getDelFlag,0).eq(Shop::getShopName,mgtEditShopDto.getShopName())); if(mgtEditShopDto.getShopId()!=null){ //取消验重 /*if(shopSame!=null&&!Objects.equals(shopSame.getShopId(),mgtEditShopDto.getShopId())){ ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -434,10 +434,9 @@ <select id="getNearbyShop" resultType="com.ruoyi.shop.domain.vo.AppNearShopVo"> SELECT ts.shop_id shopId, 6378.138 * 2 * ASIN(SQRT(POW(SIN(( #{param.latitude} * PI() / 180 - ts.shop_latitude * PI() / 180) / 2), 2) + COS(#{param.latitude} * PI() / 180) * COS(ts.shop_latitude * PI() / 180) * POW( SIN((#{param.longitude} * PI() / 180 - ts.shop_longitude * PI() / 180) / 2), 2 6378.138 * 2 * ASIN(SQRT(POW(SIN((28.837917676710354 * PI() / 180 - ts.shop_latitude * PI() / 180) / 2), 2) + COS(28.837917676710354 * PI() / 180) * COS(ts.shop_latitude * PI() / 180) * POW( SIN((105.43587830688473 * PI() / 180 - ts.shop_longitude * PI() / 180) / 2), 2 ))) AS distance FROM t_shop ts ORDER BY distance ASC LIMIT 1 @@ -707,7 +706,7 @@ <select id="listShopAreaRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT ts.shop_city_code mapKey, SUBSTRING_INDEX(SUBSTRING_INDEX(ts.shop_area_name, ',', 2), ',', -1) mapKey, COUNT(ts.shop_id) mapValue FROM t_shop ts WHERE ts.del_flag = 0 @@ -732,7 +731,7 @@ <if test="param.endDate!=null and param.endDate!=''"> AND Date(ts.create_time) <= #{param.endDate} </if> GROUP BY ts.shop_city_code GROUP BY mapKey ORDER BY COUNT(ts.shop_id) DESC LIMIT 15 </select>