فهرست منبع

Merge branch 'dev/2024/0513/update-app-Y' of feifan/mall-backend-app into master

更改签到时异常
Yangzw 11 ماه پیش
والد
کامیت
34e70ce4f7

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

@@ -3,8 +3,10 @@ package cn.newfeifan.mall.module.distri.service.usersigninlog;
 import cn.newfeifan.mall.module.distri.controller.admin.orderpercentage.vo.OrderPercentageRedisVO;
 import cn.newfeifan.mall.module.distri.controller.app.usersigninlog.vo.UserSignInLogPageReqVO;
 import cn.newfeifan.mall.module.distri.controller.app.usersigninlog.vo.UserSignInLogSaveReqVO;
+import cn.newfeifan.mall.module.distri.dal.dataobject.orderpercentage.OrderPercentageDO;
 import cn.newfeifan.mall.module.distri.enums.SocialStatusEnum;
 import cn.newfeifan.mall.module.distri.service.duser.DuserService;
+import cn.newfeifan.mall.module.distri.service.orderpercentage.OrderPercentageService;
 import cn.newfeifan.mall.module.distri.service.socialstatus.SocialStatusService;
 import cn.newfeifan.mall.module.member.controller.app.signin.vo.record.AppMemberSignInRecordRespVO;
 import cn.newfeifan.mall.module.member.convert.signin.MemberSignInRecordConvert;
@@ -35,6 +37,7 @@ import static cn.newfeifan.mall.framework.common.exception.util.ServiceException
 import static cn.newfeifan.mall.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 import static cn.newfeifan.mall.module.distri.constant.DistriConstants.*;
 import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.*;
+import static cn.newfeifan.mall.module.member.enums.DictTypeConstants.DISTRI_ORDER_PERCENTAGE;
 
 /**
  * 用户签到日志 Service 实现类
@@ -60,6 +63,9 @@ public class UserSignInLogServiceImpl implements UserSignInLogService {
     @Resource
     private SocialStatusService socialStatusService;
 
+    @Resource
+    private OrderPercentageService orderPercentageService;
+
     @Override
     @Transactional
     public AppMemberSignInRecordRespVO createUserSignInLog() {
@@ -94,9 +100,9 @@ public class UserSignInLogServiceImpl implements UserSignInLogService {
         OrderPercentageRedisVO orderPercentageRedisVO = getOrderPercentageRedisVO();
         long social = Long.parseLong(orderPercentageRedisVO.getSignInSocialStatus());
 
-        if(userSignInLogDO.getRunningDays() >= Integer.parseInt(orderPercentageRedisVO.getSignInSocialStatusMax())){
+        if (userSignInLogDO.getRunningDays() >= Integer.parseInt(orderPercentageRedisVO.getSignInSocialStatusMax())) {
             social = social + Long.parseLong(orderPercentageRedisVO.getSignInSocialStatusMax());
-        }else{
+        } else {
             social = social + userSignInLogDO.getRunningDays();
         }
 
@@ -111,21 +117,28 @@ public class UserSignInLogServiceImpl implements UserSignInLogService {
         //判断是否升级
         boolean upgradeOrNot = !socialStatusIdNow.equals(socialStatusIdAfter);
         String socialStatusName = null;
-        if(upgradeOrNot){
+        if (upgradeOrNot) {
             socialStatusName = socialStatusService.getSocialStatusName(socialStatusIdAfter);
         }
         // 返回
-        return MemberSignInRecordConvert.INSTANCE.coverRecordToAppRecordVo(recordDO,upgradeOrNot,social,socialStatusName);
+        return MemberSignInRecordConvert.INSTANCE.coverRecordToAppRecordVo(recordDO, upgradeOrNot, social, socialStatusName);
     }
 
     /**
      * 获取身价固定值
+     *
      * @return 签到身价固定值
      */
     private OrderPercentageRedisVO getOrderPercentageRedisVO() {
         String s = stringRedisTemplate.opsForValue().get(DISTRI_ORDER_PERCENTAGE);
         if (StringUtils.isEmpty(s)) {
-            throw exception(REDIS_ORDER_PERCENTAGE_NOT_EXISTS);
+            OrderPercentageDO orderPercentageDO = orderPercentageService.queryStatus();
+            OrderPercentageRedisVO signSocial = OrderPercentageRedisVO.builder()
+                    .signInSocialStatus(orderPercentageDO.getSignInSocialStatus())
+                    .signInSocialStatusMax(orderPercentageDO.getSignInSocialStatusMax())
+                    .build();
+            stringRedisTemplate.opsForValue().set(DISTRI_ORDER_PERCENTAGE, JSONObject.toJSONString(signSocial));
+            s = JSONObject.toJSONString(signSocial);
         }
         return JSONObject.parseObject(s, OrderPercentageRedisVO.class);
     }

