ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
@@ -60,7 +60,7 @@ String COUPON_EXPIRED = "优惠券已过期"; String COUPON_USED = "优惠券已被核销"; String COUPON_USED = "该核销码已核销,请更换"; String COUPON_TYPE_ERROR = "只能核销商品优惠券"; @@ -70,4 +70,8 @@ String COUPON_AUDIT_EDIT = "只能编辑审核拒绝的优惠券"; String VERIFY_USED = "该核销码已核销,请更换"; String VERIFY_SHOP_ERROR = "该核销码不适用于本店铺"; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppHomeController.java
@@ -8,6 +8,7 @@ import com.ruoyi.goods.domain.dto.AppRecommendGoodsPageDto; import com.ruoyi.goods.domain.dto.AppSearchGoodsPageDto; import com.ruoyi.goods.domain.dto.AppShopGoodsPageDto; import com.ruoyi.goods.domain.vo.AppHomeActivityVo; import com.ruoyi.goods.domain.vo.AppSimpleActivityGoodsVo; import com.ruoyi.goods.domain.vo.AppSimpleGoodsVo; import com.ruoyi.goods.service.goods.GoodsService; @@ -44,9 +45,28 @@ private GoodsService goodsService; @RequestMapping(value = "/pageActivityGoods", method = RequestMethod.POST) @ApiOperation(value = "热门活动") public R<AppHomeActivityVo> pageActivityGoods(@RequestBody AppRecommendGoodsPageDto appRecommendGoodsPageDto) { Long userId = SecurityUtils.getUserId(); Long shopId = null; if(userId!=null){ Member member = memberService.getMember(userId).getData(); if(member!=null&&member.getRelationShopId()!=null){ shopId = member.getRelationShopId(); } }else{ shopId = appRecommendGoodsPageDto.getPositionShopId(); } if(shopId==null){ throw new ServiceException(AppErrorConstant.NO_POSITION); } AppHomeActivityVo homeActivityVo = goodsService.pageActivityGoods(shopId); return R.ok(homeActivityVo); } @RequestMapping(value = "/pageRecommendGoods", method = RequestMethod.POST) @ApiOperation(value = "推荐商品") @ApiOperation(value = "商城精选") public R<Page<AppSimpleGoodsVo>> pageRecommendGoods(@RequestBody AppRecommendGoodsPageDto appRecommendGoodsPageDto) { Long userId = SecurityUtils.getUserId(); Long shopId = null; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/AppSearchGoodsPageDto.java
@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * @author jqs34 * @ClassName AppShopGoodsPageDto @@ -22,4 +24,7 @@ @ApiModelProperty(value = "定位获取商户id") private Long positionShopId; @ApiModelProperty(value = "定位获取商户id",hidden = true) private List<String> activityIdList; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppHomeActivityVo.java
New file @@ -0,0 +1,28 @@ package com.ruoyi.goods.domain.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; import java.util.List; /** * @ClassName AppHomeActivityVo * @Description TODO * @Author jqs * @Date 2023/7/4 18:43 * @Version 1.0 */ @Data public class AppHomeActivityVo { @ApiModelProperty(value = "结束时间戳") private long timestamp; @ApiModelProperty(value = "结束时间") private Date endTime; @ApiModelProperty(value = "活动商品列表") private List<AppSimpleGoodsVo> goodsVoList; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleActivityGoodsVo.java
@@ -4,6 +4,7 @@ import lombok.Data; import java.math.BigDecimal; import java.util.Date; /** * @author jqs34 @@ -51,5 +52,9 @@ @ApiModelProperty(value = "已售比例") private BigDecimal salesPercent; @ApiModelProperty(value = "结束时间戳") private long timestamp; @ApiModelProperty(value = "结束时间") private Date endTime; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleGoodsVo.java
@@ -39,5 +39,6 @@ @ApiModelProperty(value = "商品售价") private BigDecimal salesPrice; @ApiModelProperty(value = "活动售价") private BigDecimal activityPrice; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/activity/ActivityMapper.java
@@ -61,4 +61,22 @@ * @return List<MgtActivityListVo> */ List<MgtActivityListVo> listMgtActivity(); /** * @description 获取商户推荐活动 * @author jqs * @date 2023/7/4 18:14 * @param shopId * @return Activity */ Activity getRecommendActivity(@Param("shopId")Long shopId); /** * @description 获取商户参与活动id * @author jqs * @date 2023/7/4 19:55 * @param shopId * @return List<Long> */ List<String> listActivityIdByShopId(@Param("shopId")Long shopId); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/goods/GoodsMapper.java
@@ -28,6 +28,15 @@ List<AppSimpleGoodsVo> pageRecommendGoods(Page page, @Param("shopId")Long shopId); /** * @description 获取活动精选 * @author jqs * @date 2023/7/4 18:06 * @param activityId * @return List<AppSimpleGoodsVo> */ List<AppSimpleGoodsVo> pageActivityGoods(@Param("activityId")String activityId, @Param("shopId")Long shopId); /** * 获取商城商品列表 * @param page * @param appShopGoodsPageDto ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java
@@ -84,4 +84,22 @@ * @return List<MgtActivityListVo> */ List<MgtActivityListVo> listMgtActivity(); /** * @description 获取商户推荐活动 * @author jqs * @date 2023/7/4 18:14 * @param shopId * @return Activity */ Activity getRecommendActivity(Long shopId); /** * @description 获取商户参与活动id * @author jqs * @date 2023/7/4 19:55 * @param shopId * @return List<String> */ List<String> listActivityIdByShopId(Long shopId); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java
@@ -27,6 +27,15 @@ List<AppSimpleGoodsVo> pageRecommendGoods(Page page, Long shopId); /** * @description 获取活动精选 * @author jqs * @date 2023/7/4 18:06 * @param shopId * @return List<AppSimpleGoodsVo> */ AppHomeActivityVo pageActivityGoods(Long shopId); /** * 获取商城商品列表 * @param page * @param appShopGoodsPageDto ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
@@ -278,4 +278,28 @@ public List<MgtActivityListVo> listMgtActivity(){ return activityMapper.listMgtActivity(); } /** * @description 获取商户推荐活动 * @author jqs * @date 2023/7/4 18:14 * @param shopId * @return Activity */ @Override public Activity getRecommendActivity(Long shopId){ return activityMapper.getRecommendActivity(shopId); } /** * @description 获取商户参与活动id * @author jqs * @date 2023/7/4 19:55 * @param shopId * @return List<Long> */ @Override public List<String> listActivityIdByShopId(Long shopId){ return activityMapper.listActivityIdByShopId(shopId); } } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
@@ -9,10 +9,12 @@ import com.ruoyi.common.core.utils.uuid.IdUtils; import com.ruoyi.common.security.utils.CodeFactoryUtil; import com.ruoyi.goods.domain.dto.*; import com.ruoyi.goods.domain.pojo.activity.Activity; import com.ruoyi.goods.domain.pojo.goods.GoodsTotal; import com.ruoyi.goods.domain.vo.*; import com.ruoyi.goods.mapper.goods.GoodsMapper; import com.ruoyi.goods.service.activity.ActivityGoodsService; import com.ruoyi.goods.service.activity.ActivityService; import com.ruoyi.goods.service.goods.GoodsFileService; import com.ruoyi.goods.service.goods.GoodsService; import com.ruoyi.goods.service.goods.GoodsTotalService; @@ -62,7 +64,8 @@ @Resource private GoodsTotalService goodsTotalService; @Resource private ActivityService activityService; /** * @description 获取推荐商品列表 @@ -75,6 +78,27 @@ public List<AppSimpleGoodsVo> pageRecommendGoods(Page page, Long shopId){ List<AppSimpleGoodsVo> appSimpleGoodsVoList = goodsMapper.pageRecommendGoods(page,shopId); return appSimpleGoodsVoList; } /** * @description 获取活动精选 * @author jqs * @date 2023/7/4 18:06 * @param shopId * @return List<AppSimpleGoodsVo> */ @Override public AppHomeActivityVo pageActivityGoods(Long shopId){ AppHomeActivityVo appHomeActivityVo = new AppHomeActivityVo(); Activity activity = activityService.getRecommendActivity(shopId); List<AppSimpleGoodsVo> simpleGoodsVoList = new ArrayList<>(); if(activity!=null){ appHomeActivityVo.setEndTime(activity.getActivityEndTime()); appHomeActivityVo.setTimestamp(activity.getActivityEndTime().getTime()); simpleGoodsVoList = goodsMapper.pageActivityGoods(activity.getActivityId(),shopId); appHomeActivityVo.setGoodsVoList(simpleGoodsVoList); } return appHomeActivityVo; } /** @@ -109,19 +133,24 @@ */ @Override public List<AppSimpleActivityGoodsVo> pageSearchActivityGoods(Page page, AppSearchGoodsPageDto appSearchGoodsPageDto){ List<AppSimpleActivityGoodsVo> appSimpleGoodsVoList = goodsMapper.pageSearchActivityGoods(page,appSearchGoodsPageDto); int activityNumber; int salesNumber; BigDecimal salesPercent; for(AppSimpleActivityGoodsVo appSimpleActivityGoodsVo : appSimpleGoodsVoList){ activityNumber = appSimpleActivityGoodsVo.getActivityNumber(); salesNumber = appSimpleActivityGoodsVo.getSalesNumber(); salesPercent = BigDecimal.ZERO; if(activityNumber != 0){ List<String> activityIdList = activityService.listActivityIdByShopId(appSearchGoodsPageDto.getShopId()); appSearchGoodsPageDto.setActivityIdList(activityIdList); // 获取搜索结果的商品列表 List<AppSimpleActivityGoodsVo> appSimpleGoodsVoList = goodsMapper.pageSearchActivityGoods(page, appSearchGoodsPageDto); // 计算销售百分比和设置时间戳 for (AppSimpleActivityGoodsVo appSimpleActivityGoodsVo : appSimpleGoodsVoList) { int activityNumber = appSimpleActivityGoodsVo.getActivityNumber(); int salesNumber = appSimpleActivityGoodsVo.getSalesNumber(); BigDecimal salesPercent = BigDecimal.ZERO; // 计算销售百分比 if (activityNumber != 0) { salesPercent = BigDecimal.valueOf(salesNumber).multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(activityNumber), 2, BigDecimal.ROUND_HALF_UP); } // 设置销售百分比和时间戳 appSimpleActivityGoodsVo.setSalesPercent(salesPercent); appSimpleActivityGoodsVo.setTimestamp(appSimpleActivityGoodsVo.getEndTime().getTime()); } // 返回结果 return appSimpleGoodsVoList; } ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml
@@ -102,4 +102,19 @@ WHERE ta.del_flag = 0 ORDER BY ta.create_time DESC </select> <select id="getRecommendActivity" resultType="com.ruoyi.goods.domain.pojo.activity.Activity"> SELECT * FROM t_activity WHERE del_flag = 0 AND recommend_flag = 1 AND NOW() BETWEEN activity_start_time AND activity_end_time AND activity_status = 1 AND shop_flag = 1 OR (shop_flag = 2 AND FIND_IN_SET(#{shopId}, ta.applicable_shop) > 0) ORDER BY activity_end_time - NOW() LIMIT 1; </select> <select id="listActivityIdByShopId" resultType="java.lang.String"> SELECT activity_id FROM t_activity WHERE del_flag = 0 AND activity_status = 1 AND NOW() BETWEEN activity_start_time AND activity_end_time AND shop_flag = 1 OR (shop_flag = 2 AND FIND_IN_SET(#{shopId}, ta.applicable_shop) > 0) </select> </mapper> ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml
@@ -169,6 +169,30 @@ ORDER BY tg.create_time DESC </select> <select id="pageActivityGoods" resultType="com.ruoyi.goods.domain.vo.AppSimpleGoodsVo"> SELECT tg.goods_id goodsId, tg.goods_name goodsName, tg.goods_introduction goodsIntroduction, tg.goods_type goodsType, CASE tg.goods_type WHEN 1 THEN "周期" WHEN 2 THEN "服务" WHEN 3 THEN "体验" WHEN 4 THEN "单品" END goodsTag, IFNULL(tsg.sales_price,tg.sales_price) salesPrice, tgf.file_url goodsPicture, tg.goods_nurses goodsNurses, tag.activity_price activityPrice FROM t_activity_goods tag INNER JOIN t_goods tg ON tag.goods_id = tg.goods_id 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 = #{shopId} WHERE tag.activity_id = #{activityId} AND tg.del_flag = 0 AND tg.goods_status = 1 ORDER BY tag.sales_number DESC, tg.create_time DESC LIMIT 6 </select> <!--分页获取商城商品列表--> <select id="pageShopGoods" resultType="com.ruoyi.goods.domain.vo.AppSimpleGoodsVo"> SELECT @@ -268,12 +292,19 @@ tgf.file_url goodsPicture, tg.goods_tags goodsNurses, tag.activity_number activityNumber, tag.sales_number salesNumber FROM t_goods tg INNER JOIN t_activity_goods tag ON tg.goods_id = tag.goods_id INNER JOIN t_goods_file tgf ON tg.goods_id = tgf.goods_id AND tgf.del_flag = 0 AND tgf.file_type = 1 tag.sales_number salesNumber, tag.activity_deadline endTime FROM t_activity_goods tag INNER JOIN t_goods tg ON tg.goods_id = tag.goods_id 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} WHERE tg.del_flag = 0 AND tg.goods_status = 1 <if test="param.activityIdList != null and param.activityIdList.size() > 0"> AND tag.activity_id IN <foreach collection="param.activityIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="param.keyword!=null and param.keyword != ''"> AND tg.goods_name LIKE CONCAT('%',#{param.keyword},'%') </if> @@ -300,7 +331,7 @@ tg.service_num defaultServiceNum, IFNULL(tsg.service_num,tg.service_num) serviceNum FROM t_goods tg INNER 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_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 <if test="param.goodsType != null and param.goodsType != ''"> ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
@@ -177,6 +177,16 @@ return R.ok(); } @RequestMapping(value = "/deleteMemberArchiveFields", method = RequestMethod.POST) @Log(title = "会员管理", businessType = BusinessType.UPDATE,operContent = "删除会员档案") @ApiOperation(value = "删除会员档案") public R deleteMemberArchiveFields(@RequestBody MgtBaseGetDto mgtBaseGetDto) { Long userId = SecurityUtils.getUserId(); mgtBaseGetDto.setUserId(userId); memberArchiveFieldsService.deleteMemberArchiveFields(mgtBaseGetDto); return R.ok(); } @RequestMapping(value = "/pageMgtMemberSuggest", method = RequestMethod.POST) @ApiOperation(value = "平台获取用户建议列表") ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
@@ -355,7 +355,7 @@ userIdList = relUserIdList; } } if(!relUserIdList.isEmpty()){ if(relUserIdList!=null&&!relUserIdList.isEmpty()){ List<MemberCoupon> memberCouponList = new ArrayList<>(); MemberCoupon memberCoupon; Integer sendTotal = 0; ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberArchiveFieldsServiceImpl.java
@@ -6,6 +6,7 @@ import com.ruoyi.member.mapper.member.MemberArchiveFieldsMapper; import com.ruoyi.member.service.member.MemberArchiveFieldsService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.api.domain.dto.MgtBaseGetDto; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -66,4 +67,18 @@ public List<MgtArchiveFieldsListVo> listMgtArchiveFields(){ return memberArchiveFieldsMapper.listMgtArchiveFields(); } /** * @description 删除会员档案 * @author jqs * @date 2023/7/4 19:26 * @param mgtBaseGetDto * @return void */ @Override public void deleteMemberArchiveFields(MgtBaseGetDto mgtBaseGetDto){ MemberArchiveFields memberArchiveFields = this.getById(mgtBaseGetDto.getId()); memberArchiveFields.setDelFlag(1); this.saveOrUpdate(memberArchiveFields); } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
@@ -88,6 +88,7 @@ } else { merVerifyCouponGetVo.setCouponFrom("平台"); } merVerifyCouponGetVo.setMemberCoupon(memberCoupon); return merVerifyCouponGetVo; } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberArchiveFieldsService.java
@@ -4,6 +4,7 @@ import com.ruoyi.member.domain.pojo.member.MemberArchiveFields; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.member.domain.vo.MgtArchiveFieldsListVo; import com.ruoyi.system.api.domain.dto.MgtBaseGetDto; import java.util.List; @@ -37,4 +38,13 @@ * @return List<MgtArchiveFieldsListVo> */ List<MgtArchiveFieldsListVo> listMgtArchiveFields(); /** * @description 删除会员档案 * @author jqs * @date 2023/7/4 19:26 * @param mgtBaseGetDto * @return void */ void deleteMemberArchiveFields(MgtBaseGetDto mgtBaseGetDto); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java
@@ -50,11 +50,11 @@ merVerifyCodeVo.setVerifyType(type); switch(type){ case 1: MerVerifyOrderVo merVerifyOrderVo = orderService.verifyOrder(verifyCode); MerVerifyOrderVo merVerifyOrderVo = orderService.verifyOrder(verifyCode,merVerifyCodeDto.getShopId()); merVerifyCodeVo.setMerVerifyOrderVo(merVerifyOrderVo); break; case 2: MerVerifyCouponVo merVerifyCouponVo = orderService.verifyCoupon(verifyCode); MerVerifyCouponVo merVerifyCouponVo = orderService.verifyCoupon(verifyCode,merVerifyCodeDto.getShopId()); merVerifyCodeVo.setMerVerifyCouponVo(merVerifyCouponVo); break; case 3: ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -529,11 +529,17 @@ * @return */ @Override public MerVerifyOrderVo verifyOrder(String orderId) { public MerVerifyOrderVo verifyOrder(String orderId,Long shopId) { // 创建返回对象 MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo(); // 根据订单ID获取订单信息 Order order = this.getById(orderId); if(order.getOrderStatus()!=2){ throw new ServiceException(AppErrorConstant.VERIFY_USED); } if(!order.getShopId().equals(shopId)){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } // 根据订单ID获取订单商品列表 List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); // 设置返回对象的属性值 @@ -574,6 +580,9 @@ Date nowTime = new Date(); //更新订单信息 Order order = this.getById(orderId); if(order.getOrderStatus()!=2){ throw new ServiceException(AppErrorConstant.VERIFY_USED); } order.setOrderStatus(3); order.setUseTime(nowTime); order.setUseUserId(merVerifyOrderDto.getUserId()); @@ -2000,11 +2009,24 @@ * @date 2023/6/27 11:10 */ @Override public MerVerifyCouponVo verifyCoupon(String verifyCode) { public MerVerifyCouponVo verifyCoupon(String verifyCode,Long shopId) { // 创建MerVerifyCouponVo对象 MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo(); // 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象 MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(verifyCode).getData(); MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon(); // 检查优惠券状态 int couponStatus = memberCoupon.getCouponStatus(); if (couponStatus == 0) { throw new ServiceException(AppErrorConstant.COUPON_EXPIRED); } else if (couponStatus == 2) { throw new ServiceException(AppErrorConstant.COUPON_USED); } else if (couponStatus != 0) { throw new ServiceException(AppErrorConstant.COUPON_NO_FIND); } if(!memberCoupon.getShopId().equals(shopId)){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } List<Goods> goodsList = verifyCouponGetVo.getGoodsList(); Long userId = verifyCouponGetVo.getUserId(); // 调用remoteMemberService的getMember方法获取Member对象 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -80,7 +80,7 @@ * @param orderId * @return */ MerVerifyOrderVo verifyOrder(String orderId); MerVerifyOrderVo verifyOrder(String orderId,Long shopId); /** * 确认核销订单 @@ -286,7 +286,7 @@ * @param verifyCode * @return MerVerifyCouponVo */ MerVerifyCouponVo verifyCoupon(String verifyCode); MerVerifyCouponVo verifyCoupon(String verifyCode,Long shopId); /** * @description 获取用户未支付金额 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/business/MerTaskController.java
@@ -124,7 +124,7 @@ } @RequestMapping(value = "/followAgencyTask", method = RequestMethod.POST) @ApiOperation(value = "会员代理商跟进") @ApiOperation(value = "代理商跟进") public R followAgencyTask(@RequestBody MerFollowAgencyTaskDto merFollowAgencyTaskDto) { Long userId = SecurityUtils.getUserId(); merFollowAgencyTaskDto.setUserId(userId); ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowAgencyTaskDto.java
@@ -1,11 +1,10 @@ package com.ruoyi.shop.domain.dto; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.system.api.domain.dto.MerBaseDto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; import java.util.List; /** * @author jqs34 @@ -26,9 +25,8 @@ @ApiModelProperty("拨打电话") private String callPhone; @ApiModelProperty("电话时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00") private Date callTime; @ApiModelProperty("电话跟踪内容") private List<MerFollowPhoneDto> followPhone; @ApiModelProperty("跟踪内容") private String followContent; ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowMemberTaskDto.java
@@ -1,11 +1,10 @@ package com.ruoyi.shop.domain.dto; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.system.api.domain.dto.MerBaseDto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; import java.util.List; /** * @author jqs34 @@ -26,11 +25,10 @@ @ApiModelProperty("拨打电话") private String callPhone; @ApiModelProperty("电话时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00") private Date callTime; @ApiModelProperty("电话跟踪内容") private List<MerFollowPhoneDto> followPhone; @ApiModelProperty("跟踪内容") @ApiModelProperty("手动跟踪内容") private String followContent; @ApiModelProperty("跟进图片地址 多个,号隔开") ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowPhoneDto.java
New file @@ -0,0 +1,26 @@ package com.ruoyi.shop.domain.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** * @ClassName MerFollowPhoneDto * @Description TODO * @Author jqs * @Date 2023/7/4 17:01 * @Version 1.0 */ @Data public class MerFollowPhoneDto { @ApiModelProperty("电话时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00") private Date callTime; @ApiModelProperty("跟踪内容") private String followContent; } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java
@@ -8,6 +8,7 @@ import com.ruoyi.shop.domain.dto.MerAgencyTaskPageDto; import com.ruoyi.shop.domain.dto.MerCreateAgencyTaskDto; import com.ruoyi.shop.domain.dto.MerFollowAgencyTaskDto; import com.ruoyi.shop.domain.dto.MerFollowPhoneDto; import com.ruoyi.shop.domain.pojo.task.*; import com.ruoyi.shop.domain.vo.MerAgencyTaskPageVo; import com.ruoyi.shop.mapper.task.AgencyTaskMapper; @@ -79,59 +80,75 @@ */ @Override public void followAgencyTask(MerFollowAgencyTaskDto merFollowAgencyTaskDto){ AgencyTaskRecord agencyTaskRecord = new AgencyTaskRecord(); AgencyTaskRecord agencyTaskRecord; AgencyTask oldAgencyTask = this.getById(merFollowAgencyTaskDto.getTaskId()); //更新任务 agencyTaskRecord.setTaskId(merFollowAgencyTaskDto.getTaskId()); agencyTaskRecord.setDelFlag(0); agencyTaskRecord.setUserId(merFollowAgencyTaskDto.getUserId()); agencyTaskRecord.setFollowType(merFollowAgencyTaskDto.getFollowType()); agencyTaskRecord.setCallPhone(merFollowAgencyTaskDto.getCallPhone()); agencyTaskRecord.setCallTime(merFollowAgencyTaskDto.getCallTime()); agencyTaskRecord.setFollowContent(merFollowAgencyTaskDto.getFollowContent()); agencyTaskRecord.setCreateTime(new Date()); agencyTaskRecordService.saveOrUpdate(agencyTaskRecord); //创建任务详情文件 String picture = merFollowAgencyTaskDto.getPicture(); String video = merFollowAgencyTaskDto.getVideo(); String audio = merFollowAgencyTaskDto.getAudio(); String[] strArr; TaskFile taskFile; if(StringUtils.isNotBlank(picture)){ strArr = picture.split(","); for(String str : strArr){ taskFile = new TaskFile(); taskFile.setDelFlag(0); taskFile.setFollowId(agencyTaskRecord.getId()); taskFile.setFollowFrom(2); taskFile.setFileUrl(str); taskFile.setFileType(1); taskFileService.saveOrUpdate(taskFile); oldAgencyTask.setTaskStatus(2); this.saveOrUpdate(oldAgencyTask); if(merFollowAgencyTaskDto.getFollowType()==1){ // 获取跟进电话列表 List<MerFollowPhoneDto> followPhone = merFollowAgencyTaskDto.getFollowPhone(); // 判断跟进电话列表是否为空 if (followPhone != null && !followPhone.isEmpty()) { // 遍历跟进电话列表 for (MerFollowPhoneDto followPhoneDto : followPhone) { // 创建新的会员任务记录 agencyTaskRecord = new AgencyTaskRecord(); //更新任务 agencyTaskRecord.setTaskId(merFollowAgencyTaskDto.getTaskId()); agencyTaskRecord.setDelFlag(0); agencyTaskRecord.setUserId(merFollowAgencyTaskDto.getUserId()); agencyTaskRecord.setFollowType(merFollowAgencyTaskDto.getFollowType()); agencyTaskRecord.setCallPhone(merFollowAgencyTaskDto.getCallPhone()); agencyTaskRecord.setCallTime(followPhoneDto.getCallTime()); agencyTaskRecord.setFollowContent(followPhoneDto.getFollowContent()); agencyTaskRecord.setCreateTime(new Date()); agencyTaskRecordService.saveOrUpdate(agencyTaskRecord); } } } if(StringUtils.isNotBlank(video)){ strArr = picture.split(","); for(String str : strArr){ taskFile = new TaskFile(); taskFile.setDelFlag(0); taskFile.setFollowId(agencyTaskRecord.getId()); taskFile.setFollowFrom(2); taskFile.setFileUrl(str); taskFile.setFileType(2); taskFileService.saveOrUpdate(taskFile); }else{ agencyTaskRecord = new AgencyTaskRecord(); //创建任务详情文件 String picture = merFollowAgencyTaskDto.getPicture(); String video = merFollowAgencyTaskDto.getVideo(); String audio = merFollowAgencyTaskDto.getAudio(); String[] strArr; TaskFile taskFile; if(StringUtils.isNotBlank(picture)){ strArr = picture.split(","); for(String str : strArr){ taskFile = new TaskFile(); taskFile.setDelFlag(0); taskFile.setFollowId(agencyTaskRecord.getId()); taskFile.setFollowFrom(2); taskFile.setFileUrl(str); taskFile.setFileType(1); taskFileService.saveOrUpdate(taskFile); } } if(StringUtils.isNotBlank(video)){ strArr = picture.split(","); for(String str : strArr){ taskFile = new TaskFile(); taskFile.setDelFlag(0); taskFile.setFollowId(agencyTaskRecord.getId()); taskFile.setFollowFrom(2); taskFile.setFileUrl(str); taskFile.setFileType(2); taskFileService.saveOrUpdate(taskFile); } } } if(StringUtils.isNotBlank(audio)){ strArr = picture.split(","); for(String str : strArr){ taskFile = new TaskFile(); taskFile.setDelFlag(0); taskFile.setFollowId(agencyTaskRecord.getId()); taskFile.setFollowFrom(2); taskFile.setFileUrl(str); taskFile.setFileType(3); taskFileService.saveOrUpdate(taskFile); if(StringUtils.isNotBlank(audio)){ strArr = picture.split(","); for(String str : strArr){ taskFile = new TaskFile(); taskFile.setDelFlag(0); taskFile.setFollowId(agencyTaskRecord.getId()); taskFile.setFollowFrom(2); taskFile.setFileUrl(str); taskFile.setFileType(3); taskFileService.saveOrUpdate(taskFile); } } } //创建新任务 @@ -148,7 +165,5 @@ agencyTask.setCreateTime(new Date()); this.saveOrUpdate(agencyTask); } } } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java
@@ -6,6 +6,7 @@ import com.ruoyi.common.core.utils.uuid.IdUtils; import com.ruoyi.shop.domain.dto.MerCreateMemberTaskDto; import com.ruoyi.shop.domain.dto.MerFollowMemberTaskDto; import com.ruoyi.shop.domain.dto.MerFollowPhoneDto; import com.ruoyi.shop.domain.dto.MerMemberTaskPageDto; import com.ruoyi.shop.domain.pojo.task.MemberTask; import com.ruoyi.shop.domain.pojo.task.MemberTaskRecord; @@ -92,64 +93,100 @@ } /** * * @description 会员任务跟进 * @author jqs * @date 2023/7/4 17:16 * @param merFollowMemberTaskDto * @return void */ @Override public void followMemberTask(MerFollowMemberTaskDto merFollowMemberTaskDto){ MemberTaskRecord memberTaskRecord = new MemberTaskRecord(); public void followMemberTask(MerFollowMemberTaskDto merFollowMemberTaskDto) { // 创建会员任务记录对象 MemberTaskRecord memberTaskRecord; // 获取旧的会员任务 MemberTask oldMemberTask = this.getById(merFollowMemberTaskDto.getTaskId()); memberTaskRecord.setTaskId(merFollowMemberTaskDto.getTaskId()); memberTaskRecord.setDelFlag(0); memberTaskRecord.setUserId(merFollowMemberTaskDto.getUserId()); memberTaskRecord.setFollowType(merFollowMemberTaskDto.getFollowType()); memberTaskRecord.setCallPhone(merFollowMemberTaskDto.getCallPhone()); memberTaskRecord.setCallTime(merFollowMemberTaskDto.getCallTime()); memberTaskRecord.setFollowContent(merFollowMemberTaskDto.getFollowContent()); memberTaskRecord.setCreateTime(new Date()); memberTaskRecordService.saveOrUpdate(memberTaskRecord); String picture = merFollowMemberTaskDto.getPicture(); String video = merFollowMemberTaskDto.getVideo(); String audio = merFollowMemberTaskDto.getAudio(); String[] strArr; TaskFile taskFile; if(StringUtils.isNotBlank(picture)){ strArr = picture.split(","); for(String str : strArr){ taskFile = new TaskFile(); taskFile.setDelFlag(0); taskFile.setFollowId(memberTaskRecord.getId()); taskFile.setFollowFrom(2); taskFile.setFileUrl(str); taskFile.setFileType(1); taskFileService.saveOrUpdate(taskFile); oldMemberTask.setTaskStatus(2); this.saveOrUpdate(oldMemberTask); // 判断跟进类型 if (merFollowMemberTaskDto.getFollowType() == 1) { // 获取跟进电话列表 List<MerFollowPhoneDto> followPhone = merFollowMemberTaskDto.getFollowPhone(); // 判断跟进电话列表是否为空 if (followPhone != null && !followPhone.isEmpty()) { // 遍历跟进电话列表 for (MerFollowPhoneDto followPhoneDto : followPhone) { // 创建新的会员任务记录 memberTaskRecord = new MemberTaskRecord(); memberTaskRecord.setTaskId(merFollowMemberTaskDto.getTaskId()); memberTaskRecord.setDelFlag(0); memberTaskRecord.setUserId(merFollowMemberTaskDto.getUserId()); memberTaskRecord.setFollowType(merFollowMemberTaskDto.getFollowType()); memberTaskRecord.setCallPhone(merFollowMemberTaskDto.getCallPhone()); memberTaskRecord.setFollowContent(followPhoneDto.getFollowContent()); memberTaskRecord.setCallTime(followPhoneDto.getCallTime()); // 保存或更新会员任务记录 memberTaskRecordService.saveOrUpdate(memberTaskRecord); } } } else { // 创建新的会员任务记录 memberTaskRecord = new MemberTaskRecord(); memberTaskRecord.setTaskId(merFollowMemberTaskDto.getTaskId()); memberTaskRecord.setDelFlag(0); memberTaskRecord.setUserId(merFollowMemberTaskDto.getUserId()); memberTaskRecord.setFollowType(merFollowMemberTaskDto.getFollowType()); memberTaskRecord.setFollowContent(merFollowMemberTaskDto.getFollowContent()); memberTaskRecord.setCreateTime(new Date()); // 保存或更新会员任务记录 memberTaskRecordService.saveOrUpdate(memberTaskRecord); // 获取图片、视频和音频 String picture = merFollowMemberTaskDto.getPicture(); String video = merFollowMemberTaskDto.getVideo(); String audio = merFollowMemberTaskDto.getAudio(); String[] strArr; TaskFile taskFile; // 判断图片是否为空,并处理 if (StringUtils.isNotBlank(picture)) { strArr = picture.split(","); for (String str : strArr) { taskFile = new TaskFile(); taskFile.setDelFlag(0); taskFile.setFollowId(memberTaskRecord.getId()); taskFile.setFollowFrom(2); taskFile.setFileUrl(str); taskFile.setFileType(1); taskFileService.saveOrUpdate(taskFile); } } // 判断视频是否为空,并处理 if (StringUtils.isNotBlank(video)) { strArr = picture.split(","); for (String str : strArr) { taskFile = new TaskFile(); taskFile.setDelFlag(0); taskFile.setFollowId(memberTaskRecord.getId()); taskFile.setFollowFrom(2); taskFile.setFileUrl(str); taskFile.setFileType(2); taskFileService.saveOrUpdate(taskFile); } } // 判断音频是否为空,并处理 if (StringUtils.isNotBlank(audio)) { strArr = picture.split(","); for (String str : strArr) { taskFile = new TaskFile(); taskFile.setDelFlag(0); taskFile.setFollowId(memberTaskRecord.getId()); taskFile.setFollowFrom(2); taskFile.setFileUrl(str); taskFile.setFileType(3); taskFileService.saveOrUpdate(taskFile); } } } if(StringUtils.isNotBlank(video)){ strArr = picture.split(","); for(String str : strArr){ taskFile = new TaskFile(); taskFile.setDelFlag(0); taskFile.setFollowId(memberTaskRecord.getId()); taskFile.setFollowFrom(2); taskFile.setFileUrl(str); taskFile.setFileType(2); taskFileService.saveOrUpdate(taskFile); } } if(StringUtils.isNotBlank(audio)){ strArr = picture.split(","); for(String str : strArr){ taskFile = new TaskFile(); taskFile.setDelFlag(0); taskFile.setFollowId(memberTaskRecord.getId()); taskFile.setFollowFrom(2); taskFile.setFileUrl(str); taskFile.setFileType(3); taskFileService.saveOrUpdate(taskFile); } } if(StringUtils.isNotBlank(merFollowMemberTaskDto.getNextTaskDate())){ // 判断下一个任务日期是否为空,并处理 if (StringUtils.isNotBlank(merFollowMemberTaskDto.getNextTaskDate())) { MemberTask memberTask = new MemberTask(); String taskId = IdUtils.simpleUUID(); memberTask.setTaskId(taskId); ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java
@@ -55,10 +55,11 @@ shopTask.setShopId(mgtFollowShopTaskDto.getShopId()); shopTask.setFollowType(mgtFollowShopTaskDto.getFollowType()); shopTask.setNextFollowDate(DateUtils.toDate(LocalDate.now())); shopTask.setTaskTitle(mgtFollowShopTaskDto.getNextTaskTitle()); shopTask.setTaskTitle(mgtFollowShopTaskDto.getTaskTitle()); shopTask.setEmergencyState(mgtFollowShopTaskDto.getEmergencyState()); shopTask.setCreateTime(new Date()); shopTask.setTaskDate(DateUtils.toDate(LocalDate.now())); shopTask.setTaskStatus(2); this.saveOrUpdate(shopTask); //创建任务记录 ShopTaskRecord shopTaskRecord = new ShopTaskRecord(); @@ -95,6 +96,7 @@ shopNextTask.setTaskTitle(mgtFollowShopTaskDto.getNextTaskTitle()); shopNextTask.setEmergencyState(mgtFollowShopTaskDto.getEmergencyState()); shopNextTask.setCreateTime(new Date()); shopNextTask.setTaskStatus(0); try { shopNextTask.setNextFollowDate(DateUtils.parseDate(mgtFollowShopTaskDto.getNextTaskDate(),"yyyy-MM-dd")); shopNextTask.setTaskDate(DateUtils.parseDate(mgtFollowShopTaskDto.getNextTaskDate(),"yyyy-MM-dd")); ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/MemberTaskService.java
@@ -36,8 +36,11 @@ void createMemberTask(MerCreateMemberTaskDto merCreateMemberTaskDto); /** * * @description 会员任务跟进 * @author jqs * @date 2023/7/4 17:16 * @param merFollowMemberTaskDto * @return void */ void followMemberTask(MerFollowMemberTaskDto merFollowMemberTaskDto);