Helius
2022-05-27 4351e71d782741143a98f86f6648acd16689165f
zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
@@ -2,6 +2,7 @@
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.TypeReference;
import com.matrix.component.tools.HttpCurlUtil;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.*;
@@ -16,6 +17,7 @@
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.common.init.LocalCache;
import com.matrix.system.common.init.UserCacheManager;
import com.matrix.system.common.interceptor.HostInterceptor;
import com.matrix.system.common.service.SysCompanyService;
import com.matrix.system.common.service.SysUsersService;
@@ -58,6 +60,9 @@
@RestController
@RequestMapping(value = "/api/common")
public class ApiCommonAction {
    @Autowired
    UploadUtil uploadUtil;
    @Autowired
    private SysUsersService sysUsersService;
@@ -77,6 +82,8 @@
    @Autowired
    WeChatApiTools weChatApiTools;
    @Autowired
    private UserCacheManager userCacheManager;
    @Value("${file_storage_path}")
    private String fileStoragePath;
@@ -166,11 +173,12 @@
        EXT_LIST.add(FileType.PNG);
    }
    @ApiOperation(value = "表单图片上传接口", notes = "表单图片上传接口")
    @PostMapping(value = "/uploadImg")
    public AjaxResult uploadImg(HttpServletResponse response, MultipartHttpServletRequest request)
            throws IOException, FileUploadException, NoSuchAlgorithmException {
        Map<String, String> fileMap = UploadUtil.doUpload(request, EXT_LIST, folderType, 1L);
        Map<String, String> fileMap = uploadUtil.doUpload(request, EXT_LIST, folderType, 1L);
        AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("上传成功");
        ajaxResult.putInMap("file", fileMap.get("visitPath"));
        return ajaxResult;
@@ -187,7 +195,7 @@
            return AjaxResult.buildFailInstance("该手机号不存在");
        }
        String codeExist = LocalCache.get(smsCodeDto.getTelphone());
        String codeExist = LocalCache.get(smsCodeDto.getTelphone(),new TypeReference<String>(){});
        if (StringUtils.isNotBlank(codeExist)) {
            return AjaxResult.buildFailInstance("请勿重复发送验证码");
        }
@@ -208,7 +216,7 @@
            return AjaxResult.buildFailInstance("该手机号不存在");
        }
        String code = LocalCache.get(pwdResetDto.getTelphone());
        String code = LocalCache.get(pwdResetDto.getTelphone(),new TypeReference<String>(){});
        if (StringUtils.isBlank(code)) {
            return AjaxResult.buildFailInstance("验证码已失效,请重新发送");
        }
@@ -278,6 +286,7 @@
        }
        AjaxResult ajaxResult = new AjaxResult();
        ajaxResult.setStatus(AjaxResult.STATUS_SUCCESS);
        ajaxResult.putInMap("url", list.get(0).getComWebUrl());
        return ajaxResult;
    }
@@ -289,7 +298,7 @@
            return AjaxResult.buildFailInstance("code不存在");
        }
        AjaxResult res = new AjaxResult();
        String requrl = weChatApiTools.getXcxLoginUrl(code, HostInterceptor.getCompanyId(), AppConstance.MINI_PROGRAM_MANAGER_APP_ID);
        String requrl = weChatApiTools.getManagerXcxLoginUrl(code);
        String resultData = HttpCurlUtil.sendGetHttp(requrl, null);
        JSONObject json = JSONObject.fromObject(resultData);
@@ -303,7 +312,84 @@
        }
        String openId = json.getString("openid");
        return null;
        res.setStatus(AjaxResult.STATUS_SUCCESS);
        res.putInMap("openId", openId);
        SysUsers hasBind = sysUsersService.findByOpenId(openId, HostInterceptor.getCompanyId());
        if (hasBind == null) {
            res.setInfo("未绑定用户");
            return res;
        }
        String token = userCacheManager.saveUserInfo(hasBind);
        LogUtil.info("用户token={}", token);
        authorityManager.initUserPower(res, hasBind);
        UserInfoVo userInfoVo = new UserInfoVo();
        if(hasBind.getShopId()!=null){
            SysShopInfo shopInfo = sysShopInfoService.findById(hasBind.getShopId());
            hasBind.setShopName(shopInfo.getShopName());
            userInfoVo.setShopName(shopInfo.getShopShortName());
        }
        userInfoVo.setId(hasBind.getSuId());
        userInfoVo.setName(hasBind.getSuName());
        userInfoVo.setRoleName(hasBind.getRoleName());
        userInfoVo.setPhoto(hasBind.getSuPhoto());
        res.putInMap("token", token);
        res.putInMap("userInfo", userInfoVo);
        return res;
    }
    @ApiOperation(value = "绑定用户")
    @PostMapping(value = "/bindUser")
    public AjaxResult bindUser(@RequestBody @Validated LoginDto loginDto) {
        SysUsers user = new SysUsers();
        user.setSuAccount(loginDto.getUsername());
        user.setSuPassword(loginDto.getPassword());
        LoginStrategy apLogin = new AccountPasswordLogin(user, sysUsersService);
        user = authorityManager.login(apLogin);
        user.setSuPassword(null);
        user.setOpenIds(null);
        String token = userCacheManager.saveUserInfo(user);
        AjaxResult result = AjaxResult.buildSuccessInstance("登陆成功");
        authorityManager.initUserPower(result, user);
        UserInfoVo userInfoVo = new UserInfoVo();
        if(user.getShopId()!=null){
            SysShopInfo shopInfo = sysShopInfoService.findById(user.getShopId());
            user.setShopName(shopInfo.getShopName());
            userInfoVo.setShopName(shopInfo.getShopShortName());
        }
        userInfoVo.setId(user.getSuId());
        userInfoVo.setName(user.getSuName());
        userInfoVo.setRoleName(user.getRoleName());
        userInfoVo.setPhoto(user.getSuPhoto());
        result.putInMap("token", token);
        result.putInMap("userInfo", userInfoVo);
        synchronized (this) {
            SysUsers hasBind = sysUsersService.findByOpenId(loginDto.getOpenId(), HostInterceptor.getCompanyId());
            if (hasBind != null) {
                if(StrUtil.isNotBlank(hasBind.getOpenIds())) {
                    List<String> openIds = StrUtil.split(hasBind.getOpenIds(), ',');
                    openIds.remove(loginDto.getOpenId());
                    sysUsersService.modifyUserOpenId(CollUtil.join(openIds, ","), hasBind.getSuId());
                }
            }
            List<String> openIds = StrUtil.split(user.getOpenIds(), ',');
            openIds.add(loginDto.getOpenId());
            user.setOpenIds(CollUtil.join(openIds, ","));
            sysUsersService.modifyByModel(user);
        }
        return result;
    }
}