|  |  | 
 |  |  | package com.doumee.service.business.impl; | 
 |  |  |  | 
 |  |  | import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; | 
 |  |  | import cn.hutool.core.date.DateUnit; | 
 |  |  | import com.alibaba.fastjson.JSONObject; | 
 |  |  | import com.doumee.biz.system.SystemDictDataBiz; | 
 |  |  | import com.doumee.biz.zbom.model.IamUserRoleModel; | 
 |  |  | import com.doumee.biz.zbom.model.IamUserTypeModel; | 
 |  |  | import com.doumee.config.Jwt.JwtPayLoad; | 
 |  |  | import com.doumee.config.Jwt.JwtTokenUtil; | 
 |  |  | import com.doumee.core.annotation.excel.ExcelImporter; | 
 |  |  | import com.doumee.core.constants.ResponseStatus; | 
 |  |  | import com.doumee.core.exception.BusinessException; | 
 |  |  | import com.doumee.core.model.LoginUserInfo; | 
 |  |  | import com.doumee.core.model.PageData; | 
 |  |  | import com.doumee.core.model.PageWrap; | 
 |  |  | import com.doumee.core.utils.Constants; | 
 |  |  | import com.doumee.core.utils.DateUtil; | 
 |  |  | import com.doumee.core.utils.GeneratePicUtil; | 
 |  |  | import com.doumee.core.utils.Utils; | 
 |  |  | import com.doumee.core.utils.tyyun.TyyZosUtil; | 
 |  |  | import com.doumee.dao.admin.request.ShopImport; | 
 |  |  | import com.doumee.dao.admin.request.UserImport; | 
 |  |  | import com.doumee.dao.business.ShopMapper; | 
 |  |  | import com.doumee.core.wx.WxMiniConfig; | 
 |  |  | import com.doumee.dao.business.SmsEmailMapper; | 
 |  |  | import com.doumee.dao.business.UsersMapper; | 
 |  |  | import com.doumee.dao.business.model.Multifile; | 
 |  |  | import com.doumee.dao.business.model.News; | 
 |  |  | import com.doumee.dao.business.model.Shop; | 
 |  |  | import com.doumee.dao.business.model.Member; | 
 |  |  | import com.doumee.dao.business.model.Users; | 
 |  |  | import com.doumee.dao.business.model.*; | 
 |  |  | import com.doumee.dao.system.model.SystemDictData; | 
 |  |  | import com.doumee.dao.system.model.SystemUser; | 
 |  |  | import com.doumee.dao.web.reqeust.EditUsersRequest; | 
 |  |  | import com.doumee.dao.web.response.AccountResponse; | 
 |  |  | import com.doumee.service.business.UsersService; | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
 |  |  | import com.baomidou.mybatisplus.core.metadata.IPage; | 
 |  |  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
 |  |  | import com.github.yulichang.interfaces.MPJBaseJoin; | 
 |  |  | import com.github.yulichang.wrapper.MPJLambdaWrapper; | 
 |  |  | import org.apache.catalina.User; | 
 |  |  | import org.apache.commons.lang3.StringUtils; | 
 |  |  | import me.chanjar.weixin.common.error.WxErrorException; | 
 |  |  | import org.apache.commons.lang3.StringUtils; | 
 |  |  | import org.apache.shiro.SecurityUtils; | 
 |  |  | import org.apache.shiro.util.ThreadContext; | 
 |  |  | import org.apache.shiro.web.mgt.DefaultWebSecurityManager; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.data.redis.core.RedisTemplate; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  | import org.springframework.util.CollectionUtils; | 
 |  |  | import org.springframework.web.multipart.MultipartFile; | 
 |  |  |  | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.Date; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Objects; | 
 |  |  | import java.io.InputStream; | 
 |  |  | import java.util.*; | 
 |  |  | import java.util.concurrent.Callable; | 
 |  |  | import java.util.concurrent.ExecutorService; | 
 |  |  | import java.util.concurrent.Executors; | 
 |  |  |  | 
 |  |  | import static com.aliyun.api.internal.util.AliyunWebUtils.doGet; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 员工信息表Service实现 | 
 |  |  | 
 |  |  | @Service | 
 |  |  | public class UsersServiceImpl implements UsersService { | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     ExecutorService executor = Executors.newFixedThreadPool(1); | 
 |  |  |     @Autowired | 
 |  |  |     private RedisTemplate<String, Object> redisTemplate; | 
 |  |  |     @Autowired | 
 |  |  |     private UsersMapper usersMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private ShopMapper shopMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private SmsEmailMapper smsEmailMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private SystemDictDataBiz systemDictDataBiz; | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public Users findById(Long id) { | 
 |  |  |         return usersMapper.selectById(id); | 
 |  |  |         MPJLambdaWrapper<Users> queryWrapper = new MPJLambdaWrapper<>(); | 
 |  |  |         queryWrapper.leftJoin(Shop.class,Shop::getId,Users::getDepartmentId) | 
 |  |  |                 .selectAs(Shop::getName,Users::getShopName) | 
 |  |  |                 .selectAs(Shop::getAddress,Users::getShopAddress) | 
 |  |  |                 .selectAs(Shop::getType,Users::getShopType) | 
 |  |  |                 .selectAs(Shop::getSecondType,Users::getShopSecType) | 
 |  |  |                 .selectAll(Users.class) | 
 |  |  |                 .eq(Users::getId,id); | 
 |  |  |         return usersMapper.selectJoinOne(Users.class,queryWrapper); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  | 
 |  |  |                 .selectAs(Shop::getSecondType,Users::getShopSecType) | 
 |  |  |                 .selectAll(Users.class); | 
 |  |  |         Utils.MP.blankToNull(pageWrap.getModel()); | 
 |  |  |         if (StringUtils.isNotBlank(pageWrap.getModel().getPhone())) { | 
 |  |  |             queryWrapper.apply(" t.id in ( select c.USER_ID from customer_user c where c.phone = '"+pageWrap.getModel().getPhone()+"'  ) "); | 
 |  |  |         } | 
 |  |  |         if (pageWrap.getModel().getId() != null) { | 
 |  |  |             queryWrapper.eq(Users::getId, pageWrap.getModel().getId()); | 
 |  |  |         } | 
 |  |  | 
 |  |  |                         f.setQrcodeImgFull(path + f.getQrcodeImg()); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |         return pageData; | 
 |  |  |     } | 
 |  |  | 
 |  |  |         QueryWrapper<Users> wrapper = new QueryWrapper<>(users); | 
 |  |  |         return usersMapper.selectCount(wrapper); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  | 
 |  |  |         if(!StringUtils.equals(users.getStatus(),Constants.ZERO+"")){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前账户已停用,请联系管理员"); | 
 |  |  |         } | 
 |  |  |         //TODO 验证短信信息 | 
 |  |  |         if(!StringUtils.equals(code,"123456")){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"验证码错误"); | 
 |  |  |         //验证短信 | 
 |  |  |         SmsEmail model = smsEmailMapper.selectOne(new QueryWrapper<SmsEmail>().lambda() | 
 |  |  |                 .eq(SmsEmail::getType, Constants.ZERO) | 
 |  |  |                 .eq(SmsEmail::getPhone, phone) | 
 |  |  |                 .eq(SmsEmail::getRemark, code) | 
 |  |  |                 .eq(SmsEmail::getIsdeleted, Constants.ZERO) | 
 |  |  |         ); | 
 |  |  |         if(model == null){ | 
 |  |  |             throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,验证码不正确,请重新发送再试!"); | 
 |  |  |         } | 
 |  |  |         if(!Constants.equalsInteger(model.getStatus(),Constants.ZERO)){ | 
 |  |  |             throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,验证码已失效,请重新发送再试!"); | 
 |  |  |         } | 
 |  |  |         model.setStatus(Constants.ONE); | 
 |  |  |         model.setEditDate(new Date()); | 
 |  |  |         if(model.getCreateDate() !=null && | 
 |  |  |                 System.currentTimeMillis() - model.getCreateDate().getTime() > 3*60*1000){ | 
 |  |  |             smsEmailMapper.updateById(model); | 
 |  |  |             throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,验证码已失效,请重新发送再试~"); | 
 |  |  |         } | 
 |  |  |         smsEmailMapper.updateById(model); | 
 |  |  |         //创建token | 
 |  |  |         JwtPayLoad payLoad = new JwtPayLoad(users.getId(),Constants.ONE); | 
 |  |  |         String token = JwtTokenUtil.generateToken(payLoad); | 
 |  |  | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional(rollbackFor = {BusinessException.class,Exception.class}) | 
 |  |  |     public String importBatch(MultipartFile file){ | 
 |  |  |         Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_USERS); | 
 |  |  |         if(importing!=null && importing){ | 
 |  |  |             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,已存在导入或者上下级重置任务正在执行中,请稍后再试!"); | 
 |  |  |         } | 
 |  |  |         redisTemplate.opsForValue().set(Constants.RedisKeys.IMPORTING_USERS,true); | 
 |  |  |         try { | 
 |  |  |             LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
 |  |  |             ExcelImporter ie = null; | 
 |  |  |             List<UserImport> dataList =null; | 
 |  |  |             try { | 
 |  |  |                 ie = new ExcelImporter(file,0,0); | 
 |  |  |                 dataList = ie.getDataList(UserImport.class,null); | 
 |  |  |             }  catch (Exception e) { | 
 |  |  |                 e.printStackTrace(); | 
 |  |  |             } | 
 |  |  |             if(dataList == null || dataList.size() ==0){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,录入数据为空!"); | 
 |  |  |             } | 
 |  |  |             Date date =new Date(); | 
 |  |  |             List<UserImport> finalDataList = dataList; | 
 |  |  |             Callable<String> task = () -> { | 
 |  |  |                 dealUserDataBiz(finalDataList,date,loginUserInfo); | 
 |  |  |                 return "异步任务完成"; | 
 |  |  |             }; | 
 |  |  |             executor.submit(task); | 
 |  |  |  | 
 |  |  |             return "导入成功"; | 
 |  |  |         }catch (BusinessException e){ | 
 |  |  |             throw e; | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"信息导入失败,请稍后重试"); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void dealUserDataBiz(List<UserImport> dataList, Date date, LoginUserInfo loginUserInfo) { | 
 |  |  |         try { | 
 |  |  |             List<Users> list =  usersMapper.selectJoinList(Users.class,new MPJLambdaWrapper<Users>() | 
 |  |  |                     .selectAll(Users.class) | 
 |  |  |             ); | 
 |  |  |             List<Users> insertList = new ArrayList<>(); | 
 |  |  |             List<Users> updateList = new ArrayList<>(); | 
 |  |  |             for(int i=0;i<dataList.size();i++){ | 
 |  |  |                 UserImport model = dataList.get(i); | 
 |  |  |                 if(StringUtils.isBlank(model.getName()) | 
 |  |  |                         &&StringUtils.isBlank(model.getCode()) ){ | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 Users user = checkModelParam(model,insertList,updateList,i,loginUserInfo,list,date); | 
 |  |  |             } | 
 |  |  |             if(insertList .size() >0){ | 
 |  |  |                 int temp = 0; | 
 |  |  |                 while(temp < insertList.size()){ | 
 |  |  |                     int index; | 
 |  |  |                     if(temp + 500 <= insertList.size()){ | 
 |  |  |                         index = temp+500; | 
 |  |  |                     }else{ | 
 |  |  |                         index = insertList.size(); | 
 |  |  |                     } | 
 |  |  |                     usersMapper.insert(insertList.subList(temp,index)); | 
 |  |  |                     temp = index; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             if(updateList .size() >0){ | 
 |  |  |                 for(Users s : updateList){ | 
 |  |  |                     //遍历更新数据 | 
 |  |  |                     usersMapper.updateById(s); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }catch (BusinessException e){ | 
 |  |  |             throw e; | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"信息导入失败,请稍后重试"); | 
 |  |  |         }finally { | 
 |  |  |             executor.shutdown(); | 
 |  |  |             redisTemplate.delete(Constants.RedisKeys.IMPORTING_USERS); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |     private Users getUserByUserID(String userId, List<Users> list) { | 
 |  |  |         if(list ==null || list.size() ==0){ | 
 |  |  |             return null; | 
 |  |  |         } | 
 |  |  |         for(Users s :list){ | 
 |  |  |             if(StringUtils.equals(s.getIamId(),userId)){ | 
 |  |  |                 return s; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return null; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private Users checkModelParam(UserImport model, List<Users> insertList, List<Users> updateList, int index, LoginUserInfo loginUserInfo, List<Users> list, Date date) { | 
 |  |  |  | 
 |  |  |             if(StringUtils.isBlank(model.getUserId())){ | 
 |  |  |                 throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行【编码】信息不完整,请检查表格内容!"); | 
 |  |  |             } | 
 |  |  |             if(StringUtils.isBlank(model.getName())){ | 
 |  |  |                 throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行【姓名】信息不完整,请检查表格内容!"); | 
 |  |  |             } | 
 |  |  |             if(StringUtils.isBlank(model.getAccountNo())){ | 
 |  |  |                 throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行【登录账号】信息不完整,请检查表格内容!"); | 
 |  |  |             } | 
 |  |  |             if(StringUtils.isBlank(model.getPhone())){ | 
 |  |  |                 throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行【手机号】信息不完整,请检查表格内容!"); | 
 |  |  |             } | 
 |  |  |             Users users = getUserByUserID(model.getUserId(),list); | 
 |  |  |             if(users == null){ | 
 |  |  |                 users = new Users(); | 
 |  |  |                 users.setCreator(loginUserInfo.getId()); | 
 |  |  |                 users.setCreateDate(date); | 
 |  |  |                 initUsersInfo(users,model,date,loginUserInfo); | 
 |  |  |                 insertList.add(users); | 
 |  |  |             }else { | 
 |  |  |                 initUsersInfo(users,model,date,loginUserInfo); | 
 |  |  |                 updateList.add(users); | 
 |  |  |             } | 
 |  |  |             return  users; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     private void initUsersInfo(Users users, UserImport model,Date date,LoginUserInfo loginUserInfo ){ | 
 |  |  |         users.setEditor(loginUserInfo.getId()); | 
 |  |  |         users.setEditDate(date); | 
 |  |  |         users.setName(model.getName()); | 
 |  |  |         users.setIamUsername(model.getAccountNo()); | 
 |  |  |         users.setPhone(model.getPhone()); | 
 |  |  |         users.setStatus(model.getStatus()); | 
 |  |  |         users.setEmail(model.getEmail()); | 
 |  |  |         users.setIamId(model.getUserId()); | 
 |  |  |         users.setCode(model.getCode()); | 
 |  |  |         users.setSex(model.getSex()); | 
 |  |  |         users.setStatus(model.getStatus()); | 
 |  |  |         users.setIsdeleted(Constants.ZERO); | 
 |  |  |         users.setRoleIds(""); | 
 |  |  |         users.setRoleNames(""); | 
 |  |  |         users.setRoleCodes(""); | 
 |  |  |         users.setUserTypes(""); | 
 |  |  |         users.setIamOrgId(""); | 
 |  |  |         getDepartidByParam(users,model.getOrgIds()); | 
 |  |  |         setRolesInfo(users,model); | 
 |  |  |         getUserTypesByParam(users,model.getTypeCodes()); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private String getUserTypesByParam(Users users,String typeCodes) { | 
 |  |  |         if( typeCodes !=null){ | 
 |  |  |             String[] codes =typeCodes.split(","); | 
 |  |  |             for(String t : codes){ | 
 |  |  |                 if(StringUtils.isBlank(users.getUserTypes())){ | 
 |  |  |                     users.setUserTypes(""); | 
 |  |  |                 } | 
 |  |  |                 users.setUserTypes(users.getUserTypes()+"["+t+"];"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return  users.getUserTypes(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void setRolesInfo(Users users, UserImport model) { | 
 |  |  |         if( model.getRoleCodes() !=null){ | 
 |  |  |             String[] codes = model.getRoleCodes().split(","); | 
 |  |  |             for(String t : codes){ | 
 |  |  |                 if(StringUtils.isBlank(users.getRoleCodes())){ | 
 |  |  |                     users.setRoleCodes(""); | 
 |  |  |                 } | 
 |  |  |                 users.setRoleCodes(users.getRoleCodes()+"["+t+"];"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if( model.getRoleIds() !=null){ | 
 |  |  |             String[] codes = model.getRoleIds().split(","); | 
 |  |  |             for(String t : codes){ | 
 |  |  |                 if(StringUtils.isBlank(users.getRoleIds())){ | 
 |  |  |                     users.setRoleIds(""); | 
 |  |  |                 } | 
 |  |  |                 users.setRoleIds(users.getRoleIds()+"["+t+"];"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if( model.getRoleNames() !=null){ | 
 |  |  |             String[] codes = model.getRoleNames().split(","); | 
 |  |  |             for(String t : codes){ | 
 |  |  |                 if(StringUtils.isBlank(users.getRoleNames())){ | 
 |  |  |                     users.setRoleNames(""); | 
 |  |  |                 } | 
 |  |  |                 users.setRoleNames(users.getRoleNames()+"["+t+"];"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private Shop getDepartidByParam(Users users , String orgIds) { | 
 |  |  |         if( orgIds ==null){ | 
 |  |  |           return null; | 
 |  |  |         } | 
 |  |  |         String[] orgArray = orgIds.split(","); | 
 |  |  |         if( orgArray !=null && orgArray.length>0){ | 
 |  |  |             for(String t : orgArray){ | 
 |  |  |                 Shop shop = shopMapper.selectOne(new QueryWrapper<Shop>().lambda() | 
 |  |  |                         .eq(Shop::getOrgId,t) | 
 |  |  |                         .last("limit 1")); | 
 |  |  |                 if(shop!=null) { | 
 |  |  |                     users.setIamOrgId(t); | 
 |  |  |                     users.setDepartmentId(shop.getId()); | 
 |  |  |                     return  shop; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         users.setIamOrgId(orgIds+"--尚未同步到组织"); | 
 |  |  |  | 
 |  |  |         return null; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public     String getUserCard(Users users){ | 
 |  |  |         String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode(); | 
 |  |  |         String folder = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.USERS_FILE).getCode(); | 
 |  |  |         if(StringUtils.isNotBlank(users.getCardImg()) && !StringUtils.equals(users.getCardImg(),"-")){ | 
 |  |  |             return  path + folder+users.getCardImg(); | 
 |  |  |         } | 
 |  |  |         String defualtHeader = systemDictDataBiz.queryByCode(Constants.WEIXIN_DEFAULT_IMGS, Constants.USER_CARD_HEADER_IMG).getCode(); | 
 |  |  |         String defualtPhone = systemDictDataBiz.queryByCode(Constants.WEIXIN_DEFAULT_IMGS, Constants.USER_CARD_PHONE_IMG).getCode(); | 
 |  |  |         String defualtAddr = systemDictDataBiz.queryByCode(Constants.WEIXIN_DEFAULT_IMGS, Constants.USER_CARD_ADDR_IMG).getCode(); | 
 |  |  |         String defualtShop = systemDictDataBiz.queryByCode(Constants.WEIXIN_DEFAULT_IMGS, Constants.USER_CARD_SHOP_IMG).getCode(); | 
 |  |  |         String defualtLogo = systemDictDataBiz.queryByCode(Constants.WEIXIN_DEFAULT_IMGS, Constants.USER_CARD_LOGO_IMG).getCode(); | 
 |  |  |         String imgurl =StringUtils.isNotBlank(users.getImgurl())?path+folder+users.getImgurl():defualtHeader; | 
 |  |  |         String qrcode =StringUtils.isNotBlank(users.getQrcodeImg())?path+folder+users.getQrcodeImg():null; | 
 |  |  |         InputStream inputStream = GeneratePicUtil.generateUserCardImg( | 
 |  |  |                 imgurl | 
 |  |  |                 ,qrcode | 
 |  |  |                 ,StringUtils.defaultString(users.getName(),"-") | 
 |  |  |                 ,"导购" | 
 |  |  |                 ,StringUtils.defaultString(users.getPhone(),"-") | 
 |  |  |                 ,StringUtils.defaultString(users.getShopAddress(),"-") | 
 |  |  |                 , StringUtils.defaultString(users.getShopName(),"-") | 
 |  |  |                 ,defualtPhone | 
 |  |  |                 ,defualtAddr | 
 |  |  |                 ,defualtShop | 
 |  |  |                 ,defualtLogo); | 
 |  |  |         TyyZosUtil obs = new TyyZosUtil( systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.ENDPOINT).getCode(), | 
 |  |  |                 systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.ACCESS_ID).getCode(), | 
 |  |  |                 systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.ACCESS_KEY).getCode()); | 
 |  |  |         String key = DateUtil.getNowShortDate()+"/"+UUID.randomUUID().toString() + ".jpg"; | 
 |  |  |         String fileName =folder+ key; | 
 |  |  |         if (obs.uploadInputstreamObject(inputStream,systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.BUCKETNAME).getCode(), fileName)) { | 
 |  |  |             Users update = new Users(); | 
 |  |  |             update.setId(users.getId()); | 
 |  |  |             update.setCardImg(key); | 
 |  |  |             usersMapper.updateById(update); | 
 |  |  |             return  path+fileName; | 
 |  |  |         } | 
 |  |  |         return null; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public Users usersDetail(Long userId){ | 
 |  |  |         Users users = usersMapper.selectById(userId); | 
 |  |  |         if(Objects.isNull(users)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.DATA_EMPTY); | 
 |  |  |         } | 
 |  |  |         String prefix = StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode()) + | 
 |  |  |                 StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.USERS_FILE).getCode()); | 
 |  |  |         if(StringUtils.isNotBlank(users.getImgurl())){ | 
 |  |  |             users.setImgurlFull(prefix + users.getImgurl()); | 
 |  |  |         } | 
 |  |  |         if(StringUtils.isNotBlank(users.getQrcodeImg())){ | 
 |  |  |             users.setQrcodeImgFull(prefix + users.getQrcodeImg()); | 
 |  |  |         } | 
 |  |  |         if(StringUtils.isNotBlank(users.getCompanyQrcodeImg())){ | 
 |  |  |             users.setCompanyQrcodeImgFull(prefix + users.getCompanyQrcodeImg()); | 
 |  |  |         } | 
 |  |  |         if(StringUtils.isBlank(users.getSlogans())){ | 
 |  |  |             users.setSlogans(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.ZBOM_CUSTOMIZED,Constants.USER_LABEL).getCode())); | 
 |  |  |         } | 
 |  |  |         if(Objects.nonNull(users.getDepartmentId())){ | 
 |  |  |             Shop shop = shopMapper.selectById(users.getDepartmentId()); | 
 |  |  |             if(Objects.nonNull(shop)){ | 
 |  |  |                 users.setShopName(shop.getName()); | 
 |  |  |                 users.setShopCity(shop.getProvinceName()+shop.getCityName()+shop.getAreaName()); | 
 |  |  |                 if(StringUtils.isNotBlank(shop.getAddress())){ | 
 |  |  |                     users.setShopAddress(shop.getAddress()); | 
 |  |  |                 }else{ | 
 |  |  |                     users.setShopAddress(shop.getProvinceName()+shop.getCityName()+shop.getAreaName()+shop.getTown()+shop.getRegAddr()); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return users; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void editUserInfo(EditUsersRequest editUsersRequest){ | 
 |  |  |         if(Objects.isNull(editUsersRequest)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
 |  |  |         } | 
 |  |  |         Users users = usersMapper.selectById(editUsersRequest.getUserId()); | 
 |  |  |         if(Objects.isNull(users)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.DATA_EMPTY); | 
 |  |  |         } | 
 |  |  |         //TODO 调起 中台接口 | 
 |  |  |         usersMapper.update(new UpdateWrapper<Users>() | 
 |  |  |                 .lambda() | 
 |  |  |                 .set(Users::getCardImg,"-") //重置名片为 - | 
 |  |  |                 .set(StringUtils.isNotBlank(editUsersRequest.getImgurl()),Users::getImgurl,editUsersRequest.getImgurl()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editUsersRequest.getName()),Users::getName,editUsersRequest.getName()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editUsersRequest.getPhone()),Users::getPhone,editUsersRequest.getPhone()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editUsersRequest.getCompanyQrcodeImg()),Users::getCompanyQrcodeImg,editUsersRequest.getCompanyQrcodeImg()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editUsersRequest.getQrcodeImg()),Users::getQrcodeImg,editUsersRequest.getQrcodeImg()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editUsersRequest.getSlogans()),Users::getSlogans,editUsersRequest.getSlogans()) | 
 |  |  |                 .set(Objects.nonNull(editUsersRequest.getCostomerNum()),Users::getCostomerNum,editUsersRequest.getCostomerNum()) | 
 |  |  |                 .set(Objects.nonNull(editUsersRequest.getJobDate()),Users::getJobDate,editUsersRequest.getJobDate()) | 
 |  |  |                 .set(StringUtils.isNotBlank(editUsersRequest.getPhone()),Users::getPhone,editUsersRequest.getPhone()) | 
 |  |  |                 .eq(Users::getId,editUsersRequest.getUserId())); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void updWxMiniToken(){ | 
 |  |  |         DefaultWebSecurityManager manager = new DefaultWebSecurityManager(); | 
 |  |  |         ThreadContext.bind(manager); | 
 |  |  |         String appId = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_APPID_PERSONNEL).getCode(); | 
 |  |  |         String appSecret = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_SECRET_PERSONNEL).getCode(); | 
 |  |  |         //生成微信token | 
 |  |  |         String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+appSecret; | 
 |  |  |         String response = Constants.doGet(url,null); | 
 |  |  |         JSONObject json = JSONObject.parseObject(response); | 
 |  |  |         SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_TOKEN_PERSONNEL); | 
 |  |  |         systemDictData.setCode(json.getString("access_token")); | 
 |  |  |         systemDictData.setUpdateTime(new Date()); | 
 |  |  |         systemDictDataBiz.updateByIdNew(systemDictData); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } | 
 |  |  |  |