+ 6 - 0
feifan-module-member/feifan-module-member-biz/pom.xml

@@ -95,6 +95,12 @@
             <artifactId>fastjson</artifactId>
             <version>1.2.76</version> <!-- 或者使用更 recent 的版本 -->
         </dependency>
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-module-system-biz</artifactId>
+            <version>2.0.0-jdk8-snapshot</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
 

+ 5 - 0
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/dal/dataobject/user/MemberUserDO.java

@@ -147,4 +147,9 @@ public class MemberUserDO extends TenantBaseDO {
      */
     private Long groupId;
 
+    /**
+     * 关联系统用户ID
+     */
+    private Long systemUsersId;
+
 }

+ 7 - 0
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/service/user/MemberUserServiceImpl.java

@@ -23,6 +23,7 @@ import cn.newfeifan.mall.module.system.api.sms.dto.code.SmsCodeUseReqDTO;
 import cn.newfeifan.mall.module.system.api.social.SocialClientApi;
 import cn.newfeifan.mall.module.system.api.social.dto.SocialWxPhoneNumberInfoRespDTO;
 import cn.newfeifan.mall.module.system.enums.sms.SmsSceneEnum;
+import cn.newfeifan.mall.module.system.service.user.AdminUserService;
 import com.google.common.annotations.VisibleForTesting;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.security.crypto.password.PasswordEncoder;
@@ -70,6 +71,8 @@ public class MemberUserServiceImpl implements MemberUserService {
     private SharePathProducer sharePathProducer;
     @Resource
     private ShareLinkRegisterProducer shareLinkRegisterProducer;
+    @Resource
+    private AdminUserService adminUserService;
 
     @Override
     public MemberUserDO getUserByMobile(String mobile) {
@@ -102,6 +105,9 @@ public class MemberUserServiceImpl implements MemberUserService {
     @Transactional(rollbackFor = Exception.class)
     public MemberUserDO privateCreateUser(String mobile, String nickname, String avtar,
                                           String registerIp, Integer terminal, Long linkId) {
+        // 通过手机号查询系统用户编号
+        Long systemUserId = adminUserService.getUserIdByMobile(mobile);
+
         // 生成密码
         String password = IdUtil.fastSimpleUUID();
         // 插入用户
@@ -110,6 +116,7 @@ public class MemberUserServiceImpl implements MemberUserService {
         user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 默认开启
         user.setPassword(encodePassword(password)); // 加密密码
         user.setRegisterIp(registerIp).setRegisterTerminal(terminal);
+        user.setSystemUsersId(systemUserId);    //绑定系统用户
         user.setNickname(nickname).setAvatar(avtar); // 基础信息
         if (StrUtil.isEmpty(nickname)) {
             // 昵称为空时,随机一个名字,避免一些依赖 nickname 的逻辑报错,或者有点丑。例如说,短信发送有昵称时~

+ 7 - 0
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/service/user/AdminUserService.java

@@ -201,4 +201,11 @@ public interface AdminUserService {
      */
     boolean isPasswordMatch(String rawPassword, String encodedPassword);
 
+    /**
+     * 通过手机号码查询用户编号
+     * @param mobile 手机号
+     * @return 系统用户编号
+     */
+    Long getUserIdByMobile(String mobile);
+
 }

+ 11 - 0
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/service/user/AdminUserServiceImpl.java

@@ -442,6 +442,17 @@ public class AdminUserServiceImpl implements AdminUserService {
         return passwordEncoder.matches(rawPassword, encodedPassword);
     }
 
+    @Override
+    public Long getUserIdByMobile(String mobile) {
+        //电话没有直接返回
+        if (StrUtil.isEmpty(mobile)) {
+            return null;
+        }
+        AdminUserDO adminUserDO = userMapper.selectByMobile(mobile);
+        //系统用户可能不存在
+        return adminUserDO != null ? adminUserDO.getId() : null;
+    }
+
     /**
      * 对密码进行加密
      *