Browse Source

Merge branch 'develop' of http://git.dayaedu.com/yonge/cooleshow

zouxuan 1 năm trước cách đây
mục cha
commit
f1998e8401

+ 11 - 0
audio-analysis/src/main/resources/bootstrap-test.yml

@@ -0,0 +1,11 @@
+spring:
+  cloud:
+    nacos:
+      config:
+        server-addr: 10.206.0.17:8848
+        namespace: 6bb97710-4f6e-4bac-a5f0-4b860d4da9bb
+        group: DEFAULT_GROUP
+        prefix: audio-analysis
+        file-extension: yaml
+        enabled: true
+        refresh-enabled: true

+ 1 - 1
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/config/ResourceServerConfig.java

@@ -32,7 +32,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 				"/user/noAuth/queryUserByPhone",
 				"/user/queryUserByPhone",
 				"/user/add",
-				"/user/queryUserById/*").hasIpAddress("0.0.0.0/0")
+				"/user/queryUserById/*","/user/getTenantByClient").hasIpAddress("0.0.0.0/0")
 				.anyRequest().authenticated().and().httpBasic();
 	}
 

+ 1 - 1
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/config/WebSecurityConfig.java

@@ -70,7 +70,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
 				// 请求授权
 				.authorizeRequests()// 不需要权限认证的url
 				.antMatchers("/usernameLogin","/smsLogin", "/refreshToken",
-						"/getQRLoginCode","/pollingQRLoginCode","/v2/api-docs","/user/getTenantByClient").permitAll()// 任何请求
+						"/getQRLoginCode","/pollingQRLoginCode","/v2/api-docs").permitAll()// 任何请求
 				.anyRequest()// 需要身份认证
 				.authenticated().and()// 关闭跨站请求防护
 				.csrf().disable();

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PaymentDivMemberRecordServiceImpl.java

@@ -796,7 +796,7 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem
         Map<Long,BigDecimal> tenantShare = new HashMap<>();
 
         // 计算分润
-        teacherAmount(userPaymentOrder, tenantdivMap, teacherMap,tenantShare, serviceFeeAmount);
+        teacherAmount(userPaymentOrder, tenantdivMap, teacherMap,tenantShare, tenantdivMap.get(-1L));
 
 
         // 写入机构收支表

+ 32 - 10
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -436,16 +436,6 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         //新增修改老师表
         Teacher teacher = insertOrUpdateTeacher(teacherSubmitReq);
 
-        // 机构老师与学生互加好友关系
-        if (Optional.ofNullable(teacher.getTenantId()).orElse(-1L) > 0) {
-            // 自动与机构老师成为好友
-            Set<Long> collect = studentService.lambdaQuery()
-                    .eq(Student::getTenantId, teacher.getTenantId()).list().stream()
-                    .map(Student::getUserId).collect(Collectors.toSet());
-
-            imUserFriendService.saveUserFriend(teacher.getUserId(), collect);
-        }
-
         return HttpResponseResult.succeed(true);
     }
 
@@ -505,6 +495,24 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
             teacher = getTeacherDetil(teacher, teacherSubmitReq);
             baseMapper.insert(teacher);
 
