| | |
| | | import com.yeshi.fanli.entity.bus.invite.SpreadImg;
|
| | | import com.yeshi.fanli.entity.bus.invite.SpreadUserImg;
|
| | | import com.yeshi.fanli.entity.bus.user.UserInfo;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.service.inter.config.SpreadImgService;
|
| | | import com.yeshi.fanli.service.inter.user.QrCodeService;
|
| | | import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
|
| | |
| | |
|
| | | @Resource
|
| | | private UserInfoExtraService userInfoExtraService;
|
| | | |
| | | @Resource
|
| | | private SpreadImgService spreadImgService;
|
| | |
|
| | | @Override
|
| | | public void addUserInviteImg(Long uid, String imgUrl) {
|
| | |
| | | return imgList;
|
| | | }
|
| | |
|
| | | |
| | | @Override
|
| | | public List<String> getUserSpreadImgToPage(Long uid, int page, int count, HttpServletRequest request) {
|
| | | // 查询系统的推广图
|
| | | List<SpreadImg> spreadImgList = spreadImgService.listAll();
|
| | | //用户的已生成推广图
|
| | | List<SpreadUserImg> spreadUserImgList = spreadUserImgMapper.listByUid(uid);
|
| | |
|
| | | for (SpreadUserImg img : spreadUserImgList) {
|
| | | img.setMd5(getSpreadUserImgMD5(img.getUrl()));
|
| | | }
|
| | |
|
| | | for (SpreadImg img : spreadImgList) {
|
| | | img.setMd5(getSpreadImgMD5(img.getUrl()));
|
| | | }
|
| | |
|
| | | Comparator<SpreadImg> cmSpreadImg = new Comparator<SpreadImg>() {
|
| | | @Override
|
| | | public int compare(SpreadImg o1, SpreadImg o2) {
|
| | | return o1.getMd5().compareTo(o2.getMd5());
|
| | | }
|
| | | };
|
| | |
|
| | | Comparator<SpreadUserImg> cmUserSpreadImg = new Comparator<SpreadUserImg>() {
|
| | | @Override
|
| | | public int compare(SpreadUserImg o1, SpreadUserImg o2) {
|
| | | return o1.getMd5().compareTo(o2.getMd5());
|
| | | }
|
| | | };
|
| | | Collections.sort(spreadUserImgList, cmUserSpreadImg);
|
| | | Collections.sort(spreadImgList, cmSpreadImg);
|
| | |
|
| | | boolean equal = true;
|
| | | if (spreadUserImgList.size() != spreadImgList.size()) {
|
| | | equal = false;
|
| | | } else {
|
| | | for (int i = 0; i < spreadUserImgList.size(); i++) {
|
| | | if (!spreadUserImgList.get(i).getMd5().equalsIgnoreCase(spreadImgList.get(i).getMd5())) {
|
| | | equal = false;
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | // 分页处理
|
| | | int start = 0;
|
| | | if (page > 1) |
| | | start = 3;
|
| | | |
| | | List<String> imgList = new ArrayList<>();
|
| | | if (equal) {
|
| | | for (; start < spreadUserImgList.size() && start < count; start++) {
|
| | | imgList.add(spreadUserImgList.get(start).getUrl());
|
| | | }
|
| | | return imgList;
|
| | | }
|
| | | |
| | | String path = null;
|
| | | if (page == 1) {
|
| | | // 删除多余历史数据
|
| | | for (int j = 0; j < spreadUserImgList.size(); j++) {
|
| | | boolean needRemove = true;
|
| | | SpreadUserImg userImg = spreadUserImgList.get(j);
|
| | | String imgMD5User = getSpreadUserImgMD5(userImg.getUrl());
|
| | | |
| | | for (int i = 0; i < spreadImgList.size(); i++) {
|
| | | String imgMD5 = getSpreadImgMD5(spreadImgList.get(i).getUrl());
|
| | | if (imgMD5.equalsIgnoreCase(imgMD5User)) {
|
| | | needRemove = false;
|
| | | break;
|
| | | }
|
| | | }
|
| | | |
| | | if (needRemove) {
|
| | | spreadUserImgMapper.deleteByPrimaryKey(userImg.getId());
|
| | | spreadUserImgList.remove(j);
|
| | | j--;
|
| | | }
|
| | | }
|
| | | |
| | | // 缓存路径
|
| | | String rootPath = request.getSession().getServletContext().getRealPath("/").replace("\\", "/");
|
| | | String projectName = request.getContextPath(); |
| | | path = rootPath.replace(projectName, "/temp");
|
| | | File f = new File(path);
|
| | | if (!f.exists())
|
| | | f.mkdirs();
|
| | | }
|
| | | |
| | | // 用户头像
|
| | | UserInfo user = userInfoService.selectByPKey(uid);
|
| | | String portrait = user.getPortrait();
|
| | | if (StringUtil.isNullOrEmpty(portrait)) {
|
| | | portrait = Constant.systemCommonConfig.getDefaultPortrait();
|
| | | }
|
| | | |
| | | // 邀请码
|
| | | String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
|
| | | |
| | | |
| | | for (; start < spreadImgList.size() && start < count; start++) {
|
| | | String url = null;
|
| | | SpreadImg spreadImg = spreadImgList.get(start);
|
| | | String imgMD5 = getSpreadImgMD5(spreadImg.getUrl());
|
| | | |
| | | for (int j = 0; j < spreadUserImgList.size(); j++) {
|
| | | String imgMD5User = getSpreadUserImgMD5(spreadUserImgList.get(j).getUrl());
|
| | | if (imgMD5.equalsIgnoreCase(imgMD5User)) {
|
| | | url = spreadUserImgList.get(j).getUrl();
|
| | | break;
|
| | | }
|
| | | }
|
| | | |
| | | if (!StringUtil.isNullOrEmpty(url)) {
|
| | | imgList.add(url);
|
| | | } else {
|
| | | url = getInviteImgUrl(uid, portrait, inviteCode, imgMD5, spreadImg.getUrl(), path);
|
| | | if (!StringUtil.isNullOrEmpty(url)) {
|
| | | addUserInviteImg(uid, url);
|
| | | imgList.add(url);
|
| | | }
|
| | | }
|
| | | }
|
| | | |
| | | return imgList;
|
| | | }
|
| | | |
| | | /**
|
| | | * 邀请图画图
|
| | | * @param uid
|
| | | * @param portrait
|
| | | * @param inviteCode
|
| | | * @param urlMd5
|
| | | * @param url
|
| | | * @param path
|
| | | * @return
|
| | | */
|
| | | private String getInviteImgUrl (Long uid, String portrait, String inviteCode, String urlMd5, String url, String path) {
|
| | | try {
|
| | | InputStream inputStream = null;
|
| | | String cachePath = path + urlMd5;
|
| | | File file = new File(cachePath);
|
| | | if (file.exists()) {
|
| | | inputStream = new FileInputStream(file);
|
| | | } else {
|
| | | // 网络下载
|
| | | InputStream input = HttpUtil.getAsInputStream(url);
|
| | | // 缓存本地
|
| | | FileUtil.saveAsFile(input, cachePath);
|
| | | // 获取流
|
| | | inputStream = new FileInputStream(file);
|
| | | }
|
| | | |
| | | return qrCodeService.drawInviteQrCodeNew(inputStream, urlMd5, uid, portrait, null, null, null, inviteCode);
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | return null;
|
| | | }
|
| | | |
| | | |
| | | |
| | |
|
| | | @Override
|
| | | public String getUserSpreadImg(Long uid, String bgImg) {
|
| | | // 查询是否存在
|
| | |
| | | String rootPath=Thread.currentThread().getContextClassLoader().getResource("").getPath();
|
| | | rootPath = rootPath.substring(1,rootPath.indexOf("WEB-INF"));
|
| | | return rootPath;
|
| | | }
|
| | | |
| | | } |
| | | }
|