فهرست منبع

update:修改微信小程序登录

zhouzeyu 6 ماه پیش
والد
کامیت
483e71a614

+ 4 - 2
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/dto/BizQuestionAnswerDTO.java

@@ -1,5 +1,7 @@
 package cn.tr.module.smart.common.dto;
 
+import cn.tr.module.smart.common.entity.BizQuestionEntity;
+import cn.tr.module.smart.common.entity.BizWxAppletQuestionAnswerEntity;
 import cn.tr.plugin.mybatis.pojo.BaseDTO;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
@@ -27,10 +29,10 @@ public class BizQuestionAnswerDTO extends BaseDTO  {
     private String id;
 
     @ApiModelProperty(value = "回答的内容", position = 2)
-    private List<String> content;
+    private List<BizWxAppletQuestionAnswerEntity> content;
 
     @ApiModelProperty(value = "问卷问题", position = 3)
-    private String question;
+    private List<BizQuestionEntity> question;
 
     @ApiModelProperty(value = "手术id", position = 4)
     private String clinicId;

+ 40 - 40
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/web/controller/BizQuestionAnswerController.java

@@ -35,46 +35,46 @@ public class BizQuestionAnswerController extends BaseController{
 
     private final IBizQuestionAnswerService bizQuestionAnswerService;
 
-    @ApiOperationSupport(author = "lf",order = 1)
-    @ApiOperation(value="根据条件查询问卷回答",notes = "权限: 无")
-    @PostMapping("/query/page")
-    public TableDataInfo<BizQuestionAnswerDTO> selectList(@RequestBody BizQuestionAnswerQueryDTO query) {
-        startPage();
-        return getDataTable(bizQuestionAnswerService.selectBizQuestionAnswerList(query));
-    }
+//    @ApiOperationSupport(author = "lf",order = 1)
+//    @ApiOperation(value="根据条件查询问卷回答",notes = "权限: 无")
+//    @PostMapping("/query/page")
+//    public TableDataInfo<BizQuestionAnswerDTO> selectList(@RequestBody BizQuestionAnswerQueryDTO query) {
+//        startPage();
+//        return getDataTable(bizQuestionAnswerService.selectBizQuestionAnswerList(query));
+//    }
 
-    @ApiOperationSupport(author = "lf",order = 2)
-    @ApiOperation(value = "根据id查询问卷回答",notes = "权限: common:questionAnswer:query")
-    @GetMapping("/detail/{id}")
-    @SaCheckPermission("common:questionAnswer:query")
-    public CommonResult<BizQuestionAnswerDTO> findById(@PathVariable("id") String id){
-        return CommonResult.success(bizQuestionAnswerService.selectBizQuestionAnswerById(id));
-    }
+//    @ApiOperationSupport(author = "lf",order = 2)
+//    @ApiOperation(value = "根据id查询问卷回答",notes = "权限: common:questionAnswer:query")
+//    @GetMapping("/detail/{id}")
+//    @SaCheckPermission("common:questionAnswer:query")
+//    public CommonResult<BizQuestionAnswerDTO> findById(@PathVariable("id") String id){
+//        return CommonResult.success(bizQuestionAnswerService.selectBizQuestionAnswerById(id));
+//    }
 
-    @ApiOperationSupport(author = "lf",order = 3)
-    @ApiOperation(value="添加问卷回答",notes = "权限: common:questionAnswer:add")
-    @PostMapping("/add")
-    @OperateLog
-    @SaCheckPermission("common:questionAnswer:add")
-    public CommonResult<Boolean> add(@RequestBody@Validated(Insert.class) BizQuestionAnswerDTO source) {
-        return CommonResult.success(bizQuestionAnswerService.insertBizQuestionAnswer(source));
-    }
-
-    @ApiOperationSupport(author = "lf",order = 4)
-    @ApiOperation(value="通过主键id编辑问卷回答",notes = "权限: common:questionAnswer:edit")
-    @PostMapping("/edit")
-    @OperateLog
-    @SaCheckPermission("common:questionAnswer:edit")
-    public CommonResult<Boolean> edit(@RequestBody@Validated(Update.class) BizQuestionAnswerDTO source) {
-        return CommonResult.success(bizQuestionAnswerService.updateBizQuestionAnswerById(source));
-    }
-
-    @ApiOperationSupport(author = "lf",order = 5)
-    @ApiOperation(value="删除问卷回答",notes = "权限: common:questionAnswer:remove")
-    @PostMapping("/removeByIds")
-    @OperateLog
-    @SaCheckPermission("common:questionAnswer:remove")
-    public CommonResult<Integer> delete(@RequestBody Collection<String> ids) {
-        return CommonResult.success(bizQuestionAnswerService.removeBizQuestionAnswerByIds(ids));
-    }
+//    @ApiOperationSupport(author = "lf",order = 3)
+//    @ApiOperation(value="添加问卷回答",notes = "权限: common:questionAnswer:add")
+//    @PostMapping("/add")
+//    @OperateLog
+//    @SaCheckPermission("common:questionAnswer:add")
+//    public CommonResult<Boolean> add(@RequestBody@Validated(Insert.class) BizQuestionAnswerDTO source) {
+//        return CommonResult.success(bizQuestionAnswerService.insertBizQuestionAnswer(source));
+//    }
+//
+//    @ApiOperationSupport(author = "lf",order = 4)
+//    @ApiOperation(value="通过主键id编辑问卷回答",notes = "权限: common:questionAnswer:edit")
+//    @PostMapping("/edit")
+//    @OperateLog
+//    @SaCheckPermission("common:questionAnswer:edit")
+//    public CommonResult<Boolean> edit(@RequestBody@Validated(Update.class) BizQuestionAnswerDTO source) {
+//        return CommonResult.success(bizQuestionAnswerService.updateBizQuestionAnswerById(source));
+//    }
+//
+//    @ApiOperationSupport(author = "lf",order = 5)
+//    @ApiOperation(value="删除问卷回答",notes = "权限: common:questionAnswer:remove")
+//    @PostMapping("/removeByIds")
+//    @OperateLog
+//    @SaCheckPermission("common:questionAnswer:remove")
+//    public CommonResult<Integer> delete(@RequestBody Collection<String> ids) {
+//        return CommonResult.success(bizQuestionAnswerService.removeBizQuestionAnswerByIds(ids));
+//    }
 }

+ 77 - 68
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/wx/config/WxAppletOauth2UserOperator.java

@@ -31,6 +31,7 @@ import cn.tr.plugin.security.bo.UserLoginInfoBO;
 import cn.tr.plugin.security.utils.SaTokenUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
@@ -45,6 +46,7 @@ import java.util.Optional;
  * @see <a href ="https://i-blog.csdnimg.cn/blog_migrate/34d657a0a813d1d774a9bc7eb8908311.png"/>微信登录流程图</a>
  * @see <a href="https://gitee.com/binary/weixin-java-miniapp-demo/blob/master/src/main/java/com/github/binarywang/demo/wx/miniapp/controller/WxMaUserController.java">调用接口示例</a>
  */
+@Slf4j
 @Component
 public class WxAppletOauth2UserOperator extends AbstractOAuth2PswUserOperator {
 
@@ -85,73 +87,80 @@ public class WxAppletOauth2UserOperator extends AbstractOAuth2PswUserOperator {
         if (StrUtil.isEmpty(wxAppletCode)) {
             throw new IllegalArgumentException("微信登陆码不能为空");
         }
+        WxMaJscode2SessionResult sessionInfo;
+        try {
+            sessionInfo = wxMaService.getUserService().getSessionInfo(wxAppletCode);
+        } catch (Exception e) {
+            log.error("微信服务调用失败 | appId:{} | code:{} | 错误:{}",
+                    source.getAppId(), source.getWxAppletCode(), e.getMessage(), e);
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "微信授权失败: " + e.getMessage());
+        }
 
-            WxMaJscode2SessionResult sessionInfo = wxMaService.getUserService().getSessionInfo(wxAppletCode);
-            String openid = sessionInfo.getOpenid();
-            //根据openid查询用户信息 (通过数据库进行查询)
-            BizWxUserDTO wxUser = wxUserService.getUserByOpenidAndAppid(openid,  appId);
-            if (wxUser == null) {
-                wxUser = new BizWxUserDTO();
-                wxUser.setId(IdUtil.getSnowflake().nextIdStr());
-                wxUser.setOpenId(openid);
-                wxUser.setAppId(appId);
-                wxUser.setNickname(username);
-                wxUser.setRegisterTime(loginTime);
-                wxUser.setLastLoginTime(loginTime);
-                wxUser.setLastLoginIp(ip);
-                wxUser.setLastLoginAddress(cityInfo);
-                wxUser.setLastLoginTenantId(source.getTenantId());
-                if (StrUtil.isNotBlank(sessionInfo.getUnionid())){
-                    wxUser.setUnionId(sessionInfo.getUnionid());
-                }
-                wxUserService.insertBizWxUser(wxUser);
-            }else {
-                wxUser.setLastLoginIp(ip);
-                wxUser.setLastLoginTime(loginTime);
-                wxUser.setLastLoginAddress(cityInfo);
+        String openid = sessionInfo.getOpenid();
+        //根据openid查询用户信息 (通过数据库进行查询)
+        BizWxUserDTO wxUser = wxUserService.getUserByOpenidAndAppid(openid, appId);
+        if (wxUser == null) {
+            wxUser = new BizWxUserDTO();
+            wxUser.setId(IdUtil.getSnowflake().nextIdStr());
+            wxUser.setOpenId(openid);
+            wxUser.setAppId(appId);
+            wxUser.setNickname(username);
+            wxUser.setRegisterTime(loginTime);
+            wxUser.setLastLoginTime(loginTime);
+            wxUser.setLastLoginIp(ip);
+            wxUser.setLastLoginAddress(cityInfo);
+            wxUser.setLastLoginTenantId(source.getTenantId());
+            if (StrUtil.isNotBlank(sessionInfo.getUnionid())) {
+                wxUser.setUnionId(sessionInfo.getUnionid());
             }
+            wxUserService.insertBizWxUser(wxUser);
+        } else {
+            wxUser.setLastLoginIp(ip);
+            wxUser.setLastLoginTime(loginTime);
+            wxUser.setLastLoginAddress(cityInfo);
+        }
 
-            StpLogic stpUtil = SaTokenUtils.getStpUtil();
-            stpUtil.login(wxUser.getId());
-            String tokenValue = stpUtil.getTokenValue();
-            wxUserService.updateLastLoginInfo(wxUser.getId(),loginTime,ip,cityInfo);
-            //清除缓存
-            self.delUserLoginInfoCache(wxUser.getId());
-
-            UserAgent userAgent = Optional.ofNullable(UserAgentUtil.parse(ServletUtils.getRequest().getHeader("User-Agent"))).orElse(new UserAgent());
-            String browser = ObjectUtil.isEmpty(userAgent.getBrowser()) ? "未知" : userAgent.getBrowser().getName();
-            String os = ObjectUtil.isEmpty(userAgent.getOs()) ? "未知" : userAgent.getOs().getName();
-
-            UserLoginInfoBO loginInfo = UserLoginInfoBO.builder()
-                    .userId(wxUser.getId())
-                    .nickname(wxUser.getNickname())
-                    .username(username)
-                    .tenantId(wxUser.getLastLoginTenantId())
-                    .token(tokenValue)
-                    .loginType(LoginTypeConstant.WX_APPLET)
-                    .loginIp(wxUser.getLastLoginIp())
-                    .loginLocation(cityInfo)
-                    .loginTime(loginTime)
-                    .browser(browser)
-                    .os(os)
-                    .orgId("")
-                    .signature("")
-                    .build();
-
-            if(StrUtil.isNotBlank(source.getTenantId())){
-                //如果有医院信息,则绑定医院关系
-                BizWxUserHospitalPO wxUserHospital = wxUserHospitalRepository.selectOne(new LambdaQueryWrapper<BizWxUserHospitalPO>()
-                        .eq(BizWxUserHospitalPO::getWxUserId, wxUser.getId())
-                        .eq(BizWxUserHospitalPO::getTenantId, source.getTenantId())
-                        .last("limit 1"));
-                if (ObjectUtil.isNull(wxUserHospital)) {
-                    wxUserHospital.setWxUserId(wxUser.getId());
-                    wxUserHospital.setTenantId(source.getTenantId());
-                    wxUserHospitalRepository.insert(wxUserHospital);
-                }
+        StpLogic stpUtil = SaTokenUtils.getStpUtil();
+        stpUtil.login(wxUser.getId());
+        String tokenValue = stpUtil.getTokenValue();
+        wxUserService.updateLastLoginInfo(wxUser.getId(), loginTime, ip, cityInfo);
+        //清除缓存
+        self.delUserLoginInfoCache(wxUser.getId());
+
+        UserAgent userAgent = Optional.ofNullable(UserAgentUtil.parse(ServletUtils.getRequest().getHeader("User-Agent"))).orElse(new UserAgent());
+        String browser = ObjectUtil.isEmpty(userAgent.getBrowser()) ? "未知" : userAgent.getBrowser().getName();
+        String os = ObjectUtil.isEmpty(userAgent.getOs()) ? "未知" : userAgent.getOs().getName();
+
+        UserLoginInfoBO loginInfo = UserLoginInfoBO.builder()
+                .userId(wxUser.getId())
+                .nickname(wxUser.getNickname())
+                .username(username)
+                .tenantId(wxUser.getLastLoginTenantId())
+                .token(tokenValue)
+                .loginType(LoginTypeConstant.WX_APPLET)
+                .loginIp(wxUser.getLastLoginIp())
+                .loginLocation(cityInfo)
+                .loginTime(loginTime)
+                .browser(browser)
+                .os(os)
+                .orgId("")
+                .signature("")
+                .build();
+
+        if (StrUtil.isNotBlank(source.getTenantId())) {
+            //如果有医院信息,则绑定医院关系
+            BizWxUserHospitalPO wxUserHospital = wxUserHospitalRepository.selectOne(new LambdaQueryWrapper<BizWxUserHospitalPO>()
+                    .eq(BizWxUserHospitalPO::getWxUserId, wxUser.getId())
+                    .eq(BizWxUserHospitalPO::getTenantId, source.getTenantId())
+                    .last("limit 1"));
+            if (ObjectUtil.isNull(wxUserHospital)) {
+                wxUserHospital.setWxUserId(wxUser.getId());
+                wxUserHospital.setTenantId(source.getTenantId());
+                wxUserHospitalRepository.insert(wxUserHospital);
             }
-            setSessionUser(tokenValue,loginInfo);
-            return tokenValue;
+        }
+        setSessionUser(tokenValue, loginInfo);
+        return tokenValue;
     }
 
     @Override
@@ -162,8 +171,8 @@ public class WxAppletOauth2UserOperator extends AbstractOAuth2PswUserOperator {
     @Override
     @TenantIgnore
     public OAuth2PswLoginInfoDTO getUserLoginInfo() {
-        String loginId =String.valueOf( SaTokenUtils.getStpUtil().getLoginId());
-        return  BizWxUserMapper.INSTANCE.convertPswLoginInfo(wxUserService.selectBizWxUserById(loginId));
+        String loginId = String.valueOf(SaTokenUtils.getStpUtil().getLoginId());
+        return BizWxUserMapper.INSTANCE.convertPswLoginInfo(wxUserService.selectBizWxUserById(loginId));
     }
 
     @Override
@@ -175,13 +184,13 @@ public class WxAppletOauth2UserOperator extends AbstractOAuth2PswUserOperator {
     @TenantIgnore
     public void updateAccountUserInfo(String userId, AccountUserInfoEditDTO source) {
         BizWxUserPO wxUser = wxUserRepository.selectById(userId);
-        if(ObjectUtil.isNotNull(wxUser)){
+        if (ObjectUtil.isNotNull(wxUser)) {
             wxUser.setNickname(source.getNickname());
             wxUser.setAvatar(source.getAvatar());
             wxUser.setPhone(source.getPhone());
             wxUserRepository.updateById(wxUser);
-        }else {
-            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"该用户不存在");
+        } else {
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "该用户不存在");
         }
 
     }

+ 3 - 3
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/wx/controller/vo/BizWxDeptQuestionVO.java

@@ -40,7 +40,7 @@ public class BizWxDeptQuestionVO {
     @ApiModelProperty(value = "排序", position = 7)
     private Integer sort;
 
-
-    @ApiModelProperty(value = "回答内容",position = 8)
-    private List<String> answer;
+//
+//    @ApiModelProperty(value = "回答内容",position = 8)
+//    private List<String> answer;
 }