yanghui
2022-10-14 e4ead8decf8ce5c4b590da877bf60f6780066c24
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -22,12 +22,15 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.panzhihua.common.model.dtos.community.microCommercialStreet.BindUserPhoneDTO;
import com.panzhihua.common.model.dtos.partybuilding.ComPbCheckUserDTO;
import com.panzhihua.common.model.vos.community.ComAreaTownCommunityVO;
import com.panzhihua.common.model.vos.community.acid.ComActAcidCheckRecordVO;
import com.panzhihua.common.model.vos.community.acid.ComActAcidMemberVO;
import com.panzhihua.common.model.vos.community.acid.ComActAcidRecordVO;
import com.panzhihua.common.model.vos.community.microCommercialStreet.McsLoginUserInfoVO;
import com.panzhihua.common.model.vos.sanshuo.ComSanshuoExpertVO;
import com.panzhihua.common.model.vos.user.*;
import com.panzhihua.common.service.community.CommunityService;
import com.panzhihua.common.utlis.*;
import com.panzhihua.service_user.dao.*;
import com.panzhihua.service_user.entity.SysAppConfig;
@@ -301,11 +304,18 @@
     */
    @Override
    public R<LoginUserInfoVO> getUserInfo(String name, int type,String appId) {
        //是否为三说会堂行业分中心或专家后台账号
        SysUserDO sysUserDO = null;
        Boolean isIndustryOrExpertAccount=(userDao.isIndustryCenterAccount(name)>0 || userDao.isExpertAccount(name)>0);
        if (1 == type) {
            sysUserDO = userDao.selectOne(
                new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, type).eq(SysUserDO::getOpenid, name));
        } else {
        }else if(isIndustryOrExpertAccount) {
            //三说会堂行业分中心或专家后台账号登陆
            sysUserDO = userDao.selectOne(
                    new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getAccount, name).eq(SysUserDO::getAppId, appId));
        }
        else {
            LambdaQueryWrapper<SysUserDO> wrapper = new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, type);
            if (type == 11) {
                //只允许通过account登录
@@ -470,8 +480,37 @@
            }
        }
        loginUserInfoVO.setIsRealNamed(sysUserDO.getIdCard() != null);
        //是否社区或街道后台
        int countSocialOrg=userDao.countSocialOrg(sysUserDO.getUserId());
        if(countSocialOrg>0){
            loginUserInfoVO.setUserType(3);
        }
        else {
            if(loginUserInfoVO.getStreetId()!=null){
                loginUserInfoVO.setUserType(1);
                loginUserInfoVO.setLevel(3);
            }
            else {
                loginUserInfoVO.setUserType(2);
                loginUserInfoVO.setLevel(4);
            }
        }
        if (sysUserDO.getType().equals(11)){
            loginUserInfoVO.setLevel(5);
        }else if (sysUserDO.getType().equals(12)){
            loginUserInfoVO.setLevel(2);
        }else if (isNull(loginUserInfoVO.getLevel())){
            loginUserInfoVO.setLevel(1);
        }
        //是否为三说会堂专家
        ComSanshuoExpertVO expertVO=userDao.isExpert(loginUserInfoVO.getPhone());
        if (nonNull(expertVO)){
            loginUserInfoVO.setType(13);
        }
        return R.ok(loginUserInfoVO);
    }
    /**
     * 修改用户登录密码
@@ -745,10 +784,30 @@
        else {
            if(loginUserInfoVO.getStreetId()!=null){
                loginUserInfoVO.setUserType(1);
                loginUserInfoVO.setLevel(3);
            }
            else {
                loginUserInfoVO.setUserType(2);
                loginUserInfoVO.setLevel(4);
            }
        }
        if (sysUserDO.getType().equals(11)){
            loginUserInfoVO.setLevel(5);
        }else if (sysUserDO.getType().equals(12)){
            loginUserInfoVO.setLevel(2);
        }else if (isNull(loginUserInfoVO.getLevel())){
            loginUserInfoVO.setLevel(1);
        }
        loginUserInfoVO.setBackstageType(1);
        String[] account={"dongqu","xiqu","yanbianxian","miyixian","renhequ","fantaixinqu"};
        if("zuzhibu".equals(sysUserDO.getAccount())){
            loginUserInfoVO.setBackstageType(2);
        }
        if(ArrayUtil.contains(account,sysUserDO.getAccount())){
            loginUserInfoVO.setBackstageType(3);
        }
        if(sysUserDO.getBindingCheckUnitId()!=null){
            loginUserInfoVO.setBackstageType(4);
        }
        return R.ok(loginUserInfoVO);
    }
@@ -3538,7 +3597,7 @@
    @Override
    public R uuPush(String washPhone,String phone,String washName,Integer orderStatus) {
        if(StringUtils.isNotEmpty(phone)){
            SysUserDO sysUserDO=userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone,phone).orderByDesc(SysUserDO::getCreateAt).last("limit 1"));
            SysUserDO sysUserDO=userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone,phone).eq(SysUserDO::getAppId,"wx118de8a734d269f0").orderByDesc(SysUserDO::getCreateAt).last("limit 1"));
            if(sysUserDO!=null&&StringUtils.isNotEmpty(sysUserDO.getOpenid())){
                String status="";
                String accessToken="";
@@ -3561,6 +3620,38 @@
                    case 9 : status="订单已取消";
                        WxUtil.sendUuWash(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"9_2FhQPDxZoUqmAuIZ1L1zjjYXokdNvu7A0gzKfvruI");
                    break;
                }
            }
        }
        return R.ok();
    }
    @Override
    public R wsPush(String washPhone,String phone,String washName,Integer orderStatus) {
        if(StringUtils.isNotEmpty(phone)){
            SysUserDO sysUserDO=userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone,phone).eq(SysUserDO::getAppId,"wx98d62711dfbd8425").orderByDesc(SysUserDO::getCreateAt).last("limit 1"));
            if(sysUserDO!=null&&StringUtils.isNotEmpty(sysUserDO.getOpenid())){
                String status="";
                String accessToken="";
                WxXCXTempSend util = new WxXCXTempSend();
                try {
                    accessToken = util.getWsAccessToken();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                switch (orderStatus){
                    case 3 : status="已分配车美";
                        WxUtil.sendWsWash3(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"sNj6m-JBvW6rOokKGDX9X3-XH1AD0GY5_X0jA9JSLwc");
                        break;
                    case 4 : status="车美已开始服务";
                        WxUtil.sendWsWash4(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"Eft5ksvsnOQANy2uNOGY43CC3pb33eDGA_lgCEoxuiw");
                        break;
                    case 6 : status="订单确认完成";
                        WxUtil.sendWsWash6(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"iPS8yrsGDqy76hiP8bIbxkosveoX1xTFhdusSiGp-XM");
                        break;
                    case 9 : status="订单已取消";
                        WxUtil.sendWsWash(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"z_ysGXz9JWBc2rXuYZzVCXKJTyLf0w0WerrohuNoEng");
                        break;
                }
            }
        }
@@ -3677,6 +3768,117 @@
        return R.ok();
    }
    @Override
    @Transactional
    public R addComPbCheckUser(ComPbCheckUserDTO comPbCheckUserDTO) {
        SysUserDO sysUserDO=userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getAccount,comPbCheckUserDTO.getAccount()).eq(SysUserDO::getType,3).eq(SysUserDO::getAppId,"wx118de8a734d269f0"));
        if(sysUserDO!=null){
            return R.fail("账户名已存在");
        }
        SysUserDO sysUserDO1=new SysUserDO();
        sysUserDO1.setUserId(Snowflake.getId());
        sysUserDO1.setAccount(comPbCheckUserDTO.getAccount());
        sysUserDO1.setPassword(new BCryptPasswordEncoder().encode(comPbCheckUserDTO.getPassword()));
        sysUserDO1.setType(3);
        sysUserDO1.setAppId("wx118de8a734d269f0");
        sysUserDO1.setCommunityId(0L);
        sysUserDO1.setBindingCheckUnitId(comPbCheckUserDTO.getCheckUnitId());
        int restlt=userDao.insert(sysUserDO1);
        if(restlt>0){
            SysUserRoleDO sysUserRoleDO=new SysUserRoleDO();
            sysUserRoleDO.setRoleId(123321L);
            sysUserRoleDO.setUserId(sysUserDO1.getUserId());
            sysUserRoleDAO.insert(sysUserRoleDO);
        }
        return R.ok();
    }
    /**
     * 三说会堂新增业务中心或专家账号
     * */
    @Override
    public R addExpertOrIndustryCenter(AdministratorsUserVO administratorsUserVO) {
        SysUserDO sysUserDO=new SysUserDO();
        //是否存在相同账号
        SysUserDO userDO = userDao.selectOne(new QueryWrapper<SysUserDO>().eq("account", administratorsUserVO.getAccount()));
        if (isNull(userDO)){
            sysUserDO.setAppId("wx0cef797390444b75");
            sysUserDO.setCreateAt(new Date());
            sysUserDO.setUserId(administratorsUserVO.getUserId());
            sysUserDO.setAccount(administratorsUserVO.getAccount());
            sysUserDO.setPassword(new BCryptPasswordEncoder().encode(administratorsUserVO.getPassword()));
            sysUserDO.setName(administratorsUserVO.getName());
            if (nonNull(administratorsUserVO.getImageUrl())){
                sysUserDO.setImageUrl(administratorsUserVO.getImageUrl());
            }
            if (nonNull(administratorsUserVO.getType())){
                sysUserDO.setType(administratorsUserVO.getType());
            }
            if (nonNull(administratorsUserVO.getPhone())){
                sysUserDO.setPhone(administratorsUserVO.getPhone());
            }
            userDao.insert(sysUserDO);
            //分配权限
            SysUserRoleDO sysUserRole=new SysUserRoleDO();
            sysUserRole.setUserId(sysUserDO.getUserId());
            if (sysUserDO.getType().equals(11)){
                sysUserRole.setRoleId(Long.parseLong(UserConstants.SANSHUO_EXPERT_ROLE));
                //将专家小程序账号设置为专家权限
                SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, 1).eq(SysUserDO::getPhone, administratorsUserVO.getPhone()));
                if (nonNull(sysUserDO1)){
                    sysUserDO1.setType(13);
                    userDao.updateById(sysUserDO1);
                    log.info("添加专家小程序账号权限");
                }
            }else{
                sysUserRole.setRoleId(Long.parseLong(UserConstants.SANSHUO_INDUSTRY_CENTER_ROLE));
            }
            //配置权限
            sysUserRoleDAO.insert(sysUserRole);
            return R.ok();
        }
        return R.fail("账户名已存在");
    }
    /**
     * 三说会堂后台重置密码
     * */
    @Override
    public R resetPassExpertOrIndustryCenter(String account,String password) {
        SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().eq("account", account));
        if (nonNull(sysUserDO)){
            sysUserDO.setPassword(new BCryptPasswordEncoder().encode(password));
            userDao.updateById(sysUserDO);
            return R.ok();
        }
        return R.fail("修改失败");
    }
    /**
     * 移除专家权限
     * */
    @Override
    public R removeExpertRole(String phone) {
        if (nonNull(phone)){
            //是否有权限为专家的账号
            SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, 11).eq(SysUserDO::getPhone, phone));
            if (nonNull(sysUserDO)){
                //删除后台账号
                sysUserDO.setStatus(2);
                userDao.updateById(sysUserDO);
                log.info("禁用专家后台账号成功");
            }
            //小程序账号移除专家权限
            SysUserDO sysUserDO1 = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, 13).eq(SysUserDO::getPhone, phone));
            if (nonNull(sysUserDO1)){
                sysUserDO1.setType(1);
                userDao.updateById(sysUserDO1);
                log.info("移除专家权限成功");
            }
        }
        return R.ok();
    }
    @Override
    public R getAreaAndStreet() {