+            // 导入IM账号到三方
+            try {
+                imGroupCoreService.register(String.valueOf(teacher.getUserId()), ClientEnum.TEACHER.getCode(),
+                        teacherSubmitReq.getUsername(), teacher.getAvatar());
+            } catch (Exception e) {
+                log.error("导入IM账号到三方 teacherId={}", teacher.getUserId(), e);
+            }
+
+            // 机构老师与学生互加好友关系
+            if (Optional.ofNullable(teacher.getTenantId()).orElse(-1L) > 0) {
+                // 自动与机构老师成为好友
+                Set<Long> collect = studentService.lambdaQuery()
+                        .eq(Student::getTenantId, teacher.getTenantId()).list().stream()
+                        .map(Student::getUserId).collect(Collectors.toSet());
+
+                imUserFriendService.saveUserFriend(teacher.getUserId(), collect);
+            }
+
             //插入老师账户表
             UserAccount oldAcc = userAccountService.getById(teacherSubmitReq.getUserId());
             if (null == oldAcc) {
@@ -984,6 +992,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         }
         Long oldTenantId = teacher.getTenantId();
         if (oldTenantId != -1L) {
+            // 机构老师处理流程
             List<ImGroup> imGroups = imGroupService.lambdaQuery()
                     .eq(ImGroup::getCreateBy, teacher.getUserId())
                     .eq(ImGroup::getType, ImGroupType.ORG)
@@ -995,8 +1004,21 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
                     log.error("老师修改机构,解散机构群失败:{}", e.getMessage());
                 }
             });
+            // 删除好友关系
             imUserFriendService.delFriendByTenantId(teacher.getTenantId(), teacher.getUserId());
+
+            // 机构老师与学生互加好友关系
+            if (Optional.ofNullable(teacher.getTenantId()).orElse(-1L) > 0) {
+                // 自动与机构老师成为好友
+                Set<Long> collect = studentService.lambdaQuery()
+                        .eq(Student::getTenantId, updateTenant.getTenantId()).list().stream()
+                        .map(Student::getUserId).collect(Collectors.toSet());
+
+                imUserFriendService.saveUserFriend(teacher.getUserId(), collect);
+            }
         }else {
+
+            // 平台老师处理流程
             if (ESettlementFrom.TENANT.equals(teacher.getSettlementFrom())) {
                 // 解绑后,结算方式如果是机构,默认调整为老师
                 teacher.setSettlementFrom(ESettlementFrom.TEACHER);

+ 21 - 11
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserAccountRecordServiceImpl.java

@@ -15,6 +15,7 @@ import com.yonge.cooleshow.biz.dal.vo.TeacherEarningVo;
 import com.yonge.cooleshow.biz.dal.vo.UserAccountVo;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.enums.EPaymentVersion;
 import com.yonge.cooleshow.common.enums.PostStatusEnum;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import org.slf4j.Logger;
@@ -167,19 +168,28 @@ public class UserAccountRecordServiceImpl extends ServiceImpl<UserAccountRecordD
             records.addAll(baseMapper.selectRecordByOrderDetail(userOrderDetailVo.getOrderNo(),AccountBizTypeEnum.MUSIC_SHARE, bizIds));
         }else if(GoodTypeEnum.PRACTICE.equals(userOrderDetailVo.getGoodType())){
             //查询课程组下所有课程id
-            List<CourseSchedule> cancel = courseScheduleService.list(Wrappers.<CourseSchedule>lambdaQuery()
-                    .eq(CourseSchedule::getCourseGroupId, userOrderDetailVo.getBizId())
-            );
-            cancel.stream().forEach(o -> bizIds.add(o.getId()));
+            if (userOrderDetailVo.getPaymentVersion().equals(EPaymentVersion.V1)) {
+                List<CourseSchedule> cancel = courseScheduleService.list(Wrappers.<CourseSchedule>lambdaQuery()
+                        .eq(CourseSchedule::getCourseGroupId, userOrderDetailVo.getBizId())
+                );
+                cancel.stream().forEach(o -> bizIds.add(o.getId()));
+            } else {
+                bizIds.add(userOrderDetailVo.getBizId());
+            }
             records.addAll(baseMapper.selectRecordByOrderDetail(userOrderDetailVo.getOrderNo(),AccountBizTypeEnum.PRACTICE, bizIds));
         }else if(GoodTypeEnum.LIVE.equals(userOrderDetailVo.getGoodType())){
-            List<Long> groupId = Arrays.asList(userOrderDetailVo.getBizId());
-            records.addAll(baseMapper.selectRecordByOrderDetail(userOrderDetailVo.getOrderNo(),AccountBizTypeEnum.LIVE_SHARE, groupId));
-            //查询课程组下所有课程id
-            List<CourseSchedule> cancel = courseScheduleService.list(Wrappers.<CourseSchedule>lambdaQuery()
-                    .eq(CourseSchedule::getCourseGroupId, userOrderDetailVo.getBizId())
-            );
-            cancel.stream().forEach(o -> bizIds.add(o.getId()));
+
+            if (userOrderDetailVo.getPaymentVersion().equals(EPaymentVersion.V1)) {
+                List<Long> groupId = Arrays.asList(userOrderDetailVo.getBizId());
+                records.addAll(baseMapper.selectRecordByOrderDetail(userOrderDetailVo.getOrderNo(), AccountBizTypeEnum.LIVE_SHARE, groupId));
+                //查询课程组下所有课程id
+                List<CourseSchedule> cancel = courseScheduleService.list(Wrappers.<CourseSchedule>lambdaQuery()
+                        .eq(CourseSchedule::getCourseGroupId, userOrderDetailVo.getBizId())
+                );
+                cancel.stream().forEach(o -> bizIds.add(o.getId()));
+            } else {
+                bizIds.add(userOrderDetailVo.getBizId());
+            }
             records.addAll(baseMapper.selectRecordByOrderDetail(userOrderDetailVo.getOrderNo(),AccountBizTypeEnum.LIVE, bizIds));
         }
         return records;

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderRefundServiceImpl.java

@@ -75,6 +75,9 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
     @Autowired
     private TenantAccountRecordService tenantAccountRecordService;
 
+    @Autowired
+    private UserOrderService userOrderService;
+
     //验证是否可以退款,获取退款金额信息
     private static final Map<GoodTypeEnum, Function<OrderRefundReq, HttpResponseResult<RefundCreateRes>>> refundCreate = new HashMap<>();
     //插入退款后执行
@@ -616,12 +619,14 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
             search.setIds(ids);
             search.setOrderNo(orderRefund.getOrderNo());
             List<UserOrderDetailVo> userOrderDetails = orderDetailService.selectList(search);
+            UserOrder order = userOrderService.getByOrderNo(orderRefund.getOrderNo());
 
             for (UserOrderDetailVo vo : userOrderDetails) {
                 Consumer<UserOrderDetailVo> refundAfterConsumer = refundSuccess.get(vo.getGoodType());
                 if (!Objects.isNull(refundAfterConsumer)) {
                     refundAfterConsumer.accept(vo);
                 }
+                vo.setPaymentVersion(order.getPaymentVersion());
                 accountHandle(vo);
             }
 

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserTenantAlbumRecordServiceImpl.java

@@ -278,6 +278,9 @@ public class UserTenantAlbumRecordServiceImpl extends ServiceImpl<UserTenantAlbu
             //如果传专辑id   则查询这个专辑的详情
             tenantAlbumId = Long.parseLong(albumId);
         }
