ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java
@@ -97,6 +97,11 @@ public R<MgtBulletinBoardVo> boardOrderTotal(BoardMemberTotalDto boardMemberTotalDto) { return R.fail(throwable.getMessage()); } @Override public R<List<Integer>> countShopServicePerson(Long shopId) { return R.fail("获取今日到店用户失败:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java
@@ -4,12 +4,11 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.*; import com.ruoyi.system.api.domain.poji.config.OneClinkSyncing; import com.ruoyi.system.api.domain.vo.ShopProportionVo; import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.model.QwH5LoginVo; import com.ruoyi.system.api.model.QwUserDetailDto; import com.ruoyi.system.api.service.RemoteShopService; import com.ruoyi.system.api.domain.poji.shop.Shop; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; @@ -179,6 +178,12 @@ public R updateShopByOneClinkSyncing(OneClinkSyncing oneClinkSyncing) { return R.fail("一键同步商户信息失败:"+throwable.getMessage()); } @Override public R<List<Integer>> getMemberIngTotal(Long shopId) { return R.fail("获取有跟进任务的用户id失败:"+throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java
@@ -11,6 +11,7 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.math.BigDecimal; import java.util.List; @@ -127,4 +128,13 @@ @PostMapping("/order/getGoodsSellStatic") R<StaticsShopMgtGoodsVO> getGoodsSellStatic(@RequestBody List<String> orderIdList); /** * 获取今日到店用户 * @param shopId * @return */ @PostMapping("/order/countShopServicePerson") R<List<Integer>> countShopServicePerson(@RequestParam("shopId") Long shopId); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java
@@ -6,7 +6,6 @@ import com.ruoyi.system.api.domain.dto.*; import com.ruoyi.system.api.domain.poji.config.OneClinkSyncing; import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.vo.ShopProportionVo; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.factory.RemoteShopFallbackFactory; import com.ruoyi.system.api.model.QwH5LoginVo; @@ -14,6 +13,7 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -242,4 +242,14 @@ */ @PostMapping("/shop/updateShopByOneClinkSyncing") R updateShopByOneClinkSyncing(@RequestBody OneClinkSyncing oneClinkSyncing); /** * 获取有跟进任务的用户id * @param shopId * @return */ @PostMapping("/getMemberIngTotal") R<List<Integer>> getMemberIngTotal(@RequestParam("shopId") Long shopId); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java
@@ -109,8 +109,8 @@ public R<Long> addMerMember(@RequestBody MerMemberAddDto merMemberAddDto) { Long userId = SecurityUtils.getUserId(); merMemberAddDto.setUserId(userId); memberService.addMerMember(merMemberAddDto); return R.ok(); Long aLong = memberService.addMerMember(merMemberAddDto); return R.ok(aLong); } @RequestMapping(value = "/editMerMember", method = RequestMethod.POST) ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberPageDto.java
@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * @author jqs34 * @ClassName MerMemberPageDto @@ -65,4 +67,12 @@ @ApiModelProperty(value = "活跃度结束时间",hidden = true) private String actEndDate; @ApiModelProperty(value = "是否今日到店(0=否,1=是)") private Integer isTodayStore; @ApiModelProperty(value = "是否有未跟进任务(0=否,1=是)") private Integer isTask; private List<Integer> userIds; } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -432,6 +432,16 @@ merMemberPageDto.setSurpEndNum(999999999); } } //今日到店用户 if(1 == merMemberPageDto.getIsTodayStore()){ List<Integer> data = remoteOrderService.countShopServicePerson(merMemberPageDto.getShopId()).getData(); merMemberPageDto.setUserIds(data); } //有未跟进的任务用户 if(1 == merMemberPageDto.getIsTask()){ List<Integer> data = remoteShopService.getMemberIngTotal(merMemberPageDto.getShopId()).getData(); merMemberPageDto.setUserIds(data); } List<MerMemberPageVo> merMemberPageVoList = memberMapper.pageMerMember(page, merMemberPageDto); //处理活跃度返回 if (merMemberPageVoList != null && !merMemberPageVoList.isEmpty()) { ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -162,10 +162,16 @@ tm.user_tags userTags, tm.goods_type goodsType, tmt.last_service_time lastPayTime, tm.memberNurse tm.member_nurse memberNurse FROM t_member tm INNER JOIN t_member_total tmt ON tm.member_id = tmt.member_id WHERE tm.relation_shop_id = #{param.shopId} AND tm.binding_flag = 1 <if test="null != param.userIds and param.userIds.size() > 0"> and tm.user_id in <foreach collection="param.userIds" item="userId" open="(" separator="," close=")"> #{userId} </foreach> </if> <if test="param.memberGender != null"> AND tm.gender = #{param.memberGender} </if> ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java
@@ -184,6 +184,7 @@ return R.fail("取消失败"); } order.setOrderStatus(0); order.setCancelType(2); order.setCancelTime(new Date()); orderService.updateById(order); return R.ok(); ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java
@@ -5,6 +5,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.order.service.order.ConsumerGoodsService; import com.ruoyi.order.service.order.OrderService; import com.ruoyi.order.service.order.UserServiceRecordService; import com.ruoyi.system.api.domain.dto.BirthdayGiftSendDto; import com.ruoyi.system.api.domain.dto.BoardMemberTotalDto; import com.ruoyi.system.api.domain.dto.MerBaseDto; @@ -32,6 +33,9 @@ @Resource private ConsumerGoodsService consumerGoodsService; @Resource private UserServiceRecordService userServiceRecordService; @PostMapping("/getAppOrderTotal") @@ -114,7 +118,7 @@ */ @PostMapping("/autoCancelOrder") public R autoCancelOrder(@RequestBody String orderId){ orderService.autoCancelOrder(orderId); orderService.autoCancelOrder(orderId, 1); return R.ok(); } @@ -193,10 +197,22 @@ * @param goodsIdList * @return */ @PostMapping("/order/getGoodsSellStatic") @PostMapping("/getGoodsSellStatic") R<StaticsShopMgtGoodsVO> getGoodsSellStatic(@RequestBody List<String> goodsIdList){ StaticsShopMgtGoodsVO vo = orderService.getGoodsSellStatic(goodsIdList); vo.setGoodsNum(goodsIdList.size()); return R.ok(vo); } /** * 获取今日到店用户 * @param shopId * @return */ @PostMapping("/countShopServicePerson") public R<List<Integer>> countShopServicePerson(@RequestParam("shopId") Long shopId){ List<Integer> list = userServiceRecordService.countShopServicePerson(shopId); return R.ok(list); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java
@@ -153,6 +153,11 @@ @TableField("cancel_time") private Date cancelTime; /** * 取消方(1=平台,2=商户,3=用户) */ @TableField("cancel_type") private Integer cancelType; /** * 核销用户id */ @TableField("use_user_id") ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppUserOrderGetVo.java
@@ -26,6 +26,9 @@ @ApiModelProperty(value="订单编号") private String orderNo; @ApiModelProperty(value="三方订单号") private String tripartiteOrderId; @ApiModelProperty(value = "订单状态0.已取消1.待支付2.待核销3.已完成") private Integer orderStatus; @@ -100,4 +103,7 @@ @ApiModelProperty(value="结束时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date endTime; @ApiModelProperty(value="取消方(1=平台,2=商户,3=用户)") private Integer cancelType; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppUserOrderPageVo.java
@@ -75,6 +75,9 @@ @ApiModelProperty(value = "查询关键字", hidden = true) @JsonIgnore private String keyword; @ApiModelProperty(value="取消方(1=平台,2=商户,3=用户)") private Integer cancelType; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerOrderPageVo.java
@@ -35,6 +35,9 @@ @ApiModelProperty(value="订单编号") private String orderNo; @ApiModelProperty(value="三方订单号") private String tripartiteOrderId; @ApiModelProperty(value = "订单状态0.已取消1.待支付2.待核销3.已完成") private Integer orderStatus; ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/UserServiceRecordMapper.java
@@ -1,11 +1,11 @@ package com.ruoyi.order.mapper.order; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.order.domain.dto.AppConsumerPageDto; import com.ruoyi.order.domain.dto.MerServiceRecordPageDto; import com.ruoyi.order.domain.dto.MgtMemberServiceRecordPageDto; import com.ruoyi.order.domain.pojo.order.UserServiceRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.domain.vo.AppServiceRecordPageVo; import com.ruoyi.order.domain.vo.MerServiceRecordPageVo; import com.ruoyi.order.domain.vo.MgtMemberServiceRecordPageVo; @@ -56,12 +56,12 @@ MgtMemberServiceTotalVo getMgtMemberServiceTotal(@Param("userId")Long userId); /** * @param shopId * @return Integer * @description 统计商户到店人数 * @author jqs * @date 2023/6/25 17:17 * @param shopId * @return Integer */ Integer countShopServicePerson(@Param("shopId")Long shopId); List<Integer> countShopServicePerson(@Param("shopId") Long shopId); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -1514,6 +1514,7 @@ delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } appUserOrderGetVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); appUserOrderGetVo.setCancelType(order.getCancelType()); return appUserOrderGetVo; } @@ -1532,10 +1533,10 @@ //删除待支付超时取消延时任务 redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+orderId); this.autoCancelOrder(orderId); this.autoCancelOrder(orderId, 3); } else if (order.getOrderStatus() == 2) { // 2.待核销 -> 订单退款 this.refundOrder(orderId); this.refundOrder(orderId, 3); } else { throw new ServiceException(AppErrorConstant.CANCEL_ERROR_ORDER); } @@ -1690,12 +1691,12 @@ shopId = merHomeShopTotalVo.getShopId(); //获取今日到店 Integer todayShop = userServiceRecordService.countShopServicePerson(shopId); List<Integer> todayShop = userServiceRecordService.countShopServicePerson(shopId); //获取待处理订单和营业额 merHomeShopTotalVo = orderMapper.getMerHomeShopTotalVo(shopId); //获取服务统计 MerHomeShopTotalVo serviceTotalVo = orderMapper.getMerHomeShopServiceTotalVo(shopId); merHomeShopTotalVo.setTodayShop(todayShop); merHomeShopTotalVo.setTodayShop(todayShop.size()); merHomeShopTotalVo.setCycleSurp(serviceTotalVo.getCycleSurp()); merHomeShopTotalVo.setExplorationSurp(serviceTotalVo.getExplorationSurp()); return merHomeShopTotalVo; @@ -3255,7 +3256,7 @@ Long userId; Member member; Integer orderFrom; String orderFromDesc; String orderFromDesc = ""; BigDecimal zeroBig = new BigDecimal("0.00"); StringJoiner userIdSj = new StringJoiner(","); // 遍历订单列表 @@ -3269,8 +3270,16 @@ orderFromDesc = "商城订单"; } else if (orderFrom == 2) { orderFromDesc = "平台秒杀活动(" + merOrderPageVo.getActivityName() + ")"; } else { } else if(orderFrom == 3) { orderFromDesc = "线下创建"; }else if(orderFrom == 4) { orderFromDesc = "抽奖"; }else if(orderFrom == 5) { orderFromDesc = "美团"; }else if(orderFrom == 6) { orderFromDesc = "抖音"; }else if(orderFrom == 7) { orderFromDesc = "快手"; } } else { orderFromDesc = "商城订单"; @@ -5575,11 +5584,12 @@ @Override @Transactional // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 public void autoCancelOrder(String orderId) { public void autoCancelOrder(String orderId, Integer cancelType) { //更新订单信息 Order order = this.getById(orderId); order.setOrderStatus(0); order.setCancelTime(new Date()); order.setCancelType(cancelType); this.saveOrUpdate(order); //活动订单回退库存 if (order.getOrderFrom() == 2) { @@ -5791,11 +5801,12 @@ @Override @Transactional // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 public void refundOrder(String orderId) { public void refundOrder(String orderId, Integer cancelType) { // 更新订单信息 Order order = this.getById(orderId); order.setOrderStatus(0); order.setCancelTime(new Date()); order.setCancelType(cancelType); this.saveOrUpdate(order); OrderRefund orderRefund = new OrderRefund(); String refundId = IdUtils.simpleUUID(); @@ -6534,64 +6545,39 @@ } } // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 private void autoTimeCancelOrder(Order order) { String orderId = order.getOrderId(); /** * 后台取消订单 * 订单状态变为已取消 不退款 * @param dto */ @Override public R cancelOrderBySys(CancelOrderDTO dto) { Order order = this.getById(dto.getOrderId()); // 订单状态-1.删除 0.已取消 1.待支付 2.待核销 3.已完成 if(null == order || order.getDelFlag() == -1){ return R.fail("订单不存在"); } if (order.getOrderStatus() == 0) { return R.fail(AppErrorConstant.CANCEL_CANCEL_ORDER); } else if (order.getOrderStatus() == 1) { //删除待支付超时取消延时任务 redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId()); remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+order.getOrderId()); order.setOrderStatus(0); order.setCancelTime(new Date()); order.setCancelType(1); this.saveOrUpdate(order); //活动订单回退库存 if (order.getOrderFrom() == 2) { List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId); if (orderGoodsList != null && !orderGoodsList.isEmpty()) { for (OrderGoods orderGoods : orderGoodsList) { //redis库存控制极简版 String goodsLock = "goods_lock_" + order.getActivityId() + "_" + orderGoods.getGoodsId(); RLock redissonLock = redissonClient.getLock(goodsLock); try { redissonLock.lock(30, TimeUnit.SECONDS); Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId()); if(null == surpNum){ surpNum = 0; } redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum()); } finally { redissonLock.unlock(); } //改变活动库存 AGStockChangeDto agStockChangeDto = new AGStockChangeDto(); agStockChangeDto.setActivityId(order.getActivityId()); agStockChangeDto.setGoodsId(orderGoods.getGoodsId()); agStockChangeDto.setChangeType(1); agStockChangeDto.setChangeNum(orderGoods.getBuyNum()); agStockChangeDto.setShopId(order.getShopId()); agStockChangeDto.setUserId(order.getUserId()); remoteActivityService.changeActivityStock(agStockChangeDto); //删除活动记录 ActivityRecord activityRecord = new ActivityRecord(); activityRecord.setActivityId(order.getActivityId()); activityRecord.setGoodsId(orderGoods.getGoodsId()); activityRecord.setUserId(order.getUserId()); activityRecord.setOrderTime(order.getCreateTime()); remoteActivityService.delActivityRecord(activityRecord); } } } else if (order.getOrderStatus() == 2) { // 2.待核销 order.setOrderStatus(0); order.setCancelTime(new Date()); order.setCancelType(1); this.saveOrUpdate(order); } else { if (order.getCouponMoney().compareTo(BigDecimal.ZERO) > 0) { //回退优惠券 List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId); if (orderGoodsList != null && !orderGoodsList.isEmpty()) { StringJoiner memberCouponSJ = new StringJoiner(","); for (OrderGoods orderGoods : orderGoodsList) { memberCouponSJ.add(orderGoods.getCouponId()); return R.fail(AppErrorConstant.CANCEL_ERROR_ORDER); } if (memberCouponSJ != null) { remoteCouponService.backMemberCoupon(memberCouponSJ.toString()); } } } } return R.ok(); } /** @@ -6732,38 +6718,6 @@ } return new ArrayList<>(); } /** * 后台取消订单 * 订单状态变为已取消 不退款 * @param dto */ @Override public R cancelOrderBySys(CancelOrderDTO dto) { Order order = this.getById(dto.getOrderId()); // 订单状态-1.删除 0.已取消 1.待支付 2.待核销 3.已完成 if(null == order || order.getDelFlag() == -1){ return R.fail("订单不存在"); } if (order.getOrderStatus() == 0) { return R.fail(AppErrorConstant.CANCEL_CANCEL_ORDER); } else if (order.getOrderStatus() == 1) { //删除待支付超时取消延时任务 redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId()); remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+order.getOrderId()); order.setOrderStatus(0); order.setCancelTime(new Date()); this.saveOrUpdate(order); } else if (order.getOrderStatus() == 2) { // 2.待核销 order.setOrderStatus(0); order.setCancelTime(new Date()); this.saveOrUpdate(order); } else { return R.fail(AppErrorConstant.CANCEL_ERROR_ORDER); } return R.ok(); } @Override public R refundOrderBySys(CancelOrderDTO dto) { @@ -6778,10 +6732,10 @@ //删除待支付超时取消延时任务 redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId()); remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+ order.getOrderId()); this.autoCancelOrder( order.getOrderId()); this.autoCancelOrder( order.getOrderId(), 1); } else if (order.getOrderStatus() == 2) { // 2.待核销 -> 订单退款 this.refundOrder( order.getOrderId()); this.refundOrder( order.getOrderId(), 1); } else { return R.fail("已核销订单不能退款"); } @@ -6789,6 +6743,67 @@ } // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 private void autoTimeCancelOrder(Order order) { String orderId = order.getOrderId(); order.setOrderStatus(0); order.setCancelTime(new Date()); order.setCancelType(1); this.saveOrUpdate(order); //活动订单回退库存 if (order.getOrderFrom() == 2) { List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId); if (orderGoodsList != null && !orderGoodsList.isEmpty()) { for (OrderGoods orderGoods : orderGoodsList) { //redis库存控制极简版 String goodsLock = "goods_lock_" + order.getActivityId() + "_" + orderGoods.getGoodsId(); RLock redissonLock = redissonClient.getLock(goodsLock); try { redissonLock.lock(30, TimeUnit.SECONDS); Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId()); if(null == surpNum){ surpNum = 0; } redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum()); } finally { redissonLock.unlock(); } //改变活动库存 AGStockChangeDto agStockChangeDto = new AGStockChangeDto(); agStockChangeDto.setActivityId(order.getActivityId()); agStockChangeDto.setGoodsId(orderGoods.getGoodsId()); agStockChangeDto.setChangeType(1); agStockChangeDto.setChangeNum(orderGoods.getBuyNum()); agStockChangeDto.setShopId(order.getShopId()); agStockChangeDto.setUserId(order.getUserId()); remoteActivityService.changeActivityStock(agStockChangeDto); //删除活动记录 ActivityRecord activityRecord = new ActivityRecord(); activityRecord.setActivityId(order.getActivityId()); activityRecord.setGoodsId(orderGoods.getGoodsId()); activityRecord.setUserId(order.getUserId()); activityRecord.setOrderTime(order.getCreateTime()); remoteActivityService.delActivityRecord(activityRecord); } } } else { if (order.getCouponMoney().compareTo(BigDecimal.ZERO) > 0) { //回退优惠券 List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId); if (orderGoodsList != null && !orderGoodsList.isEmpty()) { StringJoiner memberCouponSJ = new StringJoiner(","); for (OrderGoods orderGoods : orderGoodsList) { memberCouponSJ.add(orderGoods.getCouponId()); } if (memberCouponSJ != null) { remoteCouponService.backMemberCoupon(memberCouponSJ.toString()); } } } } } @Override public List<MgtThirdOrderPageVo> pageMgtThirdOrder(Page<MgtThirdOrderPageVo> page, MgtThirdOrderPageDto dto) { //如果区域代码不为null获取对应的商户id ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/UserServiceRecordServiceImpl.java
@@ -106,14 +106,14 @@ } /** * @param shopId * @return Integer * @description 统计商户到店人数 * @author jqs * @date 2023/6/25 17:17 * @param shopId * @return Integer */ @Override public Integer countShopServicePerson(Long shopId){ public List<Integer> countShopServicePerson(Long shopId) { return userServiceRecordMapper.countShopServicePerson(shopId); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -443,7 +443,7 @@ * @param orderId * @return void */ void autoCancelOrder(String orderId); void autoCancelOrder(String orderId, Integer cancelType); /** * @description 订单支付回调 @@ -458,7 +458,7 @@ * 取消订单 * @param orderId */ void refundOrder(String orderId); void refundOrder(String orderId, Integer cancelType); /** * @description 员工端活动订单统计 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/UserServiceRecordService.java
@@ -1,11 +1,11 @@ package com.ruoyi.order.service.order; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.domain.dto.AppConsumerPageDto; import com.ruoyi.order.domain.dto.MerServiceRecordPageDto; import com.ruoyi.order.domain.dto.MgtMemberServiceRecordPageDto; import com.ruoyi.order.domain.pojo.order.UserServiceRecord; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.domain.vo.AppServiceRecordPageVo; import com.ruoyi.order.domain.vo.MerServiceRecordPageVo; import com.ruoyi.order.domain.vo.MgtMemberServiceRecordPageVo; @@ -55,11 +55,11 @@ MgtMemberServiceTotalVo getMgtMemberServiceTotal(Long userId); /** * @param shopId * @return Integer * @description 统计商户到店人数 * @author jqs * @date 2023/6/25 17:17 * @param shopId * @return Integer */ Integer countShopServicePerson(Long shopId); List<Integer> countShopServicePerson(Long shopId); } ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -36,6 +36,7 @@ <result column="shopId" property="shopId" /> <result column="orderFrom" property="orderFrom" /> <result column="createTime" property="createTime" /> <result column="cancelType" property="cancelType" /> <collection property="appUserOrderGoodsPageVoList" ofType="com.ruoyi.order.domain.vo.AppUserOrderGoodsPageVo" select="listOrderGoodsByOrderId" @@ -87,6 +88,7 @@ <result column="orderRemark" property="orderRemark" /> <result column="orderFrom" property="orderFrom" /> <result column="createTime" property="createTime" /> <result column="tripartiteOrderId" property="tripartiteOrderId" /> <collection property="merOrderGoodsVoList" ofType="com.ruoyi.order.domain.vo.MerOrderGoodsPageVo" select="listSimpleOrderGoodsByOrderId" @@ -296,7 +298,8 @@ toc.receivable_money receivableMoney, toc.goods_num goodsNum, toc.shop_id shopId, toc.create_time createTime toc.create_time createTime, toc.cancel_type cancelType, FROM t_order toc WHERE toc.del_flag = 0 <if test="param.userId != null"> @@ -380,7 +383,8 @@ toc.order_from orderFrom, CASE toc.order_from WHEN 1 THEN '商城订单' WHEN 2 THEN CONCAT('平台秒杀活动(',toc.activity_name,')') WHEN 3 THEN '线下创建' END orderFromDesc, toc.activity_name activityName toc.activity_name activityName, toc.tripartite_order_id tripartiteOrderId FROM t_order toc WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId} <if test="param.memberUserId != null and param.memberUserId != ''"> ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml
@@ -122,16 +122,18 @@ </select> <select id="getMgtMemberServiceTotal" resultType="com.ruoyi.order.domain.vo.MgtMemberServiceTotalVo"> SELECT COUNT(consumer_goods_id) cycleTotal, SELECT COUNT(consumer_goods_id) cycleTotal, IFNULL(SUM(service_num),0) cycleCount, IFNULL(SUM(service_num-used_num),0) surpCycleCount FROM t_consumer_goods WHERE del_flag = 0 AND goods_type = 1 AND cycle_num_flag = 1 AND user_id = #{userId} WHERE del_flag = 0 AND goods_type = 1 AND cycle_num_flag = 1 AND user_id = #{userId} </select> <select id="countShopServicePerson" resultType="java.lang.Integer"> SELECT COUNT(DISTINCT user_id) <select id="countShopServicePerson" resultType="list"> SELECT DISTINCT user_id FROM t_user_service_record WHERE shop_id = #{shopId} AND DATE(create_time) = CURDATE() </select> ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/business/MerShopController.java
@@ -28,7 +28,10 @@ import javax.annotation.Resource; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** @@ -231,6 +234,15 @@ } @RequestMapping(value = "/delShopNonAppointableTime/{id}", method = RequestMethod.POST) @ApiOperation(value = "门店删除不可预约时间段【2.0】") public R delShopNonAppointableTime(@PathVariable("id") String id) { shopNonAppointableTimeService.removeById(id); return R.ok(); } @RequestMapping(value = "/switchAppointment/{shopId}/{subscribe}", method = RequestMethod.POST) @ApiOperation(value = "开关门店预约配置【2.0】") @ApiImplicitParams({ ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java
@@ -24,10 +24,7 @@ import com.ruoyi.system.api.model.QwUserDetailDto; import com.ruoyi.system.api.service.RemoteUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; @@ -484,4 +481,16 @@ List<Shop> getShopListByShopName(@RequestBody String content){ return shopService.getBaseMapper().selectList(new LambdaQueryWrapper<Shop>().like(Shop::getShopName, content)); } /** * 获取有跟进任务的用户id * @param shopId * @return */ @PostMapping("/getMemberIngTotal") public R<List<Integer>> getMemberIngTotal(@RequestParam("shopId") Long shopId){ List<Integer> list = memberTaskService.getMemberIngTotal(shopId); return R.ok(list); } } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/MemberTaskMapper.java
@@ -36,7 +36,7 @@ * @param shopId * @return Integer */ Integer getMemberIngTotal(@Param("shopId")Long shopId); List<Integer> getMemberIngTotal(@Param("shopId")Long shopId); /** ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopAppointableTimeServiceImpl.java
@@ -62,7 +62,11 @@ Member member = remoteMemberService.getMember(shopAppointableTime.getUserId()).getData(); shopAppointableTimeListVo.setUserName(member.getRealName()); shopAppointableTimeListVo.setMobile(member.getMobile()); if (null == member.getGender()) { shopAppointableTimeListVo.setSex("未知"); } else { shopAppointableTimeListVo.setSex(member.getGender() == 1 ? "女" : member.getGender() == 0 ? "男" : "未知"); } list.add(shopAppointableTimeListVo); }); return list; ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -966,8 +966,8 @@ merHomeShopTotalVo.setShopType(shop.getShopType()); merHomeShopTotalVo.setTodayShop(orderVo.getTodayShop()); merHomeShopTotalVo.setUnHandleOrder(orderVo.getUnHandleOrder()); Integer taskCount = memberTaskService.getMemberIngTotal(shopId); merHomeShopTotalVo.setTask(taskCount); List<Integer> taskCount = memberTaskService.getMemberIngTotal(shopId); merHomeShopTotalVo.setTask(taskCount.size()); merHomeShopTotalVo.setShopTurnover(orderVo.getShopTurnover()); merHomeShopTotalVo.setCycleSurp(orderVo.getCycleSurp()); merHomeShopTotalVo.setExplorationSurp(orderVo.getExplorationSurp()); @@ -1580,11 +1580,11 @@ // 通过远程订单服务获取商店总览信息 MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData(); // 获取商店任务计数 Integer taskCount = memberTaskService.getMemberIngTotal(shopId); List<Integer> taskCount = memberTaskService.getMemberIngTotal(shopId); // 设置员工商店信息对象的属性 staffShopInfoGetVo.setTodayReservation(0); staffShopInfoGetVo.setUnHandleOrder(orderVo.getUnHandleOrder()); staffShopInfoGetVo.setShopTask(taskCount); staffShopInfoGetVo.setShopTask(taskCount.size()); staffShopInfoGetVo.setShopTurnover(orderVo.getShopTurnover()); staffShopInfoGetVo.setCycleSurp(orderVo.getCycleSurp()); staffShopInfoGetVo.setExplorationSurp(orderVo.getExplorationSurp()); ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java
@@ -1,6 +1,7 @@ package com.ruoyi.shop.service.impl.task; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.uuid.IdUtils; @@ -12,7 +13,6 @@ import com.ruoyi.shop.mapper.task.MemberTaskMapper; import com.ruoyi.shop.service.task.MemberTaskRecordService; import com.ruoyi.shop.service.task.MemberTaskService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.shop.service.task.TaskFileService; import com.ruoyi.system.api.domain.dto.MemberTotalChangeDto; import com.ruoyi.system.api.domain.vo.MemberTaskSimpleVo; @@ -237,7 +237,7 @@ * @return Integer */ @Override public Integer getMemberIngTotal(Long shopId) { public List<Integer> getMemberIngTotal(Long shopId) { return memberTaskMapper.getMemberIngTotal(shopId); } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/MemberTaskService.java
@@ -51,7 +51,7 @@ * @param shopId * @return Integer */ Integer getMemberIngTotal(Long shopId); List<Integer> getMemberIngTotal(Long shopId); /** * @description 获取最近任务 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml
@@ -92,8 +92,8 @@ </select> <select id="getMemberIngTotal" resultType="java.lang.Integer"> SELECT COUNT(task_id) <select id="getMemberIngTotal" resultType="list"> SELECT user_id FROM t_member_task WHERE del_flag = 0 AND task_status = 1 AND shop_id = #{shopId} AND task_date = CURRENT_DATE() </select>