Browse Source

基本信息 修改 微信小程序用户没有在销售端注册 这种用户fs_user_info没有记录

xgb 1 tuần trước cách đây
mục cha
commit
054b68a397

+ 8 - 40
fs-company-app/src/main/java/com/fs/app/controller/FsUserInfoController.java

@@ -38,14 +38,13 @@ public class FsUserInfoController extends AppBaseController {
     @Login
     @GetMapping("/list")
     @ApiOperation("获取用户列表信息")
-    public R list(@RequestParam("companyUserId") Long companyUserId,
+    public R list(FsUserInfo fsUserInfo,
                   @RequestParam(required = false, defaultValue = "1") Integer pageNum,
                   @RequestParam(required = false, defaultValue = "10") Integer pageSize) {
-        if (companyUserId == null) {
-            companyUserId = getCompanyUserId();
-        }
+
+        // companyUserId 传空的查询所有
         PageHelper.startPage(pageNum, pageSize);
-        List<FsUserInfo> list = fsUserInfoService.selectFsUserInfoList(companyUserId);
+        List<FsUserInfo> list = fsUserInfoService.selectFsUserInfoList(fsUserInfo.getCompanyUserId());
         return R.ok().put("data", new PageInfo<>(list));
     }
 
@@ -61,7 +60,9 @@ public class FsUserInfoController extends AppBaseController {
         if (fsUserInfo == null) {
             return R.error("用户不存在");
         } else {
-            fsUserInfo.setAge(DateUtils.getAge(fsUserInfo.getBirthdate()));
+            if(fsUserInfo.getBirthdate()!=null){
+                fsUserInfo.setAge(DateUtils.getAge(fsUserInfo.getBirthdate()));
+            }
         }
         return R.ok().put("data", fsUserInfo);
     }
@@ -72,31 +73,8 @@ public class FsUserInfoController extends AppBaseController {
     @Login
     @PostMapping("/add")
     @ApiOperation("新增用户信息")
-    @Transactional
     public R add(@RequestBody FsUserInfo fsUserInfo) {
-        // 获取companyUserId
-        if (fsUserInfo.getCompanyUserId() == null) {
-            fsUserInfo.setCompanyUserId(getCompanyUserId());
-        }
-
-
-        FsUser fsUser = new FsUser();
-        fsUser.setCompanyUserId(fsUserInfo.getCompanyUserId());
-        // 后期需要登记 登记后更新的时候需要一起修改
-        // 头像
-        fsUser.setAvatar(fsUserInfo.getAvatar());
-//        fsUser.setPhone(fsUserInfo.getPhone());
-//        fsUser.setUsername(fsUserInfo.getUsername());
-        // 登记fsUser表
-        if (fsUserService.insertFsUser(fsUser) <= 0) {
-            return R.error("用户信息登记原表失败");
-        }
-        // 登记同一个userId
-        fsUserInfo.setUserId(fsUser.getUserId());
-        // 登记fsUserInfo表
-        if (fsUserInfoService.insertFsUserInfo(fsUserInfo) <= 0) {
-            return R.error("用户信息登记失败");
-        }
+        fsUserInfoService.add(fsUserInfo);
         return R.ok();
     }
 
@@ -106,20 +84,10 @@ public class FsUserInfoController extends AppBaseController {
     @Login
     @PostMapping("/update")
     @ApiOperation("修改用户信息")
-    @Transactional
     public R edit(@RequestBody FsUserInfo fsUserInfo) {
         if (fsUserInfoService.updateFsUserInfo(fsUserInfo) <= 0) {
             return R.error("用户信息修改失败");
         }
-        // 若头像字段不为空 需要更新fsUser表
-        if (!StringUtils.isEmpty(fsUserInfo.getAvatar())) {
-            FsUser fsUser = new FsUser();
-            fsUser.setUserId(fsUserInfo.getUserId());
-            fsUser.setAvatar(fsUserInfo.getAvatar());
-            if (fsUserService.updateFsUser(fsUser) <= 0) {
-                return R.error("用户信息修改原表失败");
-            }
-        }
         return R.ok();
     }
 

+ 1 - 1
fs-service/src/main/java/com/fs/his/domain/FsUserHealthData.java

@@ -51,7 +51,7 @@ public class FsUserHealthData extends BaseEntity{
     private Date createdAt;
 
     /** 性别(0:男, 1:女, 2:未知) */
-    private String sex;
+    private Integer sex;
 
     private String timeSearch;
 

+ 1 - 1
fs-service/src/main/java/com/fs/his/domain/FsUserInfo.java

@@ -41,7 +41,7 @@ public class FsUserInfo extends BaseEntity {
     /**
      * 性别(0:男, 1:女, 2:未知)
      */
-    private String sex;
+    private Integer sex;
 
     /**
      * 出生年月

+ 1 - 1
fs-service/src/main/java/com/fs/his/dto/FsUserHealthInfoDTO.java

@@ -35,7 +35,7 @@ public class FsUserHealthInfoDTO extends BaseEntity{
     /**
      * 性别(0:男, 1:女, 2:未知)
      */
-    private String sex;
+    private Integer sex;
 
     /**
      * 年龄

+ 1 - 0
fs-service/src/main/java/com/fs/his/mapper/FsUserInfoMapper.java

@@ -45,4 +45,5 @@ public interface FsUserInfoMapper extends BaseMapper<FsUserInfo> {
     int updateFsUserInfo(FsUserInfo fsUserInfo);
 
 
+    FsUserInfo selectFsUserInfoByPhone(String phone);
 }

+ 1 - 0
fs-service/src/main/java/com/fs/his/service/IFsUserInfoService.java

@@ -45,4 +45,5 @@ public interface IFsUserInfoService extends IService<FsUserInfo> {
      */
     int updateFsUserInfo(FsUserInfo fsUserInfo);
 
+    void add(FsUserInfo fsUserInfo);
 }

+ 11 - 11
fs-service/src/main/java/com/fs/his/service/impl/FsUserHealthDataServiceImpl.java

@@ -199,7 +199,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
             case 4: // 尿酸
                 // 根据userId查询用户信息
                 FsUserInfo user = fsUserInfoService.selectFsUserInfoById(fsUserHealthData.getUserId());
-                if (StringUtils.isEmpty(user.getSex()) || "2".equals(user.getSex())) {
+                if (user.getSex()==null || "2".equals(String.valueOf(user.getSex()))) {
                     throw new ServiceException("尿酸判断需要性别信息,请完善用户性别信息");
                 }
                 fsUserHealthData.setSex(user.getSex());
@@ -401,12 +401,12 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
             case WAIST: // 腰围
             case HIP: // 臀围
                 // 判断性别 0-男 1-女
-                String sex = fsUserHealthData.getSex();
+                int sex = fsUserHealthData.getSex();
                 String key;
 
-                if ("0".equals(sex)) { // 男
+                if (0==sex) { // 男
                     key = HealthIndicatorConfig.MALE;
-                } else if ("1".equals(sex)) { // 女
+                } else if (1==sex) { // 女
                     key = HealthIndicatorConfig.FEMALE;
                 } else {
                     throw new ServiceException("不支持的性别类型: " + sex);
@@ -517,8 +517,8 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
         if (fsUserHealthProfile.getHyperuricemiaValue() != null) {
             // 查询用户信息获取 性别
             FsUserInfo fsUserInfo = fsUserInfoService.selectFsUserInfoById(fsUserHealthProfile.getUserId());
-            if (fsUserInfo == null || StringUtils.isEmpty(fsUserInfo.getSex())) {
-                throw new ServiceException("用户已注销或不存在");
+            if (fsUserInfo == null || fsUserInfo.getSex()==null) {
+                throw new ServiceException("用户已注销或健康档案未维护性别不存在");
             }
 
             /** 测量类型(0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI) */
@@ -536,8 +536,8 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
         if (fsUserHealthProfile.getWaistCircumference() != null) {
             // 查询用户信息获取 性别
             FsUserInfo fsUserInfo = fsUserInfoService.selectFsUserInfoById(fsUserHealthProfile.getUserId());
-            if (fsUserInfo == null || StringUtils.isEmpty(fsUserInfo.getSex())) {
-                throw new ServiceException("用户已注销或不存在");
+            if (fsUserInfo == null || fsUserInfo.getSex()==null) {
+                throw new ServiceException("用户已注销或性别不存在");
             }
 
             /** 测量类型(0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI) */
@@ -555,8 +555,8 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
         if (fsUserHealthProfile.getHipCircumference() != null) {
             // 查询用户信息获取 性别
             FsUserInfo fsUserInfo = fsUserInfoService.selectFsUserInfoById(fsUserHealthProfile.getUserId());
-            if (fsUserInfo == null || StringUtils.isEmpty(fsUserInfo.getSex())) {
-                throw new ServiceException("用户已注销或不存在");
+            if (fsUserInfo == null || fsUserInfo.getSex()== null) {
+                throw new ServiceException("用户已注销或性别信息不存在");
             }
             /** 测量类型(0-腰围,1-臀围,2-血糖,3-血压,4-尿酸 5-BMI) */
             fsUserHealthData.setMeasurementType(HealthDataTypeEnum.HIP.getValue());
@@ -585,7 +585,7 @@ public class FsUserHealthDataServiceImpl extends ServiceImpl<FsUserHealthDataMap
         if (type == 0 || type == 1 || type == 4) { // 尿酸查询等级信息时需要性别信息
             // 根据userId 查询用户信息
             FsUserInfo user = fsUserInfoService.selectFsUserInfoById(fsUserHealthData.getUserId());
-            if (StringUtils.isEmpty(user.getSex()) || "2".equals(user.getSex())) {
+            if (user.getSex()==null || "2".equals(String.valueOf(user.getSex()))) {
                 throw new ServiceException("尿酸判断需要性别信息,请完善用户性别信息");
             }
             fsUserHealthData.setSex(user.getSex());

+ 124 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsUserInfoServiceImpl.java

@@ -1,14 +1,24 @@
 package com.fs.his.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fs.common.core.domain.R;
+import com.fs.common.exception.ServiceException;
 import com.fs.common.utils.DateUtils;
+import com.fs.common.utils.StringUtils;
+import com.fs.his.domain.FsUser;
 import com.fs.his.domain.FsUserInfo;
 import com.fs.his.mapper.FsUserInfoMapper;
+import com.fs.his.mapper.FsUserMapper;
 import com.fs.his.service.IFsUserInfoService;
+import com.fs.his.service.IFsUserService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
+import static com.fs.his.utils.PhoneUtil.encryptPhone;
+
 /**
  * 用户信息Service业务层处理
  *
@@ -18,6 +28,12 @@ import java.util.List;
 @Service
 public class FsUserInfoServiceImpl extends ServiceImpl<FsUserInfoMapper, FsUserInfo> implements IFsUserInfoService {
 
+    @Autowired
+    private IFsUserService fsUserService;
+
+    @Autowired
+    private FsUserMapper fsUserMapper;
+
     /**
      * 查询用户信息
      *
@@ -59,8 +75,116 @@ public class FsUserInfoServiceImpl extends ServiceImpl<FsUserInfoMapper, FsUserI
      * @return 结果
      */
     @Override
+    @Transactional
     public int updateFsUserInfo(FsUserInfo fsUserInfo) {
+        // 若手机号有修改 需校验手机号是否已存在 且不修改fs_user表的手机号
+        if(StringUtils.isNotEmpty(fsUserInfo.getPhone())){
+            FsUserInfo user = baseMapper.selectFsUserInfoById(fsUserInfo.getUserId());
+            if(user== null){
+                throw new ServiceException("用户已注销或不存在");
+            }
+
+            if(!user.getPhone().equals(fsUserInfo.getPhone())){// 若要修改手机号需要验证新的手机号是否存在
+                FsUserInfo userInfo = baseMapper.selectFsUserInfoByPhone(fsUserInfo.getPhone());
+                if(userInfo!=null){
+                    throw new ServiceException("该手机号已存在");
+                }
+            }
+        }
+
+        // 更新用户信息 不修改手机号
+        if(StringUtils.isNotEmpty(fsUserInfo.getAvatar()) || fsUserInfo.getSex()!= null || fsUserInfo.getCompanyUserId()!= null) {
+            FsUser user = new FsUser();
+            user.setUserId(fsUserInfo.getUserId());
+            user.setAvatar(fsUserInfo.getAvatar());
+            user.setSex(fsUserInfo.getSex());
+            user.setCompanyUserId(fsUserInfo.getCompanyUserId());
+            user.setUpdateTime(DateUtils.getNowDate());
+            if (fsUserMapper.updateFsUser(user) <= 0) {
+                throw new ServiceException("用户信息修改失败");
+            }
+        }
+
         fsUserInfo.setUpdateTime(DateUtils.getNowDate());
         return baseMapper.updateFsUserInfo(fsUserInfo);
     }
+
+    /**
+     * @Description: 新增用户
+     * @Param:
+     * @Return:
+     * @Author xgb
+     * @Date 2025/9/3 14:03
+     */
+    @Override
+    @Transactional
+    public void add(FsUserInfo fsUserInfo) {
+
+        // 判断手机号是否已经存在
+        if(StringUtils.isEmpty(fsUserInfo.getPhone())){
+            throw new ServiceException("手机号不能为空");
+        }
+        // 查询手机号
+        FsUserInfo userInfo = baseMapper.selectFsUserInfoByPhone(fsUserInfo.getPhone());
+        if(userInfo!=null){
+            throw new ServiceException("该手机号用户已存在");
+        }
+        FsUser user = fsUserService.selectFsUserByPhone(fsUserInfo.getPhone());
+        if(user!=null){
+            // 判断头像和姓名 性别是否一致 销售id
+            boolean updateFlag=false;
+            if(StringUtils.isNotEmpty(fsUserInfo.getAvatar())){
+                if(!fsUserInfo.getAvatar().equals(user.getAvatar())){
+                    updateFlag=true;
+                }
+            }
+            if(fsUserInfo.getSex()!= null){
+                if(!fsUserInfo.getSex().equals(user.getSex())){
+                    updateFlag=true;
+                }
+            }
+            if(fsUserInfo.getCompanyUserId()!= null){
+                if(!fsUserInfo.getCompanyUserId().equals(user.getCompanyUserId())){
+                    updateFlag=true;
+                }
+            }
+
+            if(updateFlag) {
+                // 更新用户信息 不修改手机号
+                user.setAvatar(fsUserInfo.getAvatar());
+                user.setSex(fsUserInfo.getSex());
+                user.setCompanyUserId(fsUserInfo.getCompanyUserId());
+                user.setUpdateTime(DateUtils.getNowDate());
+                if (fsUserMapper.updateFsUser(user) <= 0) {
+                    throw new ServiceException("用户信息修改失败");
+                }
+            }
+            // 登记同一个userId
+            fsUserInfo.setUserId(user.getUserId());
+            if (insertFsUserInfo(fsUserInfo) <= 0) {
+                throw new ServiceException("用户信息登记失败");
+            }
+
+        }else {
+            // 新增用户信息
+            FsUser fsUser = new FsUser();
+            fsUser.setCompanyUserId(fsUserInfo.getCompanyUserId());
+            fsUser.setAvatar(fsUserInfo.getAvatar());
+            fsUser.setPhone(fsUserInfo.getPhone());
+            fsUser.setSex(fsUserInfo.getSex());
+            fsUser.setCreateTime(DateUtils.getNowDate());
+            // 登记fsUser表
+            if (fsUserMapper.insertFsUser(fsUser) <= 0) {
+                throw new ServiceException("用户信息登记失败");
+            }
+            // 登记同一个userId
+            fsUserInfo.setUserId(fsUser.getUserId());
+            // 登记fsUserInfo表
+            if (insertFsUserInfo(fsUserInfo) <= 0) {
+                throw new ServiceException("用户信息登记失败");
+            }
+
+        }
+    }
+
 }

+ 20 - 13
fs-service/src/main/resources/mapper/his/FsUserInfoMapper.xml

@@ -81,12 +81,12 @@
 
     <!-- 根据企业用户信息查询用户列表信息   -->
     <select id="selectFsUserInfoList" resultMap="FsUserInfoResult">
-        select  info.user_id,
+        select  fs.user_id,
                 info.company_user_id,
                 info.username,
-                info.sex,
+                fs.sex,
                 info.birthdate,
-                info.phone,
+                fs.phone,
                 info.id_card,
                 info.previous_employer,
                 info.disposable_income,
@@ -115,18 +115,21 @@
                 info.create_time,
                 fs.avatar
             from fs_user_info info
-                left join fs_user fs on info.user_id = fs.user_id
-            where info.company_user_id = #{companyUserId} and fs.is_del=0
+                right join fs_user fs on info.user_id = fs.user_id
+            where fs.is_del=0
+                <if test="companyUserId != null and companyUserId != ''">
+                    and fs.company_user_id = #{companyUserId}
+                </if>
     </select>
 
     <!-- 更具用户id查询详细信息   -->
     <select id="selectFsUserInfoById" resultMap="FsUserInfoResult">
-        select  info.user_id,
+        select  fs.user_id,
                 info.company_user_id,
                 info.username,
-                info.sex,
+                fs.sex,
                 info.birthdate,
-                info.phone,
+                fs.phone,
                 info.id_card,
                 info.previous_employer,
                 info.disposable_income,
@@ -155,8 +158,12 @@
                 info.create_time,
                 fs.avatar
          from fs_user_info info
-         left join fs_user fs on info.user_id = fs.user_id
-         where info.user_id = #{userId} and fs.is_del=0
+         right join fs_user fs on info.user_id = fs.user_id
+         where fs.user_id = #{userId} and fs.is_del=0
+    </select>
+    <!-- 根据手机号查询用户信息   -->
+    <select id="selectFsUserInfoByPhone" resultType="com.fs.his.domain.FsUserInfo">
+         <include refid="selectFsUserInfoVo"/> where phone = #{phone}
     </select>
 
     <!-- 登记用户信息   -->
@@ -166,7 +173,7 @@
             <if test="userId != null and userId != ''">user_id,</if>
             <if test="companyUserId != null and companyUserId != ''">company_user_id,</if>
             <if test="username != null and username != ''">username,</if>
-            <if test="sex != null and sex != ''">sex,</if>
+            <if test="sex != null">sex,</if>
             <if test="birthdate != null">birthdate,</if>
             <if test="phone != null">phone,</if>
             <if test="idCard != null">id_card,</if>
@@ -201,7 +208,7 @@
             <if test="userId != null and userId != ''">#{userId},</if>
             <if test="companyUserId != null and companyUserId != ''">#{companyUserId},</if>
             <if test="username != null and username != ''">#{username},</if>
-            <if test="sex != null and sex != ''">#{sex},</if>
+            <if test="sex != null">#{sex},</if>
             <if test="birthdate != null">#{birthdate},</if>
             <if test="phone != null">#{phone},</if>
             <if test="idCard != null">#{idCard},</if>
@@ -241,7 +248,7 @@
             <if test="userId != null and userId != ''">user_id = #{userId},</if>
             <if test="companyUserId != null and companyUserId != ''">company_user_id = #{companyUserId},</if>
             <if test="username != null and username != ''">username = #{username},</if>
-            <if test="sex != null and sex != ''">sex = #{sex},</if>
+            <if test="sex != null">sex = #{sex},</if>
             <if test="birthdate != null">birthdate = #{birthdate},</if>
             <if test="phone != null">phone = #{phone},</if>
             <if test="idCard != null">id_card = #{idCard},</if>