|  |  | 
 |  |  |  | 
 |  |  | 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.dao.business.SmsEmailMapper; | 
 |  |  | import com.doumee.dao.business.UsersMapper; | 
 |  |  | 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 java.util.concurrent.Callable; | 
 |  |  | import java.util.concurrent.ExecutorService; | 
 |  |  | import java.util.concurrent.Executors; | 
 |  |  |  | 
 |  |  | import static com.aliyun.api.internal.util.AliyunWebUtils.doGet; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 员工信息表Service实现 | 
 |  |  | 
 |  |  |  | 
 |  |  |     @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; | 
 |  |  |     } | 
 |  |  | 
 |  |  |     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 imgurl =StringUtils.isNotBlank(users.getImgurl())?path+users.getImgurl():defualtHeader; | 
 |  |  |         String qrcode =StringUtils.isNotBlank(users.getQrcodeImg())?path+users.getQrcodeImg():null; | 
 |  |  |         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.getPhone(),"-") | 
 |  |  |                 ,StringUtils.defaultString(users.getShopAddress(),"-") | 
 |  |  |                 ,"ZBOM志邦家居|"+ StringUtils.defaultString(users.getShopName(),"-") | 
 |  |  |                 , StringUtils.defaultString(users.getShopName(),"-") | 
 |  |  |                 ,defualtPhone | 
 |  |  |                 ,defualtAddr); | 
 |  |  |                 ,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 fileName =folder+ DateUtil.getNowShortDate()+"/"+UUID.randomUUID().toString() + ".jpg"; | 
 |  |  |         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; | 
 |  |  | 
 |  |  |         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{ | 
 |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @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); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } | 
 |  |  |  |