Преглед изворни кода

赠券校验规则,智能客服问题答案

jyc пре 2 месеци
родитељ
комит
546b730590

+ 7 - 2
alien-entity/src/main/java/shop/alien/entity/store/StoreCustomerService.java

@@ -2,8 +2,8 @@ package shop.alien.entity.store;
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -21,7 +21,6 @@ import java.util.Date;
 @Data
 @JsonInclude
 @TableName("store_customer_service")
-@ApiModel(value = "StoreBusinessInfo对象", description = "门店营业时间")
 public class StoreCustomerService extends Model<StoreCustomerService> {
 
     private static final long serialVersionUID = 1L;
@@ -30,6 +29,10 @@ public class StoreCustomerService extends Model<StoreCustomerService> {
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
+    @ApiModelProperty(value = "类型(1/商家/2用户)")
+    @TableField("type")
+    private Integer type;
+
     @ApiModelProperty(value = "问题")
     @TableField("question")
     private String question;
@@ -49,6 +52,7 @@ public class StoreCustomerService extends Model<StoreCustomerService> {
 
     @ApiModelProperty(value = "创建时间")
     @TableField("created_time")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date createdTime;
 
     @ApiModelProperty(value = "创建人ID")
@@ -57,6 +61,7 @@ public class StoreCustomerService extends Model<StoreCustomerService> {
 
     @ApiModelProperty(value = "修改时间")
     @TableField("updated_time")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date updatedTime;
 
     @ApiModelProperty(value = "修改人ID")

+ 3 - 3
alien-store/src/main/java/shop/alien/store/controller/LifeDiscountCouponStoreFriendController.java

@@ -175,8 +175,8 @@ public class LifeDiscountCouponStoreFriendController {
             ,@ApiImplicitParam(name = "friendStoreUserId", value = "我赠好友", dataType = "String", paramType = "query", required = false)
     })
     @GetMapping("/getReceivedSendFriendCouponList")
-    private R<List<LifeDiscountCouponFriendRuleVo>> getReceivedSendFriendCouponList(@RequestParam(value = "storeUserId",required = false) String storeUserId, @RequestParam(value = "friendStoreUserId",required = false)String friendStoreUserId) {
-        log.info("LifeDiscountCouponStoreFriendController.getReceivedSendFriendCouponList?storeId={},friendStoreUserId={}", storeUserId,friendStoreUserId);
-        return R.data(lifeDiscountCouponStoreFriendService.getReceivedSendFriendCouponList(storeUserId,friendStoreUserId));
+    private R<List<LifeDiscountCouponFriendRuleVo>> getReceivedSendFriendCouponList(@RequestParam(value = "storeUserId",required = false) String storeUserId, @RequestParam(value = "friendStoreUserId",required = false)String friendStoreUserId, @RequestParam(value = "storeName",required = false)String storeName) {
+        log.info("LifeDiscountCouponStoreFriendController.getReceivedSendFriendCouponList?storeId={},friendStoreUserId={},storeName={}", storeUserId,friendStoreUserId,storeName);
+        return R.data(lifeDiscountCouponStoreFriendService.getReceivedSendFriendCouponList(storeUserId,friendStoreUserId,storeName));
     }
 }

+ 58 - 0
alien-store/src/main/java/shop/alien/store/controller/StoreCustomerServiceController.java

@@ -1,5 +1,6 @@
 package shop.alien.store.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import io.swagger.annotations.*;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -8,6 +9,8 @@ import shop.alien.entity.result.R;
 import shop.alien.entity.store.StoreCustomerService;
 import shop.alien.store.service.StoreCustomerServiceService;
 
+import java.util.List;
+
 /**
  * <p>
  * 智能客服
@@ -39,4 +42,59 @@ public class StoreCustomerServiceController {
         return R.data(result);
     }
 
+    @ApiOperation("获取随机问题")
+    @ApiOperationSupport(order = 2)
+    @ApiImplicitParams({@ApiImplicitParam(name = "type", value = "类型(1/商家/2用户)", dataType = "String", paramType = "query", required = true)
+    , @ApiImplicitParam(name = "limit", value = "数量", dataType = "Integer", paramType = "query", required = true)})
+    @GetMapping("/getRandList")
+    public R<List<StoreCustomerService>> getRandList(@RequestParam String type, @RequestParam Integer limit) {
+        List<StoreCustomerService> result = storeCustomerServiceService.getRandList(type,limit);
+        return R.data(result);
+    }
+
+    @ApiOperation("删除问题")
+    @ApiOperationSupport(order = 3)
+    @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "id", dataType = "String", paramType = "query", required = true)
+            })
+    @GetMapping("/delStoreCustomerService")
+    public R delStoreCustomerService(@RequestParam String id) {
+        storeCustomerServiceService.delStoreCustomerService(id);
+        return R.data("删除成功");
+    }
+
+    @ApiOperation("中台-问题列表")
+    @ApiOperationSupport(order = 4)
+    @ApiImplicitParams({@ApiImplicitParam(name = "page", value = "页数", dataType = "Integer", paramType = "query", required = true),
+            @ApiImplicitParam(name = "size", value = "页容", dataType = "Integer", paramType = "query", required = true),
+            @ApiImplicitParam(name = "question", value = "问题", dataType = "String", paramType = "query", required = false),
+            @ApiImplicitParam(name = "type", value = "类型(1/商家/2用户)", dataType = "String", paramType = "query", required = false),
+    })
+    @GetMapping("/getStoreCustomerServicePage")
+    private R<IPage<StoreCustomerService>> getStoreCustomerServicePage(@RequestParam(value = "page", defaultValue = "1") int page,
+                                                       @RequestParam(value = "size", defaultValue = "10") int size,
+                                                       @RequestParam(value = "question", required = false) String question,
+                                                       @RequestParam(value = "type", required = false) String type) {
+        log.info("StoreCustomerServiceController.getStoreCustomerServicePage?page={},size={},question={},type={}", page, size, question, type);
+        return R.data(storeCustomerServiceService.getStoreCustomerServicePage(page, size, question, type));
+    }
+
+    @ApiOperation("中台-保存问题")
+    @ApiOperationSupport(order = 5)
+    @PostMapping("/saveStoreCustomerService")
+    public R<StoreCustomerService> saveStoreCustomerService(@RequestBody StoreCustomerService storeCustomerService) {
+        log.info("StoreCustomerServiceController.saveStoreCustomerService?storeCustomerService={}", storeCustomerService.toString());
+        StoreCustomerService saved = storeCustomerServiceService.saveStoreCustomerService(storeCustomerService);
+        return R.data(saved);
+    }
+
+    @ApiOperation("id查询问题")
+    @ApiOperationSupport(order = 6)
+    @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "id", dataType = "String", paramType = "query", required = true)
+    })
+    @GetMapping("/getById")
+    public R<StoreCustomerService> getById(@RequestParam String id) {
+        log.info("StoreCustomerServiceController.getById?id={}", id);
+        StoreCustomerService saved = storeCustomerServiceService.getById(id);
+        return R.data(saved);
+    }
 }

+ 1 - 1
alien-store/src/main/java/shop/alien/store/service/LifeDiscountCouponStoreFriendService.java

@@ -59,5 +59,5 @@ public interface LifeDiscountCouponStoreFriendService extends IService<LifeDisco
 
     LifeDiscountCouponFriendRuleVo getRuleById(String id);
 
-    List<LifeDiscountCouponFriendRuleVo> getReceivedSendFriendCouponList(String storeUserId, String friendStoreUserId);
+    List<LifeDiscountCouponFriendRuleVo> getReceivedSendFriendCouponList(String storeUserId, String friendStoreUserId,String storeName);
 }

+ 12 - 0
alien-store/src/main/java/shop/alien/store/service/StoreCustomerServiceService.java

@@ -1,8 +1,11 @@
 package shop.alien.store.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import shop.alien.entity.store.StoreCustomerService;
 
+import java.util.List;
+
 /**
  * <p>
  * 门店客服 服务类
@@ -15,4 +18,13 @@ public interface StoreCustomerServiceService extends IService<StoreCustomerServi
 
     StoreCustomerService getByQuestion(String question);
 
+    StoreCustomerService saveStoreCustomerService(StoreCustomerService storeCustomerService);
+
+    void delStoreCustomerService(String id);
+
+    IPage<StoreCustomerService> getStoreCustomerServicePage(int page, int size, String question, String type);
+
+    StoreCustomerService getById(String id);
+
+    List<StoreCustomerService> getRandList(String type,Integer limit);
 }

+ 132 - 105
alien-store/src/main/java/shop/alien/store/service/impl/LifeDiscountCouponStoreFriendServiceImpl.java

@@ -25,6 +25,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -209,122 +210,147 @@ public class LifeDiscountCouponStoreFriendServiceImpl extends ServiceImpl<LifeDi
     @Override
     public List<LifeDiscountCouponStoreFriendVo> issueFriendCoupon(LifeDiscountCouponStoreFriendDto lifeDiscountCouponStoreFriendDto) {
 
+        // 用于存储最终成功发放的优惠券信息的列表
+        List<LifeDiscountCouponStoreFriendVo> result = new ArrayList<>();
+
         //判断该订单是否已经发放过好友店铺优惠券
         LifeUserOrder lifeUserOrder = lifeUserOrderMapper.selectById(lifeDiscountCouponStoreFriendDto.getOrderId());
         if (lifeUserOrder.getSendDiscountCouponFlag() == 1) {
             throw new RuntimeException("已发放优惠券");
         }
+
+        //送券规则
+        List<Integer> couponList = new ArrayList<>();
+        LambdaQueryWrapper<LifeDiscountCouponFriendRule> ruleLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        ruleLambdaQueryWrapper.eq(LifeDiscountCouponFriendRule::getStoreId, lifeUserOrder.getStoreId())
+                .ge(LifeDiscountCouponFriendRule::getMoneyLow, lifeUserOrder.getFinalPrice())
+                .le(LifeDiscountCouponFriendRule::getMoneyHigh, lifeUserOrder.getFinalPrice())
+                .eq(LifeDiscountCouponFriendRule::getDeleteFlag, 0);
+        List<LifeDiscountCouponFriendRule> lifeDiscountCouponFriendRules = lifeDiscountCouponFriendRuleMapper.selectList(ruleLambdaQueryWrapper);
+        if (ObjectUtils.isNotEmpty(lifeDiscountCouponFriendRules)) {
+            LambdaQueryWrapper<LifeDiscountCouponFriendRuleDetail> detailLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            detailLambdaQueryWrapper.in(LifeDiscountCouponFriendRuleDetail::getRuleId, lifeDiscountCouponFriendRules.stream().map(LifeDiscountCouponFriendRule::getId).collect(Collectors.toList()));
+            List<LifeDiscountCouponFriendRuleDetail> lifeDiscountCouponFriendRuleDetails = lifeDiscountCouponFriendRuleDetailMapper.selectList(detailLambdaQueryWrapper);
+            couponList = lifeDiscountCouponFriendRuleDetails.stream().map(LifeDiscountCouponFriendRuleDetail::getCouponId).collect(Collectors.toList());
+        }
+
+
         lifeUserOrder.setSendDiscountCouponFlag(1);
         lifeUserOrderMapper.updateById(lifeUserOrder);
 
-        // 用于存储最终成功发放的优惠券信息的列表
-        List<LifeDiscountCouponStoreFriendVo> result = new ArrayList<>();
-
-        // 获取当前消费用户的ID
-        int userId = Integer.parseInt(lifeUserOrder.getUserId());
-        LifeUser lifeUser = lifeUserMapper.selectById(userId);
-        // 从传入的DTO对象中获取店铺ID
-        StoreUser storeUser =
-                storeUserMapper.selectOne(new LambdaQueryWrapper<StoreUser>().eq(StoreUser::getStoreId, lifeUserOrder.getStoreId()));
-        Integer storeUserId = storeUser.getId();
-        Integer storeId = storeUser.getStoreId();
-        StoreInfo storeInfo = storeInfoMapper.selectById(storeUser.getStoreId());
-
-        // 根据店铺ID从数据库中查询该店铺为好友设定的所有优惠券信息
-        List<LifeDiscountCouponStoreFriend> lifeDiscountCouponStoreFriends = lifeDiscountCouponStoreFriendMapper.selectList(
-                // 使用LambdaQueryWrapper构建查询条件,筛选出店铺ID等于指定店铺ID的优惠券记录,并且发布状态为已发布
-                new LambdaQueryWrapper<LifeDiscountCouponStoreFriend>().eq(LifeDiscountCouponStoreFriend::getStoreUserId, storeId)
-                        .eq(LifeDiscountCouponStoreFriend::getReleaseType, 1));
-
-        // 获取当前日期,用于后续判断优惠券是否在有效期内
-        LocalDate currentDate = LocalDate.now();
-        if (!lifeDiscountCouponStoreFriends.isEmpty()) {
-            // 遍历该店铺为好友设定的所有优惠券信息
-            for (LifeDiscountCouponStoreFriend coupon : lifeDiscountCouponStoreFriends) {
-                // 创建一个Lambda查询包装器,用于构建查询优惠券的条件
-                LambdaQueryWrapper<LifeDiscountCoupon> queryWrapper = new LambdaQueryWrapper<>();
-                // 设置查询条件:优惠券的领取状态为可领取
-                queryWrapper.eq(LifeDiscountCoupon::getGetStatus, DiscountCouponEnum.CAN_GET.getValue());
-                // 设置查询条件:优惠券的ID等于当前遍历到的优惠券ID
-                queryWrapper.eq(LifeDiscountCoupon::getId, coupon.getCouponId());
-                // 设置查询条件:优惠券的结束日期大于等于当前日期,即优惠券在有效期内
-                queryWrapper.ge(LifeDiscountCoupon::getValidDate, currentDate);
-                // 设置查询条件:优惠券还有库存
-                queryWrapper.gt(LifeDiscountCoupon::getSingleQty, 0);
-
-                // 根据上述查询条件从数据库中查询符合条件的优惠券信息
-                LifeDiscountCoupon lifeDiscountCoupon = lifeDiscountCouponMapper.selectOne(queryWrapper);
-
-                // 如果查询到符合条件的优惠券,说明该优惠券可领
-                if (lifeDiscountCoupon != null) {
-                    // 设定本次领取优惠券的数量,这里固定为1张
-                    Integer receiveQuantity = 1;
-
-                    // 循环领取优惠券,根据设定的领取数量进行多次领取操作
-                    for (int i = 0; i < receiveQuantity; i++) {
-                        // 创建一个新的用户优惠券记录对象
-                        LifeDiscountCouponUser lifeDiscountCouponUser = new LifeDiscountCouponUser();
-                        // 设置该优惠券记录的优惠券ID
-                        lifeDiscountCouponUser.setCouponId(coupon.getCouponId());
-                        // 设置该优惠券记录的用户ID为当前用户ID
-                        lifeDiscountCouponUser.setUserId(userId);
-                        // 设置该优惠券的领取时间为当前时间
-                        lifeDiscountCouponUser.setReceiveTime(new Date());
-                        // 设置该优惠券的过期时间为优惠券本身的结束日期
-                        lifeDiscountCouponUser.setExpirationTime(lifeDiscountCoupon.getValidDate());
-                        // 设置该优惠券的状态为待使用
-                        lifeDiscountCouponUser.setStatus(Integer.parseInt(DiscountCouponEnum.WAITING_USED.getValue()));
-                        // 将该用户优惠券记录插入到数据库中
-                        lifeDiscountCouponUserMapper.insert(lifeDiscountCouponUser);
+        //有符合规则的优惠券
+        if (ObjectUtils.isNotEmpty(couponList) && !couponList.isEmpty()) {
+            // 获取当前消费用户的ID
+            int userId = Integer.parseInt(lifeUserOrder.getUserId());
+            LifeUser lifeUser = lifeUserMapper.selectById(userId);
+            // 从传入的DTO对象中获取店铺ID
+            StoreUser storeUser =
+                    storeUserMapper.selectOne(new LambdaQueryWrapper<StoreUser>().eq(StoreUser::getStoreId, lifeUserOrder.getStoreId()));
+            Integer storeUserId = storeUser.getId();
+            Integer storeId = storeUser.getStoreId();
+            StoreInfo storeInfo = storeInfoMapper.selectById(storeUser.getStoreId());
+
+            // 根据店铺ID从数据库中查询该店铺为好友设定的所有优惠券信息
+            List<LifeDiscountCouponStoreFriend> lifeDiscountCouponStoreFriends = lifeDiscountCouponStoreFriendMapper.selectList(
+                    // 使用LambdaQueryWrapper构建查询条件,筛选出店铺ID等于指定店铺ID的优惠券记录,并且发布状态为已发布
+                    new LambdaQueryWrapper<LifeDiscountCouponStoreFriend>().eq(LifeDiscountCouponStoreFriend::getStoreUserId, storeId)
+                            .eq(LifeDiscountCouponStoreFriend::getReleaseType, 1)
+                            .in(LifeDiscountCouponStoreFriend::getCouponId, couponList));
+
+            // 获取当前日期,用于后续判断优惠券是否在有效期内
+            LocalDate currentDate = LocalDate.now();
+            if (!lifeDiscountCouponStoreFriends.isEmpty()) {
+                // 遍历该店铺为好友设定的所有优惠券信息
+                for (LifeDiscountCouponStoreFriend coupon : lifeDiscountCouponStoreFriends) {
+                    // 创建一个Lambda查询包装器,用于构建查询优惠券的条件
+                    LambdaQueryWrapper<LifeDiscountCoupon> queryWrapper = new LambdaQueryWrapper<>();
+                    // 设置查询条件:优惠券的领取状态为可领取
+                    queryWrapper.eq(LifeDiscountCoupon::getGetStatus, DiscountCouponEnum.CAN_GET.getValue());
+                    // 设置查询条件:优惠券的ID等于当前遍历到的优惠券ID
+                    queryWrapper.eq(LifeDiscountCoupon::getId, coupon.getCouponId());
+                    // 设置查询条件:优惠券的结束日期大于等于当前日期,即优惠券在有效期内
+                    queryWrapper.ge(LifeDiscountCoupon::getValidDate, currentDate);
+                    // 设置查询条件:优惠券还有库存
+                    queryWrapper.gt(LifeDiscountCoupon::getSingleQty, 0);
+
+                    // 根据上述查询条件从数据库中查询符合条件的优惠券信息
+                    LifeDiscountCoupon lifeDiscountCoupon = lifeDiscountCouponMapper.selectOne(queryWrapper);
+
+                    // 如果查询到符合条件的优惠券,说明该优惠券可领
+                    if (lifeDiscountCoupon != null) {
+                        // 设定本次领取优惠券的数量,这里固定为1张
+                        Integer receiveQuantity = 1;
+
+                        // 循环领取优惠券,根据设定的领取数量进行多次领取操作
+                        for (int i = 0; i < receiveQuantity; i++) {
+                            // 创建一个新的用户优惠券记录对象
+                            LifeDiscountCouponUser lifeDiscountCouponUser = new LifeDiscountCouponUser();
+                            // 设置该优惠券记录的优惠券ID
+                            lifeDiscountCouponUser.setCouponId(coupon.getCouponId());
+                            // 设置该优惠券记录的用户ID为当前用户ID
+                            lifeDiscountCouponUser.setUserId(userId);
+                            // 设置该优惠券的领取时间为当前时间
+                            lifeDiscountCouponUser.setReceiveTime(new Date());
+                            // 设置该优惠券的过期时间为优惠券本身的结束日期
+                            lifeDiscountCouponUser.setExpirationTime(lifeDiscountCoupon.getValidDate());
+                            // 设置该优惠券的状态为待使用
+                            lifeDiscountCouponUser.setStatus(Integer.parseInt(DiscountCouponEnum.WAITING_USED.getValue()));
+                            // 将该用户优惠券记录插入到数据库中
+                            lifeDiscountCouponUserMapper.insert(lifeDiscountCouponUser);
+                        }
+
+                        // 削减该优惠券的库存,根据领取数量减少库存
+                        coupon.setSingleQty(coupon.getSingleQty() - receiveQuantity);
+                        // 更新数据库中该优惠券的库存信息
+                        lifeDiscountCouponStoreFriendMapper.updateById(coupon);
+
+                        // 创建一个用于存储优惠券信息的VO对象
+                        LifeDiscountCouponStoreFriendVo lifeDiscountCouponStoreFriendVo = new LifeDiscountCouponStoreFriendVo();
+                        // 将优惠券信息复制到VO对象中
+                        BeanUtils.copyProperties(coupon, lifeDiscountCouponStoreFriendVo);
+                        // 将该VO对象添加到最终结果列表中
+                        result.add(lifeDiscountCouponStoreFriendVo);
                     }
-
-                    // 削减该优惠券的库存,根据领取数量减少库存
-                    coupon.setSingleQty(coupon.getSingleQty() - receiveQuantity);
-                    // 更新数据库中该优惠券的库存信息
-                    lifeDiscountCouponStoreFriendMapper.updateById(coupon);
-
-                    // 创建一个用于存储优惠券信息的VO对象
-                    LifeDiscountCouponStoreFriendVo lifeDiscountCouponStoreFriendVo = new LifeDiscountCouponStoreFriendVo();
-                    // 将优惠券信息复制到VO对象中
-                    BeanUtils.copyProperties(coupon, lifeDiscountCouponStoreFriendVo);
-                    // 将该VO对象添加到最终结果列表中
-                    result.add(lifeDiscountCouponStoreFriendVo);
                 }
-            }
 
-            //存储发放日志
-            LifeDiscountCouponStoreFriendSendRecord lifeDiscountCouponStoreFriendSendRecord = new LifeDiscountCouponStoreFriendSendRecord();
-            //存入门店id
-            lifeDiscountCouponStoreFriendSendRecord.setStoreId(Integer.parseInt(lifeUserOrder.getStoreId()));
-            //存入接收人id
-            lifeDiscountCouponStoreFriendSendRecord.setUserId(userId);
-            //存入发放人id
-            lifeDiscountCouponStoreFriendSendRecord.setStoreUserId(storeUserId);
-            //存入订单id
-            lifeDiscountCouponStoreFriendSendRecord.setOrderId(Integer.parseInt(lifeUserOrder.getId()));
-            //存入优惠券ids
-            String[] couponIds = result.stream()
-                    .map(LifeDiscountCouponStoreFriendVo::getCouponId)
-                    .map(String::valueOf)  // 将 Integer 转换为 String
-                    .toArray(String[]::new);
-
-            String join = String.join(",", couponIds);
-            lifeDiscountCouponStoreFriendSendRecord.setDiscountCouponIds(join);
-            lifeDiscountCouponStoreFriendSendRecordMapper.insert(lifeDiscountCouponStoreFriendSendRecord);
-
-            //发送公告消息
-            LifeNotice lifeNotice = new LifeNotice();
-            //存入发送人
-            lifeNotice.setSenderId("system");
-            //存入接收人
-            lifeNotice.setReceiverId("user_" + lifeUser.getUserPhone());
-            //存入信息
-            lifeNotice.setContext(storeInfo.getStoreName() + " 赠送了您他的好友店铺优惠券,快去我的券包查看吧~");
-            //存入类型
-            lifeNotice.setNoticeType(1);
-            lifeNoticeMapper.insert(lifeNotice);
+                //存储发放日志
+                LifeDiscountCouponStoreFriendSendRecord lifeDiscountCouponStoreFriendSendRecord = new LifeDiscountCouponStoreFriendSendRecord();
+                //存入门店id
+                lifeDiscountCouponStoreFriendSendRecord.setStoreId(Integer.parseInt(lifeUserOrder.getStoreId()));
+                //存入接收人id
+                lifeDiscountCouponStoreFriendSendRecord.setUserId(userId);
+                //存入发放人id
+                lifeDiscountCouponStoreFriendSendRecord.setStoreUserId(storeUserId);
+                //存入订单id
+                lifeDiscountCouponStoreFriendSendRecord.setOrderId(Integer.parseInt(lifeUserOrder.getId()));
+                //存入优惠券ids
+                String[] couponIds = result.stream()
+                        .map(LifeDiscountCouponStoreFriendVo::getCouponId)
+                        .map(String::valueOf)  // 将 Integer 转换为 String
+                        .toArray(String[]::new);
+
+                String join = String.join(",", couponIds);
+                lifeDiscountCouponStoreFriendSendRecord.setDiscountCouponIds(join);
+                lifeDiscountCouponStoreFriendSendRecordMapper.insert(lifeDiscountCouponStoreFriendSendRecord);
+
+                //发送公告消息
+                LifeNotice lifeNotice = new LifeNotice();
+                //存入发送人
+                lifeNotice.setSenderId("system");
+                //存入接收人
+                lifeNotice.setReceiverId("user_" + lifeUser.getUserPhone());
+                //存入信息
+                lifeNotice.setContext(storeInfo.getStoreName() + " 赠送了您他的好友店铺优惠券,快去我的券包查看吧~");
+                //存入类型
+                lifeNotice.setNoticeType(1);
+                lifeNoticeMapper.insert(lifeNotice);
 
+            }
         }
+
+
+
+
         // 返回成功发放的优惠券信息列表
         return result;
     }
@@ -435,10 +461,11 @@ public class LifeDiscountCouponStoreFriendServiceImpl extends ServiceImpl<LifeDi
     }
 
     @Override
-    public List<LifeDiscountCouponFriendRuleVo> getReceivedSendFriendCouponList(String storeUserId, String friendStoreUserId) {
+    public List<LifeDiscountCouponFriendRuleVo> getReceivedSendFriendCouponList(String storeUserId, String friendStoreUserId,String storeName) {
         QueryWrapper<LifeDiscountCouponFriendRuleVo> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(StringUtils.isNotEmpty(storeUserId),"ldcsf.store_user_id", storeUserId)
-                .eq(StringUtils.isNotEmpty(friendStoreUserId),"ldcsf.friend_store_user_id", friendStoreUserId);
+                .eq(StringUtils.isNotEmpty(friendStoreUserId),"ldcsf.friend_store_user_id", friendStoreUserId)
+                .like(StringUtils.isNotEmpty(storeName),"si.store_name", storeName);
         return lifeDiscountCouponStoreFriendMapper.getReceivedSendFriendCouponList(queryWrapper);
     }
 }

+ 48 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreCustomerServiceServiceImpl.java

@@ -1,6 +1,10 @@
 package shop.alien.store.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
 import shop.alien.entity.store.StoreCustomerService;
 import shop.alien.mapper.StoreCustomerServiceMapper;
@@ -8,6 +12,7 @@ import shop.alien.store.service.StoreCustomerServiceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -30,4 +35,47 @@ public class StoreCustomerServiceServiceImpl extends ServiceImpl<StoreCustomerSe
         List<StoreCustomerService> list = storeCustomerServiceMapper.selectList(lambdaQueryWrapper);
         return list.stream().filter(item -> item.getQuestion().contains(question)).findFirst().orElse(null);
     }
+
+    @Override
+    public StoreCustomerService saveStoreCustomerService(StoreCustomerService storeCustomerService) {
+        storeCustomerService.setUpdatedTime(new Date());
+        if (ObjectUtils.isNotEmpty(storeCustomerService.getId())) {
+            storeCustomerServiceMapper.updateById(storeCustomerService);
+        } else {
+            storeCustomerService.setCreatedTime(new Date());
+            storeCustomerServiceMapper.insert(storeCustomerService);
+        }
+        return storeCustomerService;
+    }
+
+    @Override
+    public void delStoreCustomerService(String id) {
+        storeCustomerServiceMapper.deleteById(id);
+    }
+
+    @Override
+    public IPage<StoreCustomerService> getStoreCustomerServicePage(int page, int size, String question, String type) {
+        LambdaQueryWrapper<StoreCustomerService> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.like(StringUtils.isNotEmpty(question), StoreCustomerService::getQuestion, question)
+                .eq(StringUtils.isNotEmpty(type), StoreCustomerService::getType, type)
+                .eq(StoreCustomerService::getDeleteFlag, 0)
+                .orderByDesc(StoreCustomerService::getCreatedTime);
+        IPage<StoreCustomerService> storeCustomerServiceIPage = new Page<>(page, size);
+        IPage<StoreCustomerService> selectPage = storeCustomerServiceMapper.selectPage(storeCustomerServiceIPage, lambdaQueryWrapper);
+        return selectPage;
+    }
+
+    @Override
+    public StoreCustomerService getById(String id) {
+        return storeCustomerServiceMapper.selectById(id);
+    }
+
+    @Override
+    public List<StoreCustomerService> getRandList(String type, Integer limit) {
+        LambdaQueryWrapper<StoreCustomerService> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(StoreCustomerService::getType, type)
+                .eq(StoreCustomerService::getDeleteFlag, 0)
+                .last("order by rand() LIMIT " + limit);
+        return storeCustomerServiceMapper.selectList(lambdaQueryWrapper);
+    }
 }