ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
@@ -84,7 +84,7 @@ String ACTIVITY_END = "活动已经结束"; String ACTIVITY_GOODS_NULL = "商品已售罄"; String ACTIVITY_GOODS_NULL = "商品已被抢完"; String ACTIVITY_GOODS_BEYOND = "超出商品购买限制"; @@ -101,4 +101,6 @@ String ACTIVITY_TIME_ERROR = "只能选择大于当前时间作为开始时间"; String TRANS_NOT_MYSELF = "不能转移给自己"; String GOODS_SURE_FAILED = "商品没有确认次数"; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/DelayTaskEnum.java
@@ -10,7 +10,7 @@ @Getter public enum DelayTaskEnum { ORDER_AUTOMATIC_CANCEL("订单延时任务-自动关闭","15分钟后订单自动关闭"), ORDER_AUTOMATIC_CANCEL("订单延时任务-自动关闭","超时订单自动关闭"), COUPON_SEND_DELAY_TASK("优惠券延时任务","定时启动优惠券发送"), ACTIVITY_START_TASK("活动延时任务","定时开始任务"), ACTIVITY_END_TASK("活动延时任务","定时结束任务"), ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerGoodsController.java
@@ -8,6 +8,7 @@ import com.ruoyi.goods.domain.dto.MgtSelectGoodsPageDto; import com.ruoyi.goods.domain.vo.MerGoodsPageVo; import com.ruoyi.goods.service.goods.GoodsService; import com.ruoyi.system.api.domain.dto.MerBaseDto; import com.ruoyi.system.api.domain.vo.MgtSelectGoodsPageVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -46,6 +47,13 @@ return R.ok(page.setRecords(merGoodsPageVoList)); } @RequestMapping(value = "/listMerCycleGoods", method = RequestMethod.POST) @ApiOperation(value = "获取商户周期商品列表") public R<List<MerGoodsPageVo>> listMerCycleGoods(@RequestBody MerBaseDto merBaseDto) { List<MerGoodsPageVo> merGoodsPageVoList = goodsService.listMerCycleGoods(merBaseDto.getShopId()); return R.ok(merGoodsPageVoList); } @RequestMapping(value = "/editMerShopGoods", method = RequestMethod.POST) @ApiOperation(value = "编辑商户商品价格") public R editMerShopGoods(@RequestBody MerShopGoodsEditDto merShopGoodsEditDto) { ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/goods/GoodsMapper.java
@@ -69,6 +69,15 @@ List<MerGoodsPageVo> pageMerShopGoods(Page page, @Param("param")MerGoodsPageDto merGoodsPageDto); /** * @description 获取确认次数周期商品 * @author jqs * @date 2023/7/31 16:49 * @param shopId * @return List<MerGoodsPageVo> */ List<MerGoodsPageVo> listMerCycleGoods (@Param("shopId")Long shopId); /** * 平台分页获取商品 * @param page * @param mgtGoodsPageDto ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java
@@ -76,6 +76,15 @@ List<MerGoodsPageVo> pageMerShopGoods(Page page,MerGoodsPageDto merGoodsPageDto); /** * @description 获取确认次数周期商品 * @author jqs * @date 2023/7/31 16:49 * @param shopId * @return List<MerGoodsPageVo> */ List<MerGoodsPageVo> listMerCycleGoods (Long shopId); /** * 修改商户商品 * @param merShopGoodsEditDto */ ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
@@ -249,6 +249,19 @@ } /** * @description 获取确认次数周期商品 * @author jqs * @date 2023/7/31 16:49 * @param shopId * @return List<MerGoodsPageVo> */ @Override public List<MerGoodsPageVo> listMerCycleGoods (Long shopId){ List<MerGoodsPageVo> merGoodsPageVoList = goodsMapper.listMerCycleGoods(shopId); return merGoodsPageVoList; } /** * 修改商户商品 @@ -341,6 +354,13 @@ Goods goodsSame = this.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getDelFlag,0).eq(Goods::getGoodsName,mgtGoodsEditDto.getGoodsName())); // 创建MgtClassNumDto对象 MgtClassNumDto mgtClassNumDto = new MgtClassNumDto(); if(mgtGoodsEditDto.getGoodsType()!=1){ mgtGoodsEditDto.setCycleNumFlag(1); }else{ if(mgtGoodsEditDto.getCycleNumFlag()==null){ throw new ServiceException("周期商品需选择是否明确次数"); } } // 判断是否有商品ID 没有则新建 if (StringUtils.isNotBlank(goodsId)) { if(goodsSame!=null&&!Objects.equals(goodsSame.getGoodsId(), goodsId)){ ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml
@@ -313,6 +313,29 @@ </if> ORDER BY tg.create_time DESC </select> <select id="listMerCycleGoods" resultType="com.ruoyi.goods.domain.vo.MerGoodsPageVo"> SELECT tg.goods_id goodsId, tg.goods_name goodsName, tg.goods_introduction goodsIntroduction, tg.goods_type goodsType, tg.goods_tags goodsTag, IFNULL(tsg.sales_price,tg.sales_price) salesPrice, tg.sales_price suggestSalesPrice, tgf.file_url goodsPicture, tg.goods_nurses goodsNurses, tg.cycle_num_flag cycleNumFlag, tg.service_num defaultServiceNum, IFNULL(tsg.service_num,tg.service_num) serviceNum FROM t_goods tg LEFT JOIN t_goods_file tgf ON tg.goods_id = tgf.goods_id AND tgf.del_flag = 0 AND tgf.file_type = 1 LEFT JOIN t_shop_goods tsg ON tg.goods_id = tsg.goods_id AND tsg.shop_id = #{param.shopId} AND tsg.del_flag = 0 WHERE tg.del_flag = 0 AND tg.goods_status = 1 AND tg.goods_type = 1 AND cycle_num_flag = 1 ORDER BY tg.create_time DESC </select> <select id="pageMgtGoods" resultType="com.ruoyi.goods.domain.vo.MgtGoodsPageVo"> SELECT tg.goods_id goodsId, ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java
@@ -1,5 +1,6 @@ package com.ruoyi.member.domain.dto; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.system.api.domain.dto.MgtBaseDto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -42,6 +43,7 @@ private Integer sendTimeType; @ApiModelProperty(value="发送时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date sendTime; @ApiModelProperty(value = "使用范围1.全场2.指定商品") ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/scheduler/MemberScheduler.java
@@ -43,7 +43,7 @@ /** * 定时检查优惠券过期 */ @Scheduled(cron="1 0 * * * ?") @Scheduled(cron="1 0 0 * * ?") private void timingCheckMemberCoupon(){ if(schedulerUtils.getSchedulerRun()) { log.info("定时检查优惠券过期任务开始执行"); @@ -51,7 +51,7 @@ } } @Scheduled(cron="3 0 * * * ?") @Scheduled(cron="3 0 0 * * ?") private void timinginitIntegralFlag(){ if(schedulerUtils.getSchedulerRun()) { log.info("定时更新用户每日任务标记"); ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -685,6 +685,11 @@ member.setBirthday(merMemberEditDto.getBirthday()); member.setUpdateUserId(merMemberEditDto.getUserId()); member.setUpdateTime(new Date()); List<String> memberNurse = merMemberEditDto.getMemberNurse(); if(memberNurse!=null&&!memberNurse.isEmpty()){ String memberNurseString = String.join(",", memberNurse); member.setMemberNurse(memberNurseString); } this.saveOrUpdate(member); // 更新用户手机号 SysUser sysUser = new SysUser(); ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -27,10 +27,11 @@ <result property="bindingFlag" column="binding_flag" /> <result property="goodsType" column="goods_type" /> <result property="relationShopName" column="relation_shop_name" /> <result property="memberNurse" column="member_nurse" /> </resultMap> <sql id="selectMemberVo"> select user_id, del_flag, member_id, member_no, wx_openid, mini_openid, wx_unionid, relation_shop_id, nick_name, real_name, mobile, gender, referrer, customer_source, level, birthday, create_time, update_time, update_user_id, user_tags, avatar, binding_flag, goods_type,relation_shop_name from t_member select user_id, del_flag, member_id, member_no, wx_openid, mini_openid, wx_unionid, relation_shop_id, nick_name, real_name, mobile, gender, referrer, customer_source, level, birthday, create_time, update_time, update_user_id, user_tags, avatar, binding_flag, goods_type,relation_shop_name,member_nurse from t_member </sql> <select id="selectMemberList" parameterType="com.ruoyi.system.api.domain.poji.member.Member" resultMap="MemberResult"> @@ -257,7 +258,7 @@ AND Date(tm.create_time) = #{param.createTime} </if> <if test="param.lastPayTime != null and param.lastPayTime != ''"> AND tmt.last_pay_time = #{param.lastPayTime} AND Date(tmt.last_pay_time) = #{param.lastPayTime} </if> <if test="param.memberFlag != null "> AND tm.binding_flag = #{param.memberFlag} ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml
@@ -80,6 +80,6 @@ <if test="param.shopIds!=null and param.shopIds!=''"> AND tms.shop_id IN (#{param.shopIds}) </if> ORDER BY tms.create_time DESC ORDER BY tms.replay_flag ASC,tms.create_time DESC </select> </mapper> ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberTotalMapper.xml
@@ -3,7 +3,7 @@ <mapper namespace="com.ruoyi.member.mapper.member.MemberTotalMapper"> <update id="initIntegralFlag"> UPDATE member_total SET share_flag = 0,pl_suggest_flag = 0,shop_suggest_flag = 0,sign_flag = 0,buy_flag = 0 UPDATE t_member_total SET share_flag = 0,pl_suggest_flag = 0,shop_suggest_flag = 0,sign_flag = 0,buy_flag = 0 </update> ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerSureConsumerGoodsDto.java
@@ -19,6 +19,9 @@ @ApiModelProperty(value = "会员用户id") private Long memberUserId; @ApiModelProperty(value = "服务id") private String consumerGoodsId; @ApiModelProperty(value = "确认服务列表") private List<MerSureConsumerGoodsListDto> merSureConsumerGoodsListDtoList; ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerSureConsumerGoodsListDto.java
@@ -13,10 +13,15 @@ @Data public class MerSureConsumerGoodsListDto { @ApiModelProperty(value = "服务id") private String consumerGoodsId; @ApiModelProperty(value = "服务次数") private Integer serviceNum; @ApiModelProperty(value = "商品id") private String goodsId; @ApiModelProperty(value = "商品次数") private Integer goodsNum; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java
@@ -134,6 +134,9 @@ @TableField("member_coupon_id") private String memberCouponId; @TableField("sure_num") private Integer sureNum; @Override protected Serializable pkVal() { return this.consumerGoodsId; ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppUserOrderGetVo.java
@@ -88,4 +88,8 @@ @ApiModelProperty(value = "核销码") private String verifyCode; @ApiModelProperty(value="结束时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date endTime; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerConsumerGoodsListVo.java
@@ -45,4 +45,7 @@ @ApiModelProperty(value="消耗次数") private Integer usedNum; @ApiModelProperty(value="待确认次数") private Integer sureNum; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
@@ -471,10 +471,10 @@ * @description 获取各年龄层统计 * @author jqs * @date 2023/7/4 10:27 * @param userIdList * @param merTotalDto * @return MgtMapTotalPlusVo */ MgtMapTotalPlusVo listMerOrderDistributionTotal(@Param("userIdList")List<Long> userIdList); List<MgtMapTotalPlusVo> listMerOrderDistributionTotal(@Param("param")MerTotalDto merTotalDto); /** * @description 商户获取销售占比统计 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
@@ -96,6 +96,10 @@ @Override @Transactional public void sureMerConsumerGoods(MerSureConsumerGoodsDto merSureConsumerGoodsDto){ ConsumerGoods oldConsumerGoods = this.getById(merSureConsumerGoodsDto.getConsumerGoodsId()); if(oldConsumerGoods.getSureNum()==null||oldConsumerGoods.getSureNum()<1){ throw new ServiceException(AppErrorConstant.GOODS_SURE_FAILED); } List<MerSureConsumerGoodsListDto> merSureConsumerGoodsListDtoList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList(); if(merSureConsumerGoodsListDtoList!=null && !merSureConsumerGoodsListDtoList.isEmpty()){ ConsumerGoods consumerGoods; @@ -106,27 +110,68 @@ Integer servicePerson = 0; Integer experienceService = 0; Integer experiencePerson = 0; Goods goods; GoodsFile goodsFile; String consumerGoodsId; List<ConsumerGoods> consumerGoodsList = new ArrayList<>(); MerMemberConsumerGoodsTotalVo memberConsumerGoodsTotalVo = this.getMemberConsumerGoodsTotalVo(merSureConsumerGoodsDto.getUserId(), merSureConsumerGoodsDto.getShopId()); int sureNum = 0; for(MerSureConsumerGoodsListDto merSureConsumerGoodsListDto : merSureConsumerGoodsListDtoList){ consumerGoods = this.getById(merSureConsumerGoodsListDto.getConsumerGoodsId()); consumerGoods.setCycleNumFlag(1); consumerGoods.setServiceNum(merSureConsumerGoodsListDto.getServiceNum()); this.saveOrUpdate(consumerGoods); //处理商品服务次数 switch (consumerGoods.getGoodsType()) { case 1: cycleService = cycleService + consumerGoods.getServiceNum(); break; case 2: serviceService = serviceService + consumerGoods.getServiceNum(); break; case 3: experienceService = experienceService + consumerGoods.getServiceNum(); break; default: break; goods = remoteGoodsService.getGoods(merSureConsumerGoodsListDto.getGoodsId()).getData(); goodsFile = remoteGoodsService.getGoodsFile(goods.getGoodsId()).getData(); if(goods!=null&&goods.getGoodsType()==1&&goods.getCycleNumFlag()==1){ for(int i=0;i<merSureConsumerGoodsListDto.getGoodsNum();i++){ consumerGoods = new ConsumerGoods(); consumerGoodsId = IdUtils.simpleUUID(); consumerGoods.setConsumerGoodsId(consumerGoodsId); consumerGoods.setDelFlag(0); consumerGoods.setServiceStatus(1); consumerGoods.setShopId(merSureConsumerGoodsDto.getShopId()); consumerGoods.setUserId(merSureConsumerGoodsDto.getMemberUserId()); consumerGoods.setOrderId(oldConsumerGoods.getOrderId()); consumerGoods.setOrderGoodsId(oldConsumerGoods.getOrderGoodsId()); consumerGoods.setGoodsId(goods.getGoodsId()); consumerGoods.setGoodsName(goods.getGoodsName()); consumerGoods.setCycleNumFlag(goods.getCycleNumFlag()); consumerGoods.setServiceNum(goods.getServiceNum()); consumerGoods.setUsedNum(0); consumerGoods.setCreateTime(new Date()); consumerGoods.setGoodsType(goods.getGoodsType()); consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); consumerGoods.setGoodsPicture(goodsFile.getFileUrl()); consumerGoods.setGoodsNurses(goods.getGoodsNurses()); consumerGoods.setSourceFrom(1); consumerGoodsList.add(consumerGoods); //处理商品服务次数 switch (consumerGoods.getGoodsType()) { case 1: cycleService = cycleService + consumerGoods.getServiceNum(); break; case 2: serviceService = serviceService + consumerGoods.getServiceNum(); break; case 3: experienceService = experienceService + consumerGoods.getServiceNum(); break; default: break; } sureNum = sureNum + 1; } } } if(sureNum>oldConsumerGoods.getSureNum()){ throw new ServiceException(AppErrorConstant.GOODS_SURE_FAILED); }else{ int surpNum = oldConsumerGoods.getSureNum(); surpNum = surpNum - sureNum; oldConsumerGoods.setSureNum(surpNum); if(surpNum==0){ oldConsumerGoods.setDelFlag(1); } this.saveOrUpdate(oldConsumerGoods); } this.saveBatch(consumerGoodsList); //判断是否加人 if (cycleService > 0 && memberConsumerGoodsTotalVo.getCycleOrder() == 0) { cyclePerson = 1; ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -415,8 +415,12 @@ if (activityGoodsGetVo.getActivityStatus() == 2) { throw new ServiceException(AppErrorConstant.ACTIVITY_END); } if (activityGoodsGetVo.getAvailableBuyNum() < 1) { Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+activityId+"-"+goodsId); if(surpNum==null||surpNum<1){ throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL); } if (activityGoodsGetVo.getAvailableBuyNum() < 1) { throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND); } if (activityGoodsGetVo.getAvailableBuyNum() < buyNum) { throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND); @@ -1122,6 +1126,12 @@ appUserOrderGetVo.setShopName(shop.getShopName()); appUserOrderGetVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); appUserOrderGetVo.setVerifyCode("1-" + orderId); //生成自动取消订单延时任务 Integer delayTime = 30; if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){ delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } appUserOrderGetVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(),delayTime)); return appUserOrderGetVo; } @@ -1274,28 +1284,57 @@ Goods goods; List<ConsumerGoods> consumerGoodsList = new ArrayList<>(); for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { consumerGoods = new ConsumerGoods(); goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); consumerGoodsId = IdUtils.simpleUUID(); consumerGoods.setConsumerGoodsId(consumerGoodsId); consumerGoods.setDelFlag(0); consumerGoods.setServiceStatus(1); consumerGoods.setShopId(order.getShopId()); consumerGoods.setUserId(order.getUserId()); consumerGoods.setOrderId(orderId); consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); consumerGoods.setUsedNum(0); consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); consumerGoods.setCreateTime(nowTime); consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); consumerGoods.setGoodsNurses(goods.getGoodsNurses()); consumerGoods.setSourceFrom(1); consumerGoodsList.add(consumerGoods); Integer buyNum = appUserOrderGoodsPageVo.getBuyNum(); if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){ consumerGoods = new ConsumerGoods(); goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); consumerGoodsId = IdUtils.simpleUUID(); consumerGoods.setConsumerGoodsId(consumerGoodsId); consumerGoods.setDelFlag(0); consumerGoods.setServiceStatus(1); consumerGoods.setShopId(order.getShopId()); consumerGoods.setUserId(order.getUserId()); consumerGoods.setOrderId(orderId); consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); consumerGoods.setUsedNum(0); consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); consumerGoods.setCreateTime(nowTime); consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); consumerGoods.setGoodsNurses(goods.getGoodsNurses()); consumerGoods.setSourceFrom(1); consumerGoods.setSureNum(buyNum); consumerGoodsList.add(consumerGoods); }else{ for(int i=0;i<buyNum;i++){ consumerGoods = new ConsumerGoods(); goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); consumerGoodsId = IdUtils.simpleUUID(); consumerGoods.setConsumerGoodsId(consumerGoodsId); consumerGoods.setDelFlag(0); consumerGoods.setServiceStatus(1); consumerGoods.setShopId(order.getShopId()); consumerGoods.setUserId(order.getUserId()); consumerGoods.setOrderId(orderId); consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); consumerGoods.setUsedNum(0); consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); consumerGoods.setCreateTime(nowTime); consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); consumerGoods.setGoodsNurses(goods.getGoodsNurses()); consumerGoods.setSourceFrom(1); consumerGoodsList.add(consumerGoods); } } } consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList); //生成返回 @@ -1792,29 +1831,61 @@ List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); ConsumerGoods consumerGoods; String consumerGoodsId; List<ConsumerGoods> consumerGoodsList = new ArrayList<>(); for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { consumerGoods = new ConsumerGoods(); goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData(); consumerGoodsId = IdUtils.simpleUUID(); consumerGoods.setConsumerGoodsId(consumerGoodsId); consumerGoods.setDelFlag(0); consumerGoods.setServiceStatus(1); consumerGoods.setShopId(order.getShopId()); consumerGoods.setUserId(order.getUserId()); consumerGoods.setOrderId(orderId); consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); consumerGoods.setUsedNum(0); consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); consumerGoods.setCreateTime(nowTime); consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); consumerGoods.setGoodsNurses(goods.getGoodsNurses()); consumerGoodsService.save(consumerGoods); Integer buyGoodsNum = appUserOrderGoodsPageVo.getBuyNum(); if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){ consumerGoods = new ConsumerGoods(); goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData(); consumerGoodsId = IdUtils.simpleUUID(); consumerGoods.setConsumerGoodsId(consumerGoodsId); consumerGoods.setDelFlag(0); consumerGoods.setServiceStatus(1); consumerGoods.setShopId(order.getShopId()); consumerGoods.setUserId(order.getUserId()); consumerGoods.setOrderId(orderId); consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); consumerGoods.setUsedNum(0); consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); consumerGoods.setCreateTime(nowTime); consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); consumerGoods.setGoodsNurses(goods.getGoodsNurses()); consumerGoods.setSourceFrom(1); consumerGoods.setSureNum(buyGoodsNum); consumerGoodsList.add(consumerGoods); }else{ for(int i=0;i<buyGoodsNum;i++) { consumerGoods = new ConsumerGoods(); goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData(); consumerGoodsId = IdUtils.simpleUUID(); consumerGoods.setConsumerGoodsId(consumerGoodsId); consumerGoods.setDelFlag(0); consumerGoods.setServiceStatus(1); consumerGoods.setShopId(order.getShopId()); consumerGoods.setUserId(order.getUserId()); consumerGoods.setOrderId(orderId); consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); consumerGoods.setUsedNum(0); consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); consumerGoods.setCreateTime(nowTime); consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); consumerGoods.setGoodsNurses(goods.getGoodsNurses()); consumerGoods.setSourceFrom(1); consumerGoodsList.add(consumerGoods); } } } consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList); Member member = remoteMemberService.getMember(userId).getData(); if (member != null && member.getBindingFlag() != 1) { //绑定商户 @@ -3004,9 +3075,9 @@ } MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo(); // 获取订单年龄用户列表 List<MerOrderAgeUserVo> orderAgeUserVoList = remoteMemberService.listOrderAgeUser(merTotalDto).getData(); //List<MerOrderAgeUserVo> orderAgeUserVoList = remoteMemberService.listOrderAgeUser(merTotalDto).getData(); // 如果订单年龄用户列表不为空 if (orderAgeUserVoList != null && !orderAgeUserVoList.isEmpty()) { /*if (orderAgeUserVoList != null && !orderAgeUserVoList.isEmpty()) { // 定义变量 Integer ageType; List<Long> userIdList; @@ -3047,12 +3118,23 @@ orderTotalValue[i] = 0; orderMoneyValue[i] = BigDecimal.ZERO; } }*/ List<MgtMapTotalPlusVo> mgtMapTotalPlusVoList = orderMapper.listMerOrderDistributionTotal(merTotalDto); if(mgtMapTotalPlusVoList!=null&&!mgtMapTotalPlusVoList.isEmpty()) { String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()]; Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()]; BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()]; MgtMapTotalPlusVo mgtMapTotalPlusVo; for (int i = 0; i < mgtMapTotalPlusVoList.size(); i++) { mgtMapTotalPlusVo = mgtMapTotalPlusVoList.get(i); orderTotalKey[i] = mgtMapTotalPlusVo.getMapKey(); orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst(); orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond(); } orderDistributionTotalVo.setOrderTotalKey(orderTotalKey); orderDistributionTotalVo.setOrderTotalValue(orderTotalValue); orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue); } // 设置订单分布总数对象的属性值 orderDistributionTotalVo.setOrderTotalKey(orderTotalKey); orderDistributionTotalVo.setOrderTotalValue(orderTotalValue); orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue); } // 返回订单分布总数对象 return orderDistributionTotalVo; } @@ -3157,11 +3239,11 @@ } /** * @param merBaseDto * @return MerTotalOrderVo * @description 商户端订单管理统计 * @author jqs * @date 2023/7/4 16:27 * @description 商户端订单管理统计 * @author jqs * @date 2023/7/31 10:53 * @param merOrderPageDto * @return MerTotalOrderVo */ @Override public MerTotalOrderVo totalMerOrder(MerOrderPageDto merOrderPageDto) { ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml
@@ -149,7 +149,8 @@ tcg.goods_nurses goodsNurses, tcg.cycle_num_flag cycleNumFlag, tcg.service_num serviceNum, tcg.used_num usedNum tcg.used_num usedNum, tcg.sure_num sureNum FROM t_consumer_goods tcg WHERE tcg.del_flag = 0 AND tcg.user_id = #{param.memberUserId} AND tcg.shop_id = #{param.shopId} AND tcg.service_status = 1 AND tcg.goods_type = 1 AND tcg.cycle_num_flag = 0 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -61,6 +61,7 @@ <result column="receivableMoney" property="receivableMoney"/> <result column="receivableDeposit" property="receivableDeposit"/> <result column="payMoney" property="payMoney"/> <result column="receiveMoney" property="receiveMoney"/> <result column="orderRemark" property="orderRemark" /> <result column="orderFrom" property="orderFrom" /> <result column="createTime" property="createTime" /> @@ -1327,13 +1328,23 @@ <select id="listMerOrderDistributionTotal" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo"> SELECT COUNT(order_id) AS mapValueFirst, IFNULL(SUM(order_money),0) AS mapValueSecond FROM t_order WHERE del_flag = 0 AND user_id IN <foreach collection="userIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> DATE(toc.create_time) AS mapKey, COUNT(DISTINCT tog.order_id) AS mapValueFirst, SUM(tog.order_money) AS mapValueSecond FROM t_order toc INNER JOIN t_order_goods tog ON toc.order_id = tog.order_id WHERE toc.del_flag = 0 AND tog.del_flag = 0 AND tog.goods_type = #{param.goodsType} <if test="param.shopId != null and param.shopId != ''"> AND shop_id = #{param.shopId} </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> AND toc.create_time >= DATE_SUB(CURDATE(), INTERVAL 5 DAY) GROUP BY mapKey </select> <select id="listMerOrderTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo"> ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerCreateAgencyTaskDto.java
@@ -23,5 +23,6 @@ @ApiModelProperty(value = "任务内容") private String taskContent; @ApiModelProperty(value="紧急情况") private String emergencyState;; } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerCreateMemberTaskDto.java
@@ -4,8 +4,6 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** * @author jqs34 * @ClassName merCreateMemberTaskDto @@ -25,5 +23,6 @@ @ApiModelProperty(value = "任务内容") private String taskContent; @ApiModelProperty(value="紧急情况") private String emergencyState;; } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowAgencyTaskDto.java
@@ -43,6 +43,9 @@ @ApiModelProperty(value="下次任务时间") private String nextTaskDate; @ApiModelProperty(value="下次任务紧急情况") private String emergencyState;; @ApiModelProperty(value="下次任务内容") private String nextTaskContent; ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowMemberTaskDto.java
@@ -43,6 +43,9 @@ @ApiModelProperty(value="下次任务时间") private String nextTaskDate; @ApiModelProperty(value="下次任务紧急情况") private String emergencyState;; @ApiModelProperty(value="下次任务内容") private String nextTaskContent; ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/AgencyTask.java
@@ -1,17 +1,15 @@ package com.ruoyi.shop.domain.pojo.task; import java.util.Date; import java.io.Serializable; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.activerecord.Model; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; /** * <p> @@ -69,7 +67,11 @@ */ @TableField("task_status") private Integer taskStatus; /** * 紧急情况 */ @TableField("emergency_state") private String emergencyState; @Override protected Serializable pkVal() { ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/MemberTask.java
@@ -1,15 +1,15 @@ package com.ruoyi.shop.domain.pojo.task; import java.util.Date; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.activerecord.Model; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; /** * <p> @@ -46,6 +46,11 @@ */ @TableField("task_status") private Integer taskStatus; /** * 紧急情况 */ @TableField("emergency_state") private String emergencyState; @Override protected Serializable pkVal() { ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskPageVo.java
@@ -3,8 +3,6 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** * @author jqs34 * @ClassName MerMemberTaskPageVo @@ -27,4 +25,8 @@ @ApiModelProperty(value="今日标记") private Integer todayFlag; @ApiModelProperty(value="紧急情况") private String emergencyState;; } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerMemberTaskPageVo.java
@@ -1,11 +1,7 @@ package com.ruoyi.shop.domain.vo; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** * @author jqs34 @@ -29,6 +25,8 @@ @ApiModelProperty(value="处理内容") private String dealContent; @ApiModelProperty(value="紧急情况") private String emergencyState;; @ApiModelProperty(value="今日标记") private Integer todayFlag; ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java
@@ -78,6 +78,7 @@ agencyTask.setAgencyId(merCreateAgencyTaskDto.getAgencyId()); agencyTask.setTaskDate(merCreateAgencyTaskDto.getTaskDate()); agencyTask.setTaskContent(merCreateAgencyTaskDto.getTaskContent()); agencyTask.setEmergencyState(merCreateAgencyTaskDto.getEmergencyState()); agencyTask.setCreateTime(new Date()); this.saveOrUpdate(agencyTask); } @@ -169,7 +170,16 @@ agencyTask.setAgencyId(oldAgencyTask.getAgencyId()); agencyTask.setTaskDate(merFollowAgencyTaskDto.getNextTaskDate()); agencyTask.setTaskContent(merFollowAgencyTaskDto.getNextTaskContent()); agencyTask.setTaskStatus(2); agencyTask.setEmergencyState(merFollowAgencyTaskDto.getEmergencyState()); String nowTimeStr = DateUtils.getDate(); int i = merFollowAgencyTaskDto.getNextTaskDate().compareTo(nowTimeStr); if(i>0){ agencyTask.setTaskStatus(0); }else if(i==0){ agencyTask.setTaskStatus(1); }else{ agencyTask.setTaskStatus(3); } agencyTask.setCreateTime(new Date()); this.saveOrUpdate(agencyTask); } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java
@@ -93,6 +93,7 @@ }else{ memberTask.setTaskStatus(3); } memberTask.setEmergencyState(merCreateMemberTaskDto.getEmergencyState()); memberTask.setShopId(merCreateMemberTaskDto.getShopId()); memberTask.setUserId(merCreateMemberTaskDto.getMemberUserId()); memberTask.setTaskDate(merCreateMemberTaskDto.getTaskDate()); @@ -205,6 +206,7 @@ memberTask.setUserId(oldMemberTask.getUserId()); memberTask.setTaskDate(merFollowMemberTaskDto.getNextTaskDate()); memberTask.setTaskContent(merFollowMemberTaskDto.getNextTaskContent()); memberTask.setEmergencyState(merFollowMemberTaskDto.getEmergencyState()); int i = merFollowMemberTaskDto.getNextTaskDate().compareTo(nowTimeStr); if(i>0){ memberTask.setTaskStatus(0); ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -339,8 +339,11 @@ <if test="param.signAreaCode!=null and param.signAreaCode!=''"> AND ts.sign_area_code = #{param.signAreaCode} </if> <if test="param.shopStatus!=null and param.shopStatus!=''"> AND ts.shop_status = #{param.shopStatus} <if test="param.shopStatus!=null and param.shopStatus==0"> AND ts.frozen_flag = 1 </if> <if test="param.shopStatus!=null and param.shopStatus==1"> AND ts.frozen_flag = 0 </if> <if test="param.recommendPerson!=null and param.recommendPerson!=''"> AND ts.recommend_person = #{param.recommendPerson} ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopSuggestMapper.xml
@@ -58,6 +58,6 @@ <if test="param.replayEndTime!=null and param.replayEndTime!=''"> AND Date(tss.replay_time) <= #{param.replayEndTime} </if> ORDER BY tss.create_time DESC ORDER BY tss.replay_flag ASC,tss.create_time DESC </select> </mapper> ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskMapper.xml
@@ -18,7 +18,8 @@ tat.task_id taskId, tat.task_date taskDate, tat.task_content taskContent, tmtr.follow_content dealContent tmtr.follow_content dealContent, tat.emergency_state emergencyState FROM t_agency_task tat LEFT JOIN t_agency_task_record tmtr ON tat.task_id = tmtr.task_id WHERE tat.del_flag = 0 AND tat.shop_id = #{param.shopId} AND tat.agency_id = #{param.agencyId} ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml
@@ -85,6 +85,7 @@ tmt.task_date taskDate, tmt.task_content taskContent, tmtr.follow_content dealContent, tmt.emergency_state emergencyState, CASE WHEN task_date = #{param.today} THEN 1 ELSE 0 END todayFlag FROM t_member_task tmt LEFT JOIN t_member_task_record tmtr ON tmt.task_id = tmtr.task_id ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java
@@ -186,7 +186,7 @@ sysStaff.setDelFlag(1); sysStaff.setStaffMobile(sysStaff.getStaffMobile()+":已删除"); this.saveOrUpdate(sysStaff); sysUserService.deleteUserById(mgtBaseGetDto.getUserId()); sysUserService.deleteUserById(userId); } /** ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/StaffSuggestMapper.xml
@@ -51,7 +51,7 @@ <if test="param.replayEndTime!=null and param.replayEndTime!=''"> AND Date(tss.replay_time) <= #{param.replayEndTime} </if> ORDER BY tss.create_time DESC ORDER BY tss.replay_flag ASC,tss.create_time DESC </select> <select id="pageStaffShopSuggest" resultType="com.ruoyi.system.domain.vo.StaffSuggestPageVo">