From db6083bc5e2446a62c208e1d9c93671c111da8ba Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期日, 27 八月 2023 15:22:26 +0800 Subject: [PATCH] bug --- ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml | 204 ++++++++++++-------- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java | 16 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java | 14 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java | 4 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 208 +++++++++++++------- ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtBaseShopDto.java | 7 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java | 34 ++- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java | 20 +- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java | 3 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTotalController.java | 2 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml | 11 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalDataTotalVo.java | 18 + 13 files changed, 341 insertions(+), 202 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtBaseShopDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtBaseShopDto.java index 3d76f5b..b13416a 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtBaseShopDto.java +++ b/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; } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java index cdef597..e364ec0 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java +++ b/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); - } + }*/ } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java index ea0df7f..ddf8b54 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java +++ b/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; diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java index f8c4813..3f7ce2e 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java +++ b/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; } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalDataTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalDataTotalVo.java index 2c0c1dc..9ef98bd 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalDataTotalVo.java +++ b/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; diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java index bea7fa1..1a7cd0c 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java +++ b/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; } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java index 0beef6a..ecfdb44 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java +++ b/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 diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index a6e83da..7d059dd 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/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 diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java index 273d3e9..95fb5a5 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java +++ b/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 获取优惠券核销信息 diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml index 1945c3b..ed04016 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml +++ b/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 diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTotalController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTotalController.java index a6df601..e612dc5 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTotalController.java +++ b/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); diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java index 5ca75f3..c4a0f43 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java +++ b/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())){ diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml index 5bd8805..6534a3d 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml +++ b/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> -- Gitblit v1.7.1