+        //获取对应机构专辑状态
+        TenantAlbum one = tenantAlbumService.lambdaQuery().eq(TenantAlbum::getId, tenantAlbumId).last("limit 1").one();
+        album.setStatus(one.getStatus());
 
         StudentVo detail = detailStudent(sysUser.getId());
         // 判断是否是机构学生 机构学生 检测机构专辑购买记录

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserOrderDetailVo.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.yonge.cooleshow.biz.dal.entity.UserOrderDetail;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.OrderTypeEnum;
+import com.yonge.cooleshow.common.enums.EPaymentVersion;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -64,6 +65,8 @@ public class UserOrderDetailVo extends UserOrderDetail {
     @ApiModelProperty("商品信息,返回订单列表或详情用")
     private BizInfo bizInfo;
 
+    @ApiModelProperty("支付版本 ")
+    private EPaymentVersion paymentVersion;
     @Data
     public  static class BizInfo implements Serializable {
 

+ 2 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/TenantAccountRecordMapper.xml

@@ -62,8 +62,8 @@
     <select id="getStatistics"
             resultType="com.yonge.cooleshow.biz.dal.wrapper.TenantAccountRecordWrapper$TenantAccountRecordStat">
         SELECT
-        sum(if(t.in_or_out_ = 'IN',t.trans_amount_,0)) transAmountIn,
-        sum(if(t.in_or_out_ = 'OUT',t.trans_amount_,0)) transAmountOut
+        sum(if(t.in_or_out_ = 'IN' and t.post_status_ = 'RECORDED',t.trans_amount_,0)) transAmountIn,
+        sum(if(t.in_or_out_ = 'IN' and t.post_status_ = 'WAIT',t.trans_amount_,0)) transAmountOut
         FROM tenant_account_record t
         <include refid="selectSql"/>
     </select>

+ 127 - 70
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantInfoController.java

@@ -1,18 +1,17 @@
 package com.yonge.cooleshow.tenant.controller;
 
 import com.alibaba.fastjson.JSON;
-import com.google.gson.JsonObject;
-import com.timevale.tech.sdk.seal.IFontsLoader;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.entity.TenantAlbumPurchase;
 import com.yonge.cooleshow.biz.dal.entity.TenantInfo;
 import com.yonge.cooleshow.biz.dal.entity.TenantStaff;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
-import com.yonge.cooleshow.biz.dal.mapper.TenantInfoMapper;
-import com.yonge.cooleshow.biz.dal.mapper.TenantStaffMapper;
-import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.service.EmployeeService;
+import com.yonge.cooleshow.biz.dal.service.SmsCodeService;
+import com.yonge.cooleshow.biz.dal.service.SysConfigService;
+import com.yonge.cooleshow.biz.dal.service.TenantInfoService;
+import com.yonge.cooleshow.biz.dal.service.TenantStaffService;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantInfoWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.controller.BaseController;
@@ -21,20 +20,25 @@ import com.yonge.cooleshow.common.security.SecurityConstants;
 import com.yonge.cooleshow.tenant.io.request.SysUserWrapper;
 import com.yonge.cooleshow.tenant.io.request.TenantInfoVo;
 import com.yonge.toolset.base.exception.BizException;
-import com.yonge.toolset.utils.obj.ObjectUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.BeanInstantiationException;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.time.LocalDateTime;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * @Author:haonan
@@ -65,10 +69,7 @@ public class TenantInfoController extends BaseController {
     private SysUserMapper sysUserMapper;
 
     @Autowired
-    private TenantStaffMapper tenantStaffMapper;
-
-    @Autowired
-    private TenantInfoMapper tenantInfoMapper;
+    private EmployeeService employeeService;
 
     @ApiOperation(value = "发送登录短信验证码")
     @ApiImplicitParams({@ApiImplicitParam(name = "mobile", value = "手机号", required = true, dataType = "String"),
@@ -159,78 +160,134 @@ public class TenantInfoController extends BaseController {
     @ApiOperation(value = "用户修改", notes = "用户修改")
 //    @PreAuthorize("@pcs.hasPermissions('tenantInfoUpdate/sysUserUpdate')")
     public HttpResponseResult<Boolean> sysUserUpdate(@RequestBody SysUserWrapper.SysUser sysUser) {
-        String code = sysUser.getCode();
-        String phone = sysUser.getPhone();
 
-        com.yonge.cooleshow.biz.dal.entity.SysUser sysUser1 = JSON.parseObject(sysUser.jsonString(), com.yonge.cooleshow.biz.dal.entity.SysUser.class);
+        // 当前用户请登录,提示请登录
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (Objects.isNull(user)) {
+            throw new BizException("请登录");
+        }
 
         //如果传手机号
-        if (StringUtils.isNotBlank(phone)){
-            boolean re = smsCodeService.verifyValidCode(phone, code, "PHONE");
-            if (re){
-                //查询输入的手机号  是否存在于sysUser表中
-                SysUser user = sysUserMapper.findUserByPhone(phone);
-                if (Objects.nonNull(user)){
-                    //如果存在 判断是否为机构员工
-                    TenantStaff tenantStaff = tenantStaffService.getByUserId(user.getId());
-                    if (!ObjectUtil.isEmpty(tenantStaff)){
-                        throw new BizException("该手机号已绑定机构");
-                    }
-                } else {
-                    //没有存在于sysUser表
-                    SysUser newUser = new SysUser();
-
-                    //查询当前登录账号
-                    SysUser OldUser = sysUserFeignService.queryUserInfo();
-
-                    //给新账户赋值
-                    newUser = JSON.parseObject(OldUser.jsonString(), SysUser.class);
-                    com.yonge.cooleshow.biz.dal.entity.SysUser sysUser2 = JSON.parseObject(newUser.jsonString(), com.yonge.cooleshow.biz.dal.entity.SysUser.class);
-                    sysUser2.setUsername(sysUser.getUsername());
-                    //设置默认头像
-                    if (StringUtils.isEmpty(sysUser.getAvatar())) {
-                        sysUser.setAvatar(sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD));
-                    } else {
-                        sysUser2.setAvatar(sysUser.getAvatar());
-                    }
-                    sysUserMapper.insert(sysUser2);
-                    //查询当前登录用户的userId
-                    Long oldId = OldUser.getId();
-                    //查询新用户的userId
-                    Long newId = sysUser2.getId();
-
-                    //staff 更新userId
-                    tenantStaffMapper.updateUserId(newId,oldId, sysUser2.getUsername(),sysUser2.getAvatar());
-                    //tennatinfo  更新userId  和 phone
-                    tenantInfoMapper.updateIdPhone(newId,phone,oldId);
-                }
-            } else {
+        if (StringUtils.isNotBlank(sysUser.getPhone())) {
+
+            if (StringUtils.isBlank(sysUser.getCode())) {
+                throw new BizException("验证码不能为空");
+            }
+
+            boolean exists = smsCodeService.verifyValidCode(sysUser.getPhone(), sysUser.getCode(), "PHONE");
+            if (Boolean.FALSE.equals(exists)) {
                 throw new BizException("手机号校验有误");
             }
-        }  else {
-            //更新当前用户的staff表
 
+            long userId;
+            // 查询输入的手机号  是否存在于sysUser表中
+            SysUser sysUserInfo = sysUserMapper.findUserByPhone(sysUser.getPhone());
+
+            // 用户默认头象
+            if (Objects.nonNull(sysUserInfo)) {
 
+                //如果存在 判断是否为机构员工
+                TenantStaff tenantStaff = tenantStaffService.getByUserId(sysUserInfo.getId());
+                if (Objects.nonNull(tenantStaff)) {
+                    throw new BizException("该手机号已绑定机构");
+                }
+
+                // 平台员工不允许重复
+                SysUser employee = employeeService.queryUserByMobile(sysUser.getPhone());
+                if (Objects.nonNull(employee)) {
+                    throw new BizException("当前手机号已绑定平台员工");
+                }
 
-            SysUser user = sysUserFeignService.queryUserInfo();
-            tenantInfoService.updateSysUser(sysUser1, user.getId());
+                // 更新用户身份
+                com.yonge.cooleshow.biz.dal.entity.SysUser newSysUser = new com.yonge.cooleshow.biz.dal.entity.SysUser();
+                // 设置用户ID
+                newSysUser.setId(sysUserInfo.getId());
+                // 用户身份
+                newSysUser.setUserType(sysUserInfo.getUserType() + ",ORGANIZATION");
+                newSysUser.setUpdateTime(LocalDateTime.now());
 
+                // 新用户更新
+                sysUserMapper.updateById(newSysUser);
+
+                // 新用户ID
+                userId = sysUserInfo.getId();
+            } else {
+
+                // 重新生成sysUser数据
+                com.yonge.cooleshow.biz.dal.entity.SysUser newSysUser = JSON.parseObject(JSON.toJSONString(user),
+                        com.yonge.cooleshow.biz.dal.entity.SysUser.class);
+                // 重置主键ID
+                newSysUser.setId(null);
+                // 设置新手机号
+                newSysUser.setPhone(sysUser.getPhone());
+                // 创建和修改时间
+                newSysUser.setCreateTime(LocalDateTime.now());
+                newSysUser.setUpdateTime(LocalDateTime.now());
+                newSysUser.setAvatar(sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD));
+                // 锁定状态
+                newSysUser.setLockFlag(0);
+                // 用户类型
+                newSysUser.setUserType("ORGANIZATION");
+                // 删除状态
+                newSysUser.setDelFlag(0);
+                newSysUser.setImToken("");
+
+                sysUserMapper.insert(newSysUser);
+                // 新用户ID
+                userId = newSysUser.getId();
+            }
+
+            // 旧用户移动机构身份
+            com.yonge.cooleshow.biz.dal.entity.SysUser oldSysUser = new com.yonge.cooleshow.biz.dal.entity.SysUser();
+            oldSysUser.setId(user.getId());
+            // 用户身份
+            String userType = Arrays.stream(user.getUserType().split(","))
+                    .filter(x -> !x.equals("ORGANIZATION")).collect(Collectors.joining(","));
+            oldSysUser.setUserType(userType);
+            sysUserMapper.updateById(oldSysUser);
+
+            // 更新用户ID
+            tenantStaffService.lambdaUpdate()
+                    .eq(TenantStaff::getUserId, user.getId())
+                    .set(TenantStaff::getUserId, userId)
+                    .update();
+
+            // 更新机构信息表中的用户昵称
+            if (Optional.ofNullable(user.getTenantId()).orElse(-1L) > 0) {
+
+                tenantInfoService.lambdaUpdate()
+                        .eq(TenantInfo::getId, user.getTenantId())
+                        .set(TenantInfo::getUserId, userId)
+                        .update();
+            }
+
+        } else {
+
+            // 修改用户基础信息流程
             //设置默认头像
             if (StringUtils.isBlank(sysUser.getAvatar())) {
                 sysUser.setAvatar(sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD));
             }
 
-            //更新员工表
-            Long id = user.getId();
-            TenantStaff staff = tenantStaffService.getByUserId(id);
-            if (staff != null){
-                staff.setNickname(sysUser.getUsername());
-                staff.setAvatar(sysUser.getAvatar());
-                tenantStaffService.updateById(staff);
+            // 更新机构员工头像和昵称,机构信息表中的用户昵称
+            tenantStaffService.lambdaUpdate()
+                    .eq(TenantStaff::getUserId, user.getId())
+                    .set(StringUtils.isNotEmpty(sysUser.getUsername()), TenantStaff::getNickname, sysUser.getUsername())
+                    .set(StringUtils.isNotEmpty(sysUser.getAvatar()), TenantStaff::getAvatar, sysUser.getAvatar())
+                    .set(TenantStaff::getUpdateTime, LocalDateTime.now())
+                    .update();
+
+            // 更新机构信息表中的用户昵称
+            if (StringUtils.isNotBlank(sysUser.getUsername()) && Optional.ofNullable(user.getTenantId()).orElse(-1L) > 0) {
+
+                tenantInfoService.lambdaUpdate()
+                        .eq(TenantInfo::getId, user.getTenantId())
+                        .set(TenantInfo::getUsername, sysUser.getUsername())
+                        .update();
             }
 
-            //更新tenantInfo的username
-        }
-            return HttpResponseResult.succeed(true);
         }
+
+        return HttpResponseResult.succeed(true);
+    }
 }