jiangping
2024-07-17 d2a5cf32ffd598eb10b6699cc93f665c3c1cbbf8
server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java
@@ -52,6 +52,7 @@
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import java.awt.image.BufferedImage;
import java.io.InputStream;
import java.util.*;
import java.util.concurrent.Callable;
@@ -623,22 +624,78 @@
    @Override
    public  String getContentShareImg(Users loginUserInfo, ContentShareImgDto param){
    public  String getContentShareImg(Users users, ContentShareImgDto param){
        if(StringUtils.isBlank(param.getImgurl())){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        String url = null;
        String shareFolder = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.SHARES_FILE).getCode();
        String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode();
        if(param.getType() == 1){
            //多图带二维码下载
            String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode();
            String folder = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.USERS_FILE).getCode();
            return dealShareImgWithUser(param,users,shareFolder,path);
        }else{
            //内容分享海报图片
          return dealShareImgNoUser(param,users,shareFolder,path);
        }
    }
    private String dealShareImgWithUser(ContentShareImgDto param, Users users, String shareFolder, String path) {
        BufferedImage img1 =GeneratePicUtil.getImgIO(param.getImgurl());
        if(img1 ==null){
            return param.getImgurl();
        }
      /*  if(img1.getWidth() <200 && img1.getHeight()<100){
            return  param.getImgurl();
        }
*/
        String defualtHeader = systemDictDataBiz.queryByCode(Constants.WEIXIN_DEFAULT_IMGS, Constants.USER_CARD_HEADER_IMG).getCode();
        String imgurl =StringUtils.isNotBlank(users.getImgurl())?path+(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.USERS_FILE).getCode())+users.getImgurl():defualtHeader;
        String url =null;
        //内容分享海报图片
        InputStream mpCode =  Constants.generateWxMiniImgStream(systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG, Constants.WX_TOKEN_CUSTOMER).getCode(),
                "userId="+users.getId()+"&articleId="+param.getArticleId(),
                param.getPageUrl());//小程序
        InputStream inputStream = GeneratePicUtil.generateShareWithUserImg(
                img1
                ,mpCode
                ,imgurl
        ,StringUtils.defaultString(users.getName(),"-"));
        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 =shareFolder+ key;
        if (obs.uploadInputstreamObject(inputStream,systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.BUCKETNAME).getCode(), fileName)) {
            url =  path+fileName;
        }
        return  url;
    }
    private String dealShareImgNoUser(ContentShareImgDto param, Users users, String shareFolder, String path) {
       String url =null;
        //内容分享海报图片
        InputStream mpCode =  Constants.generateWxMiniImgStream(systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG, Constants.WX_TOKEN_CUSTOMER).getCode(),
                "userId="+users.getId()+"&articleId="+param.getArticleId(),
                param.getPageUrl());//小程序
        String title = systemDictDataBiz.queryByCode(Constants.WEIXIN_DEFAULT_IMGS, Constants.SHARE_HAIBAO_HEADER_TITLE).getCode();
        InputStream inputStream = GeneratePicUtil.generateShareImg(
                param.getImgurl()
                ,mpCode
                ,title);
        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 =shareFolder+ key;
        if (obs.uploadInputstreamObject(inputStream,systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.BUCKETNAME).getCode(), fileName)) {
            url =  path+fileName;
        }
        return  url;
    }
    @Override
    public     String getUserCard(Users users){
        String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode();
@@ -681,11 +738,32 @@
    }
    @Override
    public Users usersDetail(Long userId){
        Users users = usersMapper.selectById(userId);
    public Users usersDetailByIamId(String iamId){
        Users users = usersMapper.selectOne(new QueryWrapper<Users>().lambda().eq(Users::getIamId,iamId).last("limit 1"));
        if(Objects.isNull(users)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(Constants.equalsInteger(users.getIsdeleted(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"用户已禁用");
        }
        getUsersDetail(users);
        return users;
    }
    @Override
    public Users usersDetailById(Long id){
        Users users = usersMapper.selectById(id);
        if(Objects.isNull(users)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(Constants.equalsInteger(users.getIsdeleted(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"用户已禁用");
        }
        getUsersDetail(users);
        return users;
    }
    public void getUsersDetail(Users users){
        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())){
@@ -712,7 +790,6 @@
                }
            }
        }
        return users;
    }
@@ -744,21 +821,7 @@
    @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);
    }
}