jinpengyong
2024-03-01 b9a62c75633d8f22fece8645d528be79dc116d7d
screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -8,6 +8,7 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.config.Interceptor.UserHelper;
import com.moral.api.entity.*;
import com.moral.api.mapper.*;
import com.moral.api.pojo.bo.UserBO;
@@ -15,18 +16,19 @@
import com.moral.api.pojo.enums.FileTableEnum;
import com.moral.api.pojo.enums.StateEnum;
import com.moral.api.pojo.enums.SysDictTypeEnum;
import com.moral.api.pojo.query.app.AppAllocationPushUserCond;
import com.moral.api.pojo.vo.file.FileVo;
import com.moral.api.pojo.vo.user.QxUser;
import com.moral.api.service.FileTableService;
import com.moral.api.service.ResponsibilityUnitService;
import com.moral.api.service.UserService;
import com.moral.api.utils.OperationLogUtils;
import com.moral.api.utils.StringUtils;
import com.moral.api.utils.WechatUtils;
import com.moral.api.vo.WxMssVo;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.*;
import com.sun.org.apache.regexp.internal.RE;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@@ -78,6 +80,9 @@
    @Autowired
    private ResponsibilityUnitMapper responsibilityUnitMapper;
    @Autowired
    private ResponsibilityUnitService responsibilityUnitService;
    @Value("${AES.KEY}")
    private String AESKey;
@@ -112,6 +117,16 @@
        }
        ResponsibilityUnit responsibilityUnit = responsibilityUnitMapper.selectById(userBo.getUnitId());
        List<Integer> list = responsibilityUnitMapper.selectCodeList(SysDictTypeEnum.SYS_DEVICE.value, userBo.getId());
        result.put("userName", userBo.getUserName());
        result.put("unitId",userBo.getUnitId());
        result.put("userId", userBo.getId());
        result.put("account", userBo.getAccount());
        List<FileVo> listFile =  fileTableService.list(userBo.getId(), FileTableEnum.APP_ALLOCATION.value);
        result.put("file", CollectionUtils.isNotEmpty(listFile)?listFile.get(0):new FileVo());
        result.put("unName",Objects.nonNull(responsibilityUnit)&&Objects.nonNull(responsibilityUnit.getUnitName())?responsibilityUnit.getUnitName():"管理员登陆");
        result.put("device",ObjectUtils.isEmpty(list)? StateEnum.NOT_EFFECTIVE.value :StateEnum.TAKE_EFFECT.value);
        String userIdStr = new StringBuffer("00").append(userBo.getId().toString()).toString();
        String tokenResult = TokenUtils.getTokenById(userIdStr);
        //封装用户信息
        Map<String, Object> userInfo = new LinkedHashMap<>();
        userInfo.put("userId", userBo.getId());
@@ -126,19 +141,25 @@
        userInfo.put("isAdmin", userBo.getIsAdmin());
        userInfo.put("organizationId",userBo.getOrganizationId());
        userInfo.put("openid", openId);
        if(StringUtils.isNotEmpty(tokenResult)){
            result.put("token", tokenResult);
            result.put("code", ResponseCodeEnum.SUCCESS.getCode());
            result.put("msg", ResponseCodeEnum.SUCCESS.getMsg());
            sysLog("登陆了用户:" + userBo.getAccount()+" ;openId:"+openId,userBo);
            //添加openId到user表中
            User user = userMapper.selectById(userBo.getId());
            user.setOpenId(openId);
            userMapper.updateById(user);
            TokenUtils.getRefreshTokenApp(tokenResult,userInfo);
            return result;
        }
        try {
            //生成token,并存入redis
            String token = TokenUtils.getTokenApp(new StringBuffer("00").append(userBo.getId().toString()).toString(),userInfo);
            result.put("token", token);
            result.put("userName", userBo.getUserName());
            result.put("unitId",userBo.getUnitId());
            result.put("userId", userBo.getId());
            result.put("account", userBo.getAccount());
            List<FileVo> listFile =  fileTableService.list(userBo.getId(), FileTableEnum.APP_ALLOCATION.value);
            result.put("file", CollectionUtils.isNotEmpty(listFile)?listFile.get(0):new FileVo());
            result.put("unName",Objects.nonNull(responsibilityUnit)&&Objects.nonNull(responsibilityUnit.getUnitName())?responsibilityUnit.getUnitName():"管理员登陆");
            result.put("device",ObjectUtils.isEmpty(list)? StateEnum.NOT_EFFECTIVE.value :StateEnum.TAKE_EFFECT.value);
        } catch (Exception e) {
            log.error("token生成异常:" + e.getMessage());
            result.put("code", ResponseCodeEnum.TOKEN_CREATE_ERROR.getCode());
@@ -187,7 +208,23 @@
//            String nickName = rawDataJson.getString("nickName");
//            String avatarUrl = rawDataJson.getString("avatarUrl");
        }
        String userIdStr = new StringBuffer("00").append(user.getId().toString()).toString();
        String tokenResult = TokenUtils.getTokenById(userIdStr);
        result.put("userName", user.getUserName());
        result.put("unitId",user.getUnitId());
        List<FileVo> listFile =  fileTableService.list(user.getId(), FileTableEnum.APP_ALLOCATION.value);
        result.put("file", CollectionUtils.isNotEmpty(listFile)?listFile.get(0):new FileVo());
        result.put("userId", user.getId());
        result.put("account", user.getAccount());
        ResponsibilityUnit responsibilityUnit = responsibilityUnitMapper.selectById(user.getUnitId());
        //设备秒级权限
        List<Integer> list = responsibilityUnitMapper.selectCodeList(SysDictTypeEnum.SYS_DEVICE.value, user.getId());
        //手持设备秒级权限
        List<Integer> handList = responsibilityUnitMapper.selectCodeList(SysDictTypeEnum.SYS_HAND_DEVICE.value, user.getId());
        result.put("device",ObjectUtils.isEmpty(list)? StateEnum.NOT_EFFECTIVE.value : StateEnum.TAKE_EFFECT.value);
        result.put("handDevice",ObjectUtils.isEmpty(handList)? StateEnum.NOT_EFFECTIVE.value : StateEnum.TAKE_EFFECT.value);
        result.put("unName",Objects.nonNull(responsibilityUnit)&&Objects.nonNull(responsibilityUnit.getUnitName())?responsibilityUnit.getUnitName():"管理员登陆");
        result.put("openId",openid);
        Map<String, Object> userInfo = new LinkedHashMap<>();
        userInfo.put("userId", user.getId());
        userInfo.put("account", user.getAccount());
@@ -195,26 +232,24 @@
        userInfo.put("email", user.getEmail());
        userInfo.put("mobile", user.getMobile());
        userInfo.put("unitId",user.getUnitId());
//        userInfo.put("unName",user.getAreaName());
        userInfo.put("organizationId",user.getOrganizationId());
        userInfo.put("wechat", user.getWechat());
        userInfo.put("expireTime", DateUtils.dateToDateString(user.getExpireTime()));
        userInfo.put("isAdmin", user.getIsAdmin());
        ResponsibilityUnit responsibilityUnit = responsibilityUnitMapper.selectById(user.getUnitId());
        List<Integer> list = responsibilityUnitMapper.selectCodeList(SysDictTypeEnum.SYS_DEVICE.value, user.getId());
        if(StringUtils.isNotEmpty(tokenResult)){
            result.put("token", tokenResult);
            result.put("code", ResponseCodeEnum.SUCCESS.getCode());
            result.put("msg", ResponseCodeEnum.SUCCESS.getMsg());
            sysLog("登陆了用户:" + user.getAccount()+" ;openId:"+openid,user);
            TokenUtils.getRefreshTokenApp(tokenResult,userInfo);
            return result;
        }
        try {
            //生成token,并存入redis
            String token = TokenUtils.getTokenApp(new StringBuffer("00").append(user.getId().toString()).toString(),userInfo);
            result.put("token", token);
            result.put("userName", user.getUserName());
            result.put("unitId",user.getUnitId());
            List<FileVo> listFile =  fileTableService.list(user.getId(), FileTableEnum.APP_ALLOCATION.value);
            result.put("file", CollectionUtils.isNotEmpty(listFile)?listFile.get(0):new FileVo());
            result.put("userId", user.getId());
            result.put("account", user.getAccount());
            result.put("device",ObjectUtils.isEmpty(list)? StateEnum.NOT_EFFECTIVE.value : StateEnum.TAKE_EFFECT.value);
            result.put("unName",Objects.nonNull(responsibilityUnit)&&Objects.nonNull(responsibilityUnit.getUnitName())?responsibilityUnit.getUnitName():"管理员登陆");
            result.put("openId",openid);
        } catch (Exception e) {
            log.error("token生成异常:" + e.getMessage());
            result.put("code", ResponseCodeEnum.TOKEN_CREATE_ERROR.getCode());
@@ -237,16 +272,15 @@
    }
     @Autowired
     private ResponsibilityUnitService responsibilityUnitService;
    /**
     * 小程序推送
     * @param appAllocationPushUserCond
     */
    @Override
    @Async
    public void pushOneUser(AppAllocationPushUserCond appAllocationPushUserCond) {
    @Async("asyncPoolTaskExecutor")
    public void pushOneUser(Allocation appAllocationPushUserCond) {
        QxUser currentUser = UserHelper.getCurrentUser();
        ResponsibilityUnit responsibilityUnit = responsibilityUnitMapper.selectById(appAllocationPushUserCond.getUnitId());
        Integer areaCode = responsibilityUnit.getAreaCode();
@@ -272,6 +306,9 @@
        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + WechatUtils.getAccessToken();
        //发送消息
        for (User user : users) {
            if (user.getId().equals(currentUser.getUserId())){
                continue;
            }
            RestTemplate restTemplate = new RestTemplate();
            //拼接推送的模版
            WxMssVo wxMssVo = new WxMssVo();
@@ -279,7 +316,7 @@
            wxMssVo.setTemplate_id("YNqUZ1MgMvwY3G-NENVbcmIBR5dUotSdnwcz96CWrho");//订阅消息模板id
            wxMssVo.setLang("zh_CN");
            wxMssVo.setMiniprogramState("formal");
//        wxMssVo.setPage("pages/index/index");
            wxMssVo.setPage("pages/index/index");
            Map<String, Object> m = new HashMap<>();
            HashMap<String, Object> map1 = new HashMap<>();
            HashMap<String, Object> map2 = new HashMap<>();
@@ -297,7 +334,7 @@
            ResponseEntity<String> responseEntity =
                    restTemplate.postForEntity(url, wxMssVo, String.class);
            String body = responseEntity.getBody();
            log.info("信息:"+body+"账号:"+user.getUserName());
            log.info("信息:"+body+"账号:"+user.getAccount()+"openID"+user.getOpenId());
        }
    }