Parcourir la source

Merge branch 'dev/2024/0517/update-admin-Y' of Harper/feifan-backend-zx-admin into master

修改初始化配置,以防redis的删除将数据删掉
Yangzw il y a 11 mois
Parent
commit
a3f2535b9f
24 fichiers modifiés avec 614 ajouts et 27 suppressions
  1. 1 0
      feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/ErrorCodeConstants.java
  2. 7 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatuschangelog/SocialStatusChangeLogController.java
  3. 23 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatuschangelog/vo/UserSignSocialLogRespVO.java
  4. 94 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/usersigninlog/UserSignInLogController.java
  5. 27 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/usersigninlog/vo/UserSignInLogPageReqVO.java
  6. 29 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/usersigninlog/vo/UserSignInLogRespVO.java
  7. 22 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/usersigninlog/vo/UserSignInLogSaveReqVO.java
  8. 36 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/usersigninlog/UserSignInLogDO.java
  9. 8 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/socialstatuschangelog/SocialStatusChangeLogMapper.java
  10. 27 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/usersigninlog/UserSignInLogMapper.java
  11. 2 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/socialstatuschangelog/SocialStatusChangeLogService.java
  12. 6 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/socialstatuschangelog/SocialStatusChangeLogServiceImpl.java
  13. 53 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/usersigninlog/UserSignInLogService.java
  14. 70 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/usersigninlog/UserSignInLogServiceImpl.java
  15. 12 0
      feifan-module-distri/feifan-module-distri-biz/src/main/resources/mapper/usersigninlog/UserSignInLogMapper.xml
  16. 131 0
      feifan-module-distri/feifan-module-distri-biz/src/test/java/cn/newfeifan/mall/module/distri/service/usersigninlog/UserSignInLogServiceImplTest.java
  17. 2 2
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderUpdateServiceImpl.java
  18. 6 1
      feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/controller/admin/shop/ShopController.java
  19. 2 0
      feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/service/shop/ShopService.java
  20. 6 0
      feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/service/shop/ShopServiceImpl.java
  21. 3 1
      feifan-module-system/feifan-module-system-api/src/main/java/cn/newfeifan/mall/module/system/enums/ErrorCodeConstants.java
  22. 3 5
      feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/config/StartConfig.java
  23. 23 9
      feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/service/config/SystemConfigServiceImpl.java
  24. 21 9
      feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/service/wechatmsgtemplate/WechatMsgTemplateServiceImpl.java

+ 1 - 0
feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/ErrorCodeConstants.java

@@ -27,5 +27,6 @@ public interface ErrorCodeConstants {
     ErrorCode PT_PROFIT_DAILY_STATISTICS_LOG_NOT_EXISTS = new ErrorCode(1_002_030_020, "查询该日的记录不存在");
     ErrorCode PT_PROFIT_DAILY_STATISTICS_LOG_NOT_EXISTS = new ErrorCode(1_002_030_020, "查询该日的记录不存在");
     ErrorCode SOCIAL_STATUS_CHANGE_LOG_NOT_EXISTS = new ErrorCode(1_002_030_021, "查询日志记录不存在");
     ErrorCode SOCIAL_STATUS_CHANGE_LOG_NOT_EXISTS = new ErrorCode(1_002_030_021, "查询日志记录不存在");
     ErrorCode GROSS_PROFIT_BONUS_QUOTA_PERC_EXCEED_MAXIMUM_LIMIT = new ErrorCode(1_002_030_022, "合赢奖不能超过最大限制");
     ErrorCode GROSS_PROFIT_BONUS_QUOTA_PERC_EXCEED_MAXIMUM_LIMIT = new ErrorCode(1_002_030_022, "合赢奖不能超过最大限制");
+    ErrorCode USER_SIGN_IN_LOG_NOT_EXISTS = new ErrorCode(1_002_030_023, "签到日志不存在");
 
 
 }
 }

+ 7 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatuschangelog/SocialStatusChangeLogController.java

@@ -91,4 +91,11 @@ public class SocialStatusChangeLogController {
                         BeanUtils.toBean(list, SocialStatusChangeLogRespVO.class));
                         BeanUtils.toBean(list, SocialStatusChangeLogRespVO.class));
     }
     }
 
 
+    @GetMapping("/getUserSignLog")
+    @Operation(summary = "获得会员身价变化日志分页")
+    @PreAuthorize("@ss.hasPermission('distri:social-status-change-log:create')")
+    public CommonResult<PageResult<UserSignSocialLogRespVO>> getUserSignLog(@Valid SocialStatusChangeLogPageReqVO pageReqVO) {
+        return success(socialStatusChangeLogService.getUserSignLog(pageReqVO));
+    }
+
 }
 }

+ 23 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatuschangelog/vo/UserSignSocialLogRespVO.java

@@ -0,0 +1,23 @@
+package cn.newfeifan.mall.module.distri.controller.admin.socialstatuschangelog.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 会员签到身价变化日志分页 Request VO")
+@Data
+public class UserSignSocialLogRespVO {
+    @Schema(description = "编号", example = "8042")
+    private Long id;
+
+    @Schema(description = "身价点数在本类别操作的变化值")
+    private Long variationValue;
+
+    @Schema(description = "操作时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+}

+ 94 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/usersigninlog/UserSignInLogController.java

@@ -0,0 +1,94 @@
+package cn.newfeifan.mall.module.distri.controller.admin.usersigninlog;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.pojo.CommonResult;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+import static cn.newfeifan.mall.framework.common.pojo.CommonResult.success;
+
+import cn.newfeifan.mall.framework.excel.core.util.ExcelUtils;
+
+import cn.newfeifan.mall.framework.operatelog.core.annotations.OperateLog;
+import static cn.newfeifan.mall.framework.operatelog.core.enums.OperateTypeEnum.*;
+
+import cn.newfeifan.mall.module.distri.controller.admin.usersigninlog.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.usersigninlog.UserSignInLogDO;
+import cn.newfeifan.mall.module.distri.service.usersigninlog.UserSignInLogService;
+
+@Tag(name = "管理后台 - 用户签到日志")
+@RestController
+@RequestMapping("/distri/user-sign-in-log")
+@Validated
+public class UserSignInLogController {
+
+    @Resource
+    private UserSignInLogService userSignInLogService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建用户签到日志")
+    @PreAuthorize("@ss.hasPermission('distri:user-sign-in-log:create')")
+    public CommonResult<Long> createUserSignInLog(@Valid @RequestBody UserSignInLogSaveReqVO createReqVO) {
+        return success(userSignInLogService.createUserSignInLog(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新用户签到日志")
+    @PreAuthorize("@ss.hasPermission('distri:user-sign-in-log:update')")
+    public CommonResult<Boolean> updateUserSignInLog(@Valid @RequestBody UserSignInLogSaveReqVO updateReqVO) {
+        userSignInLogService.updateUserSignInLog(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除用户签到日志")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('distri:user-sign-in-log:delete')")
+    public CommonResult<Boolean> deleteUserSignInLog(@RequestParam("id") Long id) {
+        userSignInLogService.deleteUserSignInLog(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得用户签到日志")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('distri:user-sign-in-log:query')")
+    public CommonResult<UserSignInLogRespVO> getUserSignInLog(@RequestParam("id") Long id) {
+        UserSignInLogDO userSignInLog = userSignInLogService.getUserSignInLog(id);
+        return success(BeanUtils.toBean(userSignInLog, UserSignInLogRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得用户签到日志分页")
+    @PreAuthorize("@ss.hasPermission('distri:user-sign-in-log:query')")
+    public CommonResult<PageResult<UserSignInLogRespVO>> getUserSignInLogPage(@Valid UserSignInLogPageReqVO pageReqVO) {
+        PageResult<UserSignInLogDO> pageResult = userSignInLogService.getUserSignInLogPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, UserSignInLogRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出用户签到日志 Excel")
+    @PreAuthorize("@ss.hasPermission('distri:user-sign-in-log:export')")
+    @OperateLog(type = EXPORT)
+    public void exportUserSignInLogExcel(@Valid UserSignInLogPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<UserSignInLogDO> list = userSignInLogService.getUserSignInLogPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "用户签到日志.xls", "数据", UserSignInLogRespVO.class,
+                        BeanUtils.toBean(list, UserSignInLogRespVO.class));
+    }
+
+}

+ 27 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/usersigninlog/vo/UserSignInLogPageReqVO.java

@@ -0,0 +1,27 @@
+package cn.newfeifan.mall.module.distri.controller.admin.usersigninlog.vo;
+
+import lombok.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 用户签到日志分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class UserSignInLogPageReqVO extends PageParam {
+
+    @Schema(description = "签到的用户ID", example = "29837")
+    private Long userId;
+
+    @Schema(description = "连续签到天数")
+    private Integer runningDays;
+
+    @Schema(description = "操作时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 29 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/usersigninlog/vo/UserSignInLogRespVO.java

@@ -0,0 +1,29 @@
+package cn.newfeifan.mall.module.distri.controller.admin.usersigninlog.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 用户签到日志 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class UserSignInLogRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24258")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "签到的用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "29837")
+    @ExcelProperty("签到的用户ID")
+    private Long userId;
+
+    @Schema(description = "连续签到天数", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("连续签到天数")
+    private Integer runningDays;
+
+    @Schema(description = "操作时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("操作时间")
+    private LocalDateTime createTime;
+
+}

+ 22 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/usersigninlog/vo/UserSignInLogSaveReqVO.java

@@ -0,0 +1,22 @@
+package cn.newfeifan.mall.module.distri.controller.admin.usersigninlog.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 用户签到日志新增/修改 Request VO")
+@Data
+public class UserSignInLogSaveReqVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24258")
+    private Long id;
+
+    @Schema(description = "签到的用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "29837")
+    @NotNull(message = "签到的用户ID不能为空")
+    private Long userId;
+
+    @Schema(description = "连续签到天数", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "连续签到天数不能为空")
+    private Integer runningDays;
+
+}

+ 36 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/usersigninlog/UserSignInLogDO.java

@@ -0,0 +1,36 @@
+package cn.newfeifan.mall.module.distri.dal.dataobject.usersigninlog;
+
+import lombok.*;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.newfeifan.mall.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 用户签到日志 DO
+ *
+ * @author 非繁人
+ */
+@TableName("distri_user_sign_in_log")
+@KeySequence("distri_user_sign_in_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserSignInLogDO extends BaseDO {
+
+    /**
+     * 主键id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 签到的用户ID
+     */
+    private Long userId;
+    /**
+     * 连续签到天数
+     */
+    private Integer runningDays;
+
+}

+ 8 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/socialstatuschangelog/SocialStatusChangeLogMapper.java

@@ -5,9 +5,11 @@ import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
 import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
 import cn.newfeifan.mall.module.distri.dal.dataobject.socialstatuschangelog.SocialStatusChangeLogDO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.socialstatuschangelog.SocialStatusChangeLogDO;
+import cn.newfeifan.mall.module.distri.enums.SocialStatusEnum;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 import cn.newfeifan.mall.module.distri.controller.admin.socialstatuschangelog.vo.*;
 import cn.newfeifan.mall.module.distri.controller.admin.socialstatuschangelog.vo.*;
 
 
+
 /**
 /**
  * 会员身价变化日志 Mapper
  * 会员身价变化日志 Mapper
  *
  *
@@ -30,4 +32,10 @@ public interface SocialStatusChangeLogMapper extends BaseMapperX<SocialStatusCha
                 .orderByDesc(SocialStatusChangeLogDO::getId));
                 .orderByDesc(SocialStatusChangeLogDO::getId));
     }
     }
 
 
+     default PageResult<SocialStatusChangeLogDO> getUserSignLog(SocialStatusChangeLogPageReqVO pageReqVO){
+        return selectPage(pageReqVO ,new LambdaQueryWrapperX<SocialStatusChangeLogDO>()
+                .eq(SocialStatusChangeLogDO::getUserId, pageReqVO.getUserId())
+                .eq(SocialStatusChangeLogDO::getSocialStatusChangeCategoryId, SocialStatusEnum.SIGN_IN_SOCIAL.getStatus())
+        );
+     }
 }
 }

+ 27 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/usersigninlog/UserSignInLogMapper.java

@@ -0,0 +1,27 @@
+package cn.newfeifan.mall.module.distri.dal.mysql.usersigninlog;
+
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
+import cn.newfeifan.mall.module.distri.dal.dataobject.usersigninlog.UserSignInLogDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.newfeifan.mall.module.distri.controller.admin.usersigninlog.vo.*;
+
+/**
+ * 用户签到日志 Mapper
+ *
+ * @author 非繁人
+ */
+@Mapper
+public interface UserSignInLogMapper extends BaseMapperX<UserSignInLogDO> {
+
+    default PageResult<UserSignInLogDO> selectPage(UserSignInLogPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<UserSignInLogDO>()
+                .eqIfPresent(UserSignInLogDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(UserSignInLogDO::getRunningDays, reqVO.getRunningDays())
+                .betweenIfPresent(UserSignInLogDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(UserSignInLogDO::getId));
+    }
+
+}

+ 2 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/socialstatuschangelog/SocialStatusChangeLogService.java

@@ -1,6 +1,7 @@
 package cn.newfeifan.mall.module.distri.service.socialstatuschangelog;
 package cn.newfeifan.mall.module.distri.service.socialstatuschangelog;
 
 
 import javax.validation.*;
 import javax.validation.*;
+
 import cn.newfeifan.mall.module.distri.controller.admin.socialstatuschangelog.vo.*;
 import cn.newfeifan.mall.module.distri.controller.admin.socialstatuschangelog.vo.*;
 import cn.newfeifan.mall.module.distri.dal.dataobject.socialstatuschangelog.SocialStatusChangeLogDO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.socialstatuschangelog.SocialStatusChangeLogDO;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
@@ -63,4 +64,5 @@ public interface SocialStatusChangeLogService {
      */
      */
     PageResult<SocialStatusChangeLogDO> getSocialStatusChangeLogPage(SocialStatusChangeLogPageReqVO pageReqVO);
     PageResult<SocialStatusChangeLogDO> getSocialStatusChangeLogPage(SocialStatusChangeLogPageReqVO pageReqVO);
 
 
+    PageResult<UserSignSocialLogRespVO> getUserSignLog(SocialStatusChangeLogPageReqVO pageReqVO);
 }
 }

+ 6 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/socialstatuschangelog/SocialStatusChangeLogServiceImpl.java

@@ -87,4 +87,10 @@ public class SocialStatusChangeLogServiceImpl implements SocialStatusChangeLogSe
         return socialStatusChangeLogMapper.selectPage(pageReqVO);
         return socialStatusChangeLogMapper.selectPage(pageReqVO);
     }
     }
 
 
+    @Override
+    public PageResult<UserSignSocialLogRespVO> getUserSignLog(SocialStatusChangeLogPageReqVO pageReqVO) {
+        PageResult<SocialStatusChangeLogDO> userSignLog = socialStatusChangeLogMapper.getUserSignLog(pageReqVO);
+        return BeanUtils.toBean(userSignLog, UserSignSocialLogRespVO.class);
+    }
+
 }
 }

+ 53 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/usersigninlog/UserSignInLogService.java

@@ -0,0 +1,53 @@
+package cn.newfeifan.mall.module.distri.service.usersigninlog;
+
+import javax.validation.*;
+import cn.newfeifan.mall.module.distri.controller.admin.usersigninlog.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.usersigninlog.UserSignInLogDO;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+
+/**
+ * 用户签到日志 Service 接口
+ *
+ * @author 非繁人
+ */
+public interface UserSignInLogService {
+
+    /**
+     * 创建用户签到日志
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createUserSignInLog(@Valid UserSignInLogSaveReqVO createReqVO);
+
+    /**
+     * 更新用户签到日志
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateUserSignInLog(@Valid UserSignInLogSaveReqVO updateReqVO);
+
+    /**
+     * 删除用户签到日志
+     *
+     * @param id 编号
+     */
+    void deleteUserSignInLog(Long id);
+
+    /**
+     * 获得用户签到日志
+     *
+     * @param id 编号
+     * @return 用户签到日志
+     */
+    UserSignInLogDO getUserSignInLog(Long id);
+
+    /**
+     * 获得用户签到日志分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 用户签到日志分页
+     */
+    PageResult<UserSignInLogDO> getUserSignInLogPage(UserSignInLogPageReqVO pageReqVO);
+
+}

+ 70 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/usersigninlog/UserSignInLogServiceImpl.java

@@ -0,0 +1,70 @@
+package cn.newfeifan.mall.module.distri.service.usersigninlog;
+
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import cn.newfeifan.mall.module.distri.controller.admin.usersigninlog.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.usersigninlog.UserSignInLogDO;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+
+import cn.newfeifan.mall.module.distri.dal.mysql.usersigninlog.UserSignInLogMapper;
+
+import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.*;
+
+/**
+ * 用户签到日志 Service 实现类
+ *
+ * @author 非繁人
+ */
+@Service
+@Validated
+public class UserSignInLogServiceImpl implements UserSignInLogService {
+
+    @Resource
+    private UserSignInLogMapper userSignInLogMapper;
+
+    @Override
+    public Long createUserSignInLog(UserSignInLogSaveReqVO createReqVO) {
+        // 插入
+        UserSignInLogDO userSignInLog = BeanUtils.toBean(createReqVO, UserSignInLogDO.class);
+        userSignInLogMapper.insert(userSignInLog);
+        // 返回
+        return userSignInLog.getId();
+    }
+
+    @Override
+    public void updateUserSignInLog(UserSignInLogSaveReqVO updateReqVO) {
+        // 校验存在
+        validateUserSignInLogExists(updateReqVO.getId());
+        // 更新
+        UserSignInLogDO updateObj = BeanUtils.toBean(updateReqVO, UserSignInLogDO.class);
+        userSignInLogMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteUserSignInLog(Long id) {
+        // 校验存在
+        validateUserSignInLogExists(id);
+        // 删除
+        userSignInLogMapper.deleteById(id);
+    }
+
+    private void validateUserSignInLogExists(Long id) {
+        if (userSignInLogMapper.selectById(id) == null) {
+            throw exception(USER_SIGN_IN_LOG_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public UserSignInLogDO getUserSignInLog(Long id) {
+        return userSignInLogMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<UserSignInLogDO> getUserSignInLogPage(UserSignInLogPageReqVO pageReqVO) {
+        return userSignInLogMapper.selectPage(pageReqVO);
+    }
+
+}

+ 12 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/resources/mapper/usersigninlog/UserSignInLogMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.newfeifan.mall.module.distri.dal.mysql.usersigninlog.UserSignInLogMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.zhongxing.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 131 - 0
feifan-module-distri/feifan-module-distri-biz/src/test/java/cn/newfeifan/mall/module/distri/service/usersigninlog/UserSignInLogServiceImplTest.java

@@ -0,0 +1,131 @@
+package cn.newfeifan.mall.module.distri.service.usersigninlog;
+
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import javax.annotation.Resource;
+
+import cn.newfeifan.mall.framework.test.core.ut.BaseDbUnitTest;
+
+import cn.newfeifan.mall.module.distri.controller.admin.usersigninlog.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.usersigninlog.UserSignInLogDO;
+import cn.newfeifan.mall.module.distri.dal.mysql.usersigninlog.UserSignInLogMapper;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+
+import org.springframework.context.annotation.Import;
+
+import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.*;
+import static cn.newfeifan.mall.framework.test.core.util.AssertUtils.*;
+import static cn.newfeifan.mall.framework.test.core.util.RandomUtils.*;
+import static cn.newfeifan.mall.framework.common.util.date.LocalDateTimeUtils.*;
+import static cn.newfeifan.mall.framework.common.util.object.ObjectUtils.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * {@link UserSignInLogServiceImpl} 的单元测试类
+ *
+ * @author 非繁人
+ */
+@Import(UserSignInLogServiceImpl.class)
+public class UserSignInLogServiceImplTest extends BaseDbUnitTest {
+
+    @Resource
+    private UserSignInLogServiceImpl userSignInLogService;
+
+    @Resource
+    private UserSignInLogMapper userSignInLogMapper;
+
+    @Test
+    public void testCreateUserSignInLog_success() {
+        // 准备参数
+        UserSignInLogSaveReqVO createReqVO = randomPojo(UserSignInLogSaveReqVO.class).setId(null);
+
+        // 调用
+        Long userSignInLogId = userSignInLogService.createUserSignInLog(createReqVO);
+        // 断言
+        assertNotNull(userSignInLogId);
+        // 校验记录的属性是否正确
+        UserSignInLogDO userSignInLog = userSignInLogMapper.selectById(userSignInLogId);
+        assertPojoEquals(createReqVO, userSignInLog, "id");
+    }
+
+    @Test
+    public void testUpdateUserSignInLog_success() {
+        // mock 数据
+        UserSignInLogDO dbUserSignInLog = randomPojo(UserSignInLogDO.class);
+        userSignInLogMapper.insert(dbUserSignInLog);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        UserSignInLogSaveReqVO updateReqVO = randomPojo(UserSignInLogSaveReqVO.class, o -> {
+            o.setId(dbUserSignInLog.getId()); // 设置更新的 ID
+        });
+
+        // 调用
+        userSignInLogService.updateUserSignInLog(updateReqVO);
+        // 校验是否更新正确
+        UserSignInLogDO userSignInLog = userSignInLogMapper.selectById(updateReqVO.getId()); // 获取最新的
+        assertPojoEquals(updateReqVO, userSignInLog);
+    }
+
+    @Test
+    public void testUpdateUserSignInLog_notExists() {
+        // 准备参数
+        UserSignInLogSaveReqVO updateReqVO = randomPojo(UserSignInLogSaveReqVO.class);
+
+        // 调用, 并断言异常
+        assertServiceException(() -> userSignInLogService.updateUserSignInLog(updateReqVO), USER_SIGN_IN_LOG_NOT_EXISTS);
+    }
+
+    @Test
+    public void testDeleteUserSignInLog_success() {
+        // mock 数据
+        UserSignInLogDO dbUserSignInLog = randomPojo(UserSignInLogDO.class);
+        userSignInLogMapper.insert(dbUserSignInLog);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        Long id = dbUserSignInLog.getId();
+
+        // 调用
+        userSignInLogService.deleteUserSignInLog(id);
+       // 校验数据不存在了
+       assertNull(userSignInLogMapper.selectById(id));
+    }
+
+    @Test
+    public void testDeleteUserSignInLog_notExists() {
+        // 准备参数
+        Long id = randomLongId();
+
+        // 调用, 并断言异常
+        assertServiceException(() -> userSignInLogService.deleteUserSignInLog(id), USER_SIGN_IN_LOG_NOT_EXISTS);
+    }
+
+    @Test
+    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
+    public void testGetUserSignInLogPage() {
+       // mock 数据
+       UserSignInLogDO dbUserSignInLog = randomPojo(UserSignInLogDO.class, o -> { // 等会查询到
+           o.setUserId(null);
+           o.setRunningDays(null);
+           o.setCreateTime(null);
+       });
+       userSignInLogMapper.insert(dbUserSignInLog);
+       // 测试 userId 不匹配
+       userSignInLogMapper.insert(cloneIgnoreId(dbUserSignInLog, o -> o.setUserId(null)));
+       // 测试 runningDays 不匹配
+       userSignInLogMapper.insert(cloneIgnoreId(dbUserSignInLog, o -> o.setRunningDays(null)));
+       // 测试 createTime 不匹配
+       userSignInLogMapper.insert(cloneIgnoreId(dbUserSignInLog, o -> o.setCreateTime(null)));
+       // 准备参数
+       UserSignInLogPageReqVO reqVO = new UserSignInLogPageReqVO();
+       reqVO.setUserId(null);
+       reqVO.setRunningDays(null);
+       reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
+
+       // 调用
+       PageResult<UserSignInLogDO> pageResult = userSignInLogService.getUserSignInLogPage(reqVO);
+       // 断言
+       assertEquals(1, pageResult.getTotal());
+       assertEquals(1, pageResult.getList().size());
+       assertPojoEquals(dbUserSignInLog, pageResult.getList().get(0));
+    }
+
+}

+ 2 - 2
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderUpdateServiceImpl.java

@@ -451,13 +451,13 @@ private void testSubscribe(TradeOrderDO order) throws Exception {
     String returnCode = jsonObject.get("returnCode").getAsString();
     String returnCode = jsonObject.get("returnCode").getAsString();
 
 
     if (result && returnCode.equals("200")) {
     if (result && returnCode.equals("200")) {
-        log.info("订单号:{}:订阅成功", order.getLogisticsNo());
+        log.info("订单号:{}:订阅成功", order.getNo());
 
 
         order.setSubscriptionLogisticsInfo(TradeOrderSubscribeStatusEnum.SUBSCRIBE.getStatus());
         order.setSubscriptionLogisticsInfo(TradeOrderSubscribeStatusEnum.SUBSCRIBE.getStatus());
     } else if (returnCode.equals("600") || returnCode.equals("601")) {
     } else if (returnCode.equals("600") || returnCode.equals("601")) {
         throw exception(NOT_SUFFICIENT_FUNDS);
         throw exception(NOT_SUFFICIENT_FUNDS);
     } else {
     } else {
-        log.info("订单号:{}:订阅失败", order.getLogisticsNo());
+        log.info("订单号:{}:订阅失败原因:{}",order.getNo(),jsonObject);
 
 
         order.setSubscriptionLogisticsInfo(TradeOrderSubscribeStatusEnum.abnormal.getStatus());
         order.setSubscriptionLogisticsInfo(TradeOrderSubscribeStatusEnum.abnormal.getStatus());
     }
     }

+ 6 - 1
feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/controller/admin/shop/ShopController.java

@@ -5,7 +5,6 @@ import cn.newfeifan.mall.sale.controller.admin.shop.vo.ShopPageReqVO;
 import cn.newfeifan.mall.sale.controller.admin.shop.vo.ShopRespVO;
 import cn.newfeifan.mall.sale.controller.admin.shop.vo.ShopRespVO;
 import cn.newfeifan.mall.sale.controller.admin.shop.vo.ShopSaveReqVO;
 import cn.newfeifan.mall.sale.controller.admin.shop.vo.ShopSaveReqVO;
 import cn.newfeifan.mall.sale.dal.redis.ShopMessage;
 import cn.newfeifan.mall.sale.dal.redis.ShopMessage;
-import cn.newfeifan.mall.sale.service.merchant.MerchantService;
 import cn.newfeifan.mall.sale.service.shop.ShopService;
 import cn.newfeifan.mall.sale.service.shop.ShopService;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
@@ -183,4 +182,10 @@ public class ShopController {
         return success(ids);
         return success(ids);
     }
     }
 
 
+    @GetMapping("/get-All-Shop")
+    @Operation(summary = "获取所有的用户")
+    @PreAuthorize("@ss.hasPermission('sale:merchant:query')")
+    public CommonResult<List<UserRespVO>> getAllUser() {
+        return success(shopService.selectAllList());
+    }
 }
 }

+ 2 - 0
feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/service/shop/ShopService.java

@@ -104,4 +104,6 @@ public interface ShopService {
     List<ShopRespVO> getAllShopByUserId(Long loginUserId);
     List<ShopRespVO> getAllShopByUserId(Long loginUserId);
 
 
     List<Long> getShopByName(String shopName);
     List<Long> getShopByName(String shopName);
+
+    List<UserRespVO> selectAllList();
 }
 }

+ 6 - 0
feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/service/shop/ShopServiceImpl.java

@@ -172,4 +172,10 @@ public class ShopServiceImpl implements ShopService {
         return shopMapper.selectShopIds(shopName);
         return shopMapper.selectShopIds(shopName);
     }
     }
 
 
+    @Override
+    public List<UserRespVO> selectAllList() {
+        List<ShopDO> shopDOS = shopMapper.selectList();
+        return BeanUtils.toBean(shopDOS, UserRespVO.class);
+    }
+
 }
 }

+ 3 - 1
feifan-module-system/feifan-module-system-api/src/main/java/cn/newfeifan/mall/module/system/enums/ErrorCodeConstants.java

@@ -171,6 +171,8 @@ public interface ErrorCodeConstants {
     // ========== 站内信发送 1-002-028-000 ==========
     // ========== 站内信发送 1-002-028-000 ==========
     ErrorCode NOTIFY_SEND_TEMPLATE_PARAM_MISS = new ErrorCode(1_002_028_000, "模板参数({})缺失");
     ErrorCode NOTIFY_SEND_TEMPLATE_PARAM_MISS = new ErrorCode(1_002_028_000, "模板参数({})缺失");
     ErrorCode WECHAT_MSG_TEMPLATE_NOT_EXISTS = new ErrorCode(1_002_028_001, "微信消息模板不存在");
     ErrorCode WECHAT_MSG_TEMPLATE_NOT_EXISTS = new ErrorCode(1_002_028_001, "微信消息模板不存在");
-    ErrorCode CONFIG_NOT_EXISTS = new ErrorCode(1_002_028_002, "系统配置不存在");
+    ErrorCode WECHAT_MSG_TEMPLATE_REDIS_NOT_EXISTS = new ErrorCode(1_002_028_002, "我想消息模板缓存异常");
+    ErrorCode CONFIG_NOT_EXISTS = new ErrorCode(1_002_028_003, "系统配置不存在");
+    ErrorCode CONFIG_REDIS_NOT_EXISTS = new ErrorCode(1_002_028_004, "系统配置不存在");
 
 
 }
 }

+ 3 - 5
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/config/StartConfig.java

@@ -43,11 +43,9 @@ public class StartConfig {
     /**
     /**
      * 初始化微信模板配置
      * 初始化微信模板配置
      */
      */
-    private void initWechatMsgTemplate() {
+    public void initWechatMsgTemplate() {
         List<WechatMsgTemplateDO> wechatMsgTemplateDOS = wechatMsgTemplateService.selectList();
         List<WechatMsgTemplateDO> wechatMsgTemplateDOS = wechatMsgTemplateService.selectList();
-        wechatMsgTemplateDOS.forEach(wechatMsgTemplateDO -> {
-            stringRedisTemplate.opsForValue().set(SYSTEM_WX_MESSAGE_TEMPLATE + wechatMsgTemplateDO.getId(), JsonUtils.toJsonString(wechatMsgTemplateDO));
-        });
+        wechatMsgTemplateDOS.forEach(wechatMsgTemplateDO -> stringRedisTemplate.opsForValue().set(SYSTEM_WX_MESSAGE_TEMPLATE + wechatMsgTemplateDO.getId(), JsonUtils.toJsonString(wechatMsgTemplateDO)));
 
 
         log.info("======初始化微信模板配置成功======");
         log.info("======初始化微信模板配置成功======");
     }
     }
@@ -55,7 +53,7 @@ public class StartConfig {
     /**
     /**
      * 初始化系统配置
      * 初始化系统配置
      */
      */
-    private void initSystemConfig(){
+    public void initSystemConfig(){
         SystemConfigDO config = configService.getConfig();
         SystemConfigDO config = configService.getConfig();
         stringRedisTemplate.opsForValue().set(SYSTEM_CONFIG, JsonUtils.toJsonString(config));
         stringRedisTemplate.opsForValue().set(SYSTEM_CONFIG, JsonUtils.toJsonString(config));
 
 

+ 23 - 9
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/service/config/SystemConfigServiceImpl.java

@@ -1,5 +1,6 @@
 package cn.newfeifan.mall.module.system.service.config;
 package cn.newfeifan.mall.module.system.service.config;
 
 
+import cn.newfeifan.mall.module.system.config.StartConfig;
 import cn.newfeifan.mall.module.system.controller.admin.config.bo.SystemConfigBO;
 import cn.newfeifan.mall.module.system.controller.admin.config.bo.SystemConfigBO;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -17,6 +18,7 @@ import cn.newfeifan.mall.module.system.dal.mysql.config.SystemConfigMapper;
 import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.newfeifan.mall.module.system.constant.SystemConstants.SYSTEM_CONFIG;
 import static cn.newfeifan.mall.module.system.constant.SystemConstants.SYSTEM_CONFIG;
 import static cn.newfeifan.mall.module.system.enums.ErrorCodeConstants.*;
 import static cn.newfeifan.mall.module.system.enums.ErrorCodeConstants.*;
+import static cn.newfeifan.mall.module.system.enums.ErrorCodeConstants.CONFIG_REDIS_NOT_EXISTS;
 
 
 /**
 /**
  * 系统配置 Service 实现类
  * 系统配置 Service 实现类
@@ -31,6 +33,9 @@ public class SystemConfigServiceImpl implements SystemConfigService {
     private SystemConfigMapper systemConfigMapper;
     private SystemConfigMapper systemConfigMapper;
     @Resource
     @Resource
     private StringRedisTemplate stringRedisTemplate;
     private StringRedisTemplate stringRedisTemplate;
+    @Resource
+    private StartConfig startConfig;
+
 
 
     @Override
     @Override
     public Long createConfig(ConfigSaveReqVO createReqVO) {
     public Long createConfig(ConfigSaveReqVO createReqVO) {
@@ -77,16 +82,25 @@ public class SystemConfigServiceImpl implements SystemConfigService {
     @Override
     @Override
     public SystemConfigDO getRedisConfig() {
     public SystemConfigDO getRedisConfig() {
         String s = stringRedisTemplate.opsForValue().get(SYSTEM_CONFIG);
         String s = stringRedisTemplate.opsForValue().get(SYSTEM_CONFIG);
-        if (s != null) {
-            SystemConfigBO systemConfigBO = JSONObject.parseObject(s, SystemConfigBO.class);
-            return SystemConfigDO.builder()
-                    .id(systemConfigBO.getId())
-                    .mallDomain(systemConfigBO.getMallDomain())
-                    .merchantDomain(systemConfigBO.getMerchantDomain())
-                    .platformDomain(systemConfigBO.getPlatformDomain())
-                    .build();
+
+        // 第一次判断是因为redis配置了自动删除
+        if (s == null) {
+            startConfig.initSystemConfig();
+            s = stringRedisTemplate.opsForValue().get(SYSTEM_CONFIG);
         }
         }
-        return getConfig();
+
+        // 第二次判断如果还是为空,那就缓存到redis的程序写错了
+        if(s == null){
+            throw exception(CONFIG_REDIS_NOT_EXISTS);
+        }
+
+        SystemConfigBO systemConfigBO = JSONObject.parseObject(s, SystemConfigBO.class);
+        return SystemConfigDO.builder()
+                .id(systemConfigBO.getId())
+                .mallDomain(systemConfigBO.getMallDomain())
+                .merchantDomain(systemConfigBO.getMerchantDomain())
+                .platformDomain(systemConfigBO.getPlatformDomain())
+                .build();
     }
     }
 
 
     @Override
     @Override

+ 21 - 9
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/service/wechatmsgtemplate/WechatMsgTemplateServiceImpl.java

@@ -1,5 +1,6 @@
 package cn.newfeifan.mall.module.system.service.wechatmsgtemplate;
 package cn.newfeifan.mall.module.system.service.wechatmsgtemplate;
 
 
+import cn.newfeifan.mall.module.system.config.StartConfig;
 import cn.newfeifan.mall.module.system.controller.admin.wechatmsgtemplate.bo.WechatMsgTemplateBO;
 import cn.newfeifan.mall.module.system.controller.admin.wechatmsgtemplate.bo.WechatMsgTemplateBO;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -34,6 +35,8 @@ public class WechatMsgTemplateServiceImpl implements WechatMsgTemplateService {
     @Resource
     @Resource
     private StringRedisTemplate stringRedisTemplate;
     private StringRedisTemplate stringRedisTemplate;
 
 
+    @Resource
+    private StartConfig startConfig;
     @Override
     @Override
     public Long createWechatMsgTemplate(WechatMsgTemplateSaveReqVO createReqVO) {
     public Long createWechatMsgTemplate(WechatMsgTemplateSaveReqVO createReqVO) {
         // 插入
         // 插入
@@ -79,19 +82,28 @@ public class WechatMsgTemplateServiceImpl implements WechatMsgTemplateService {
     @Override
     @Override
     public WechatMsgTemplateDO getWechatSsgTemplate(Long wechatMsgId) {
     public WechatMsgTemplateDO getWechatSsgTemplate(Long wechatMsgId) {
         String s = stringRedisTemplate.opsForValue().get(SYSTEM_WX_MESSAGE_TEMPLATE + wechatMsgId);
         String s = stringRedisTemplate.opsForValue().get(SYSTEM_WX_MESSAGE_TEMPLATE + wechatMsgId);
-        if(s != null){
-            WechatMsgTemplateBO wechatMsgTemplateBO = JSONObject.parseObject(s, WechatMsgTemplateBO.class);
-            return WechatMsgTemplateDO.builder()
-                    .wechatMsgTemplateId(wechatMsgTemplateBO.getWechatMsgTemplateId())
-                    .messageTemplateParameters(wechatMsgTemplateBO.getMessageTemplateParameters())
-                    .remark(wechatMsgTemplateBO.getRemark())
-                    .id(wechatMsgTemplateBO.getId())
-                    .build();
+
+        // 第一次判断是因为redis配置了自动删除
+        if (s == null) {
+            startConfig.initWechatMsgTemplate();
+            s = stringRedisTemplate.opsForValue().get(SYSTEM_WX_MESSAGE_TEMPLATE + wechatMsgId);
         }
         }
 
 
-        return wechatMsgTemplateMapper.selectById(wechatMsgId);
+        // 第二次判断如果还是为空,那就缓存到redis的程序写错了
+        if(s == null){
+            throw exception(WECHAT_MSG_TEMPLATE_REDIS_NOT_EXISTS);
+        }
+
+        WechatMsgTemplateBO wechatMsgTemplateBO = JSONObject.parseObject(s, WechatMsgTemplateBO.class);
+        return WechatMsgTemplateDO.builder()
+                .wechatMsgTemplateId(wechatMsgTemplateBO.getWechatMsgTemplateId())
+                .messageTemplateParameters(wechatMsgTemplateBO.getMessageTemplateParameters())
+                .remark(wechatMsgTemplateBO.getRemark())
+                .id(wechatMsgTemplateBO.getId())
+                .build();
     }
     }
 
 
+
     @Override
     @Override
     public List<WechatMsgTemplateDO> selectList() {
     public List<WechatMsgTemplateDO> selectList() {
         return wechatMsgTemplateMapper.selectList();
         return wechatMsgTemplateMapper.selectList();