admin
2019-05-24 d126b83f5d65f612ec93475b976fc5b5e2d6132a
Merge remote-tracking branch 'origin/master'

Conflicts:
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/ShareController.java
18个文件已修改
1072 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/TestController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/ShareController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/dynamic/GoodsPicture.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/DynamicInfoJob.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/activity/ActivityServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java 517 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/QrCodeServiceImpl.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/SpreadUserImgServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/dynamic/DynamicInfoService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/QrCodeService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/SpreadUserImgService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/Constant.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/ImageUtil.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/resource/druid.properties 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/resource/mongo.properties 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/resource/redis.properties 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/test/java/org/fanli/MyBatisProduce.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/test/java/org/fanli/TaoKeTest.java 201 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/TestController.java
@@ -243,10 +243,6 @@
        }
    }
    
    @RequestMapping(value = "insetDynamicInfoInvite")
    public void insetDynamicInfo(String content, String url,PrintWriter out) {
        dynamicInfoService.insertInviteMaterial(content, url, null, null);
    }
    
    @RequestMapping(value = "insertShop")
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/ShareController.java
@@ -30,6 +30,7 @@
import com.yeshi.fanli.entity.system.BusinessSystem;
import com.yeshi.fanli.entity.system.SystemClientParams;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra;
import com.yeshi.fanli.entity.taobao.TaoBaoLink;
import com.yeshi.fanli.entity.taobao.TaoKeAppInfo;
import com.yeshi.fanli.exception.ShareGoodsException;
@@ -680,6 +681,23 @@
            long cid = dynamicInfo.getClassId();
            if (cid == 1 || cid == 2) { // 1 热销单品 2 推荐好货
                if (cid == 1) {
                    List<GoodsPicture> imgs = dynamicInfo.getImgs();
                    GoodsPicture goodsPicture = imgs.get(0);
                    if (goodsPicture.getGoodState() == 1) {
                        out.print(JsonUtil.loadFalseResult("该商品已下架"));
                        return;
                    } else {
                        TaoBaoGoodsBriefExtra goods = goodsPicture.getGoods();
                        try {
                            TaoKeApiUtil.getSimpleGoodsInfo(goods.getAuctionId());
                        } catch (TaobaoGoodsDownException e) {
                            out.print(JsonUtil.loadFalseResult("该商品已下架"));
                            return;
                        }
                    }
                }
                // 分享文字
                String title = null;
                List<ClientTextStyleVO> listTitle = dynamicInfo.getTitle();
@@ -777,7 +795,10 @@
                } else { // 有图分享
                    List<GoodsPicture> imgs = dynamicInfo.getImgs();
                    String bgUrl = imgs.get(0).getUrlOriginal();
                    GoodsPicture goodsPicture = imgs.get(0);
                    String bgUrl = goodsPicture.getUrlOriginal();
                    if (StringUtil.isNullOrEmpty(bgUrl)) {
                        out.print(JsonUtil.loadFalseResult("图片路径不存在"));
                        return;
@@ -787,8 +808,18 @@
                    UserInfo userInfo = userInfoService.selectByPKey(uid);
                    String portrait = userInfo.getPortrait();
                    // 画邀请图片
                    if (StringUtil.isNullOrEmpty(dynamicInfo.getInviteMaterialId())) {
                        String imgLink = spreadUserImgService.drawInviteQrCodeNew(bgUrl, uid, portrait, inviteCode);
                    Long activityId = dynamicInfo.getActivityId();
                    if (activityId != null) {
                        Integer pX = goodsPicture.getPx();
                        ;
                        Integer pY = goodsPicture.getPy();
                        ;
                        Integer size = goodsPicture.getSize();
                        String imgLink = spreadUserImgService.drawInviteQrCodeNew(bgUrl, uid, portrait, pX, pY, size,
                                inviteCode);
                        data.put("imgLink", imgLink);
                    } else {
                        String title = imgs.get(0).getTitleOriginal();
fanli/src/main/java/com/yeshi/fanli/entity/dynamic/GoodsPicture.java
@@ -28,6 +28,14 @@
    private String urlOriginal ;
    // 分享图片文字
    private String titleOriginal ;
    // 自定义二维码的位置
    private Integer px;
    private Integer py;
    private Integer size;
    // 商品状态: 1真实下架 0
    private int goodState;
    public String getUrl() {
        return url;
@@ -92,4 +100,37 @@
    public void setTitleOriginal(String titleOriginal) {
        this.titleOriginal = titleOriginal;
    }
    public Integer getPx() {
        return px;
    }
    public void setPx(Integer px) {
        this.px = px;
    }
    public Integer getPy() {
        return py;
    }
    public void setPy(Integer py) {
        this.py = py;
    }
    public Integer getSize() {
        return size;
    }
    public void setSize(Integer size) {
        this.size = size;
    }
    public int getGoodState() {
        return goodState;
    }
    public void setGoodState(int goodState) {
        this.goodState = goodState;
    }
}
fanli/src/main/java/com/yeshi/fanli/job/DynamicInfoJob.java
@@ -10,6 +10,7 @@
import org.yeshi.utils.DateUtil;
import com.yeshi.fanli.entity.bus.activity.RecommendActivity;
import com.yeshi.fanli.entity.bus.activity.RecommendActivityInviteInfo;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.activity.ActivityService;
import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService;
@@ -188,20 +189,17 @@
                Integer type = activity.getType();
                if (RecommendActivity.TYPE_SHARE_GOODS == type) {
                    // 商品动态
                    dynamicInfoService.saveActivityRecommend(activity);
                    dynamicInfoService.insertActivityRecommend(activity);
                    
                    activity.setState(1);
                    activityService.updateByPrimaryKeySelective(activity);
                    
                } else if (RecommendActivity.TYPE_INVITE == type) {
                    // 邀请素材
                    String imgUrl = null;
                    List<String> imageList = activityService.getImgByActivityId(activity.getId());
                    if (imageList != null && imageList.size() > 0) {
                        imgUrl = imageList.get(0);
                    }
                    RecommendActivityInviteInfo inviteInfo = activityService.getRecommendActivityInviteInfoByActivityId(activity.getId());
                    activity.setInviteInfo(inviteInfo);
                    
                    dynamicInfoService.insertInviteMaterial(activity.getTitle(), imgUrl, activity.getId(), activity.getActivityUser());
                    dynamicInfoService.insertInviteActivity(activity);
                    
                    activity.setState(1);
                    activityService.updateByPrimaryKeySelective(activity);
fanli/src/main/java/com/yeshi/fanli/service/impl/activity/ActivityServiceImpl.java
@@ -576,13 +576,14 @@
        updateActivity.setTotalGetMoney("预估分享奖金:¥" + taotaoMoney.toString());
        recommendActivityMapper.updateByPrimaryKeySelective(updateActivity);
        
        //  1.5.4 动态信息更新
        RecommendActivity exist = recommendActivityMapper.selectByPrimaryKey(activity.getId());
        if (exist.getState() != null && exist.getState() == 1) {
            try {
                ActivityUser activityUser = activityUserService.selectByPrimaryKey(activityUid);
                exist.setActivityUser(activityUser);
                exist.setGoodsList(listgoods);
                dynamicInfoService.saveActivityRecommend(exist);
                dynamicInfoService.insertActivityRecommend(exist);
            } catch (Exception e) {
                e.printStackTrace();
            }
@@ -645,7 +646,12 @@
        if (exist.getState() != null && exist.getState() == 1) {
            try {
                ActivityUser activityUser = activityUserService.selectByPrimaryKey(activityUid);
                dynamicInfoService.insertInviteMaterial(exist.getTitle(), url, activity.getId(), activityUser);
                activity.setActivityUser(activityUser);
                activity.setInviteInfo(recommendActivityInviteInfo);
                List<String> imageList = new ArrayList<String>();
                imageList.add(url);
                activity.setImageList(imageList);
                dynamicInfoService.insertInviteActivity(activity);
            } catch (Exception e) {
                e.printStackTrace();
            }
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java
@@ -20,6 +20,7 @@
import com.yeshi.fanli.dto.taobao.TaoBaoShopDTO;
import com.yeshi.fanli.entity.bus.activity.ActivityUser;
import com.yeshi.fanli.entity.bus.activity.RecommendActivity;
import com.yeshi.fanli.entity.bus.activity.RecommendActivityInviteInfo;
import com.yeshi.fanli.entity.bus.activity.RecommendActivityTaoBaoGoods;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
import com.yeshi.fanli.entity.dynamic.DynamicInfo;
@@ -586,29 +587,48 @@
        return goodsPicture;
    }
    @Override
    public void updateShareCount(DynamicInfo record) {
        dynamicInfoDao.updateShareCount(record);
    }
    
    
    @Override
    public void insertInviteMaterial(String title, String picUrl, Long activityId, ActivityUser activityUser) {
    public void insertInviteActivity(RecommendActivity activity) throws Exception{
        
        DynamicInfo existInfo = null;
        if (activityId != null) {
            existInfo = dynamicInfoDao.getByActivityId(activityId);
            if (existInfo != null) {
                dynamicInfoDao.deleteById(existInfo.getId());
            }
        String title = activity.getTitle();
        String picUrl = null;
        List<String> imageList = activity.getImageList();
        if (imageList != null && imageList.size() > 0) {
            picUrl = imageList.get(0);
        }
        if (StringUtil.isNullOrEmpty(title) || StringUtil.isNullOrEmpty(picUrl)) {
            return;
        }
        // 判断是否已存在
        String dynamicInfoId = null;
        Long activityId =  activity.getId();
        DynamicInfo dynamicVO = dynamicInfoDao.getByActivityId(activityId);
        if (dynamicVO == null) {
            dynamicVO = new DynamicInfo();
            dynamicVO.setId(UUID.randomUUID().toString().replace("-", ""));
            dynamicVO.setCreateTime(DateUtil.reduceRandomMinute(new Date(), 8));
        } else {
            dynamicInfoId = dynamicVO.getId();
        }
        if (!StringUtil.isNullOrEmpty(title)) {
            title = title.replaceAll("<p>", "");
            title = title.replaceAll("</p>", "");
            title = title.replaceAll("<br>", "\n");
            
            if (!StringUtil.isNullOrEmpty(title)) {
                title = title.replace("<p>", "");
                title = title.replace("</p>", "");
            int index = title.lastIndexOf("\n");
            String newDesc = title.substring(index + 1);
            if(StringUtil.isNullOrEmpty(newDesc)) {
                title = title.substring(0, index);
            }
        }
        
        DynamicInfo dynamicVO = new DynamicInfo();
        dynamicVO.setId(UUID.randomUUID().toString().replace("-", ""));
        dynamicVO.setActivityId(activityId);
        dynamicVO.setClassId(4L);
@@ -616,256 +636,133 @@
        dynamicVO.setShareType(DynamicInfo.SHARE_TYPE_INVITE);
        dynamicVO.setUpdateTime(new Date());
        
        if (existInfo != null) {
            dynamicVO.setCreateTime(existInfo.getCreateTime());
            dynamicVO.setShareCount(existInfo.getShareCount());
        } else {
            dynamicVO.setCreateTime(DateUtil.reduceRandomMinute(new Date(), 8));
        Integer shareCount = activity.getShareCount();
        if (shareCount == null || shareCount <= 0) {
            dynamicVO.setShareCount(1000 + (int) (Math.random() * 8000));
        } else {
            dynamicVO.setShareCount(shareCount);
        }
        
        // 发布用户
        ActivityUser activityUser = activity.getActivityUser();
        if (activityUser == null) {
            dynamicVO.setUser(activityUserService.listRand(1).get(0));
            dynamicVO.setUser(activityUserService.selectByPrimaryKey(2L));
        } else {
            dynamicVO.setUser(activityUser);
        }
        
        
        // 介绍内容
        List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>();
        List<GoodsPicture> listImg = new ArrayList<GoodsPicture>();
        if(StringUtil.isNullOrEmpty(picUrl)) {
            dynamicVO.setImgs(listImg);
            dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ZERO);
            // 介绍内容
            SimpleDateFormat format = new SimpleDateFormat("MM月dd日");
            StringBuffer buffer = new StringBuffer();
            buffer.append("-------------------\n");
            buffer.append("今天 : " + format.format(new Date()));
            buffer.append("     ");
            buffer.append(DateLunarUtil.getWeekd(new Date()) + "\n");
            buffer.append("各位亲爱的你");
            buffer.append("         ");
            buffer.append("早安~\n");
            buffer.append("我的邀请码:【邀请码】\n");
            buffer.append("购物省钱返利券App:【邀请链接】");
        if(!StringUtil.isNullOrEmpty(title)) {
            ClientTextStyleVO row1 = new ClientTextStyleVO();
            row1.setColor("#333333");
            row1.setContent(title + "\n" + buffer.toString());
            row1.setContent(title );
            listtitle.add(row1);
            dynamicVO.setTitle(listtitle);
            dynamicInfoDao.insert(dynamicVO);
        }
        // 图片
        List<GoodsPicture> listImg = new ArrayList<GoodsPicture>();
        if(StringUtil.isNullOrEmpty(picUrl)) {
            dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ZERO);
        } else {
            try {
                dynamicVO.setTitle(listtitle);
                dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ONE);
                // 图片
                String imgLink = qrCodeService.drawInviteQrCodeNew(picUrl , null, null, null);
                GoodsPicture p2 = new GoodsPicture();
                p2.setW(100);
                p2.setH(100);
                p2.setUrl(imgLink);
                p2.setUrlOriginal(picUrl);
                listImg.add(p2);
                dynamicVO.setImgs(listImg);
                dynamicInfoDao.insert(dynamicVO);
            } catch (Exception e) {
                try {
                    LogHelper.errorDetailInfo(e);
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ONE);
            RecommendActivityInviteInfo inviteInfo = activity.getInviteInfo();
            Integer pX = null;
            Integer pY = null;
            Integer size = null;
            if (inviteInfo != null) {
                pX = inviteInfo.getPx();
                pY = inviteInfo.getPy();
                size = inviteInfo.getSize();
            }
            // 图片
            String imgLink = qrCodeService.drawInviteQrCodeNew(picUrl , null, null, pX, pY, size, null);
            GoodsPicture p2 = new GoodsPicture();
            p2.setW(100);
            p2.setH(100);
            p2.setUrl(imgLink);
            p2.setUrlOriginal(picUrl);
            p2.setPx(pX);
            p2.setPy(pY);
            p2.setSize(size);
            listImg.add(p2);
        }
        
    }
    @Override
    public void removeByDate(Date createTime) {
        dynamicInfoDao.removeByDate(createTime);
    }
    /**
     * 更新商品信息
     */
    public void updateGoodInfo(List<DynamicInfo> list) {
        if (list == null || list.size() == 0) {
            return;
        dynamicVO.setImgs(listImg);
        dynamicVO.setTitle(listtitle);
        if (!StringUtil.isNullOrEmpty(dynamicInfoId)) {
            dynamicInfoDao.deleteById(dynamicInfoId);
        }
        
        BigDecimal proportion = hongBaoManageService.getFanLiRate();
        for (DynamicInfo dynamicInfo: list) {
            // 邀请数据不做更新
            long classId = dynamicInfo.getClassId();
            if (classId == 4) {
                break;
            }
            // 更新商品信息
            List<GoodsPicture> imgs = dynamicInfo.getImgs();
            if (imgs == null || imgs.size() == 0) {
                continue;
            }
            // 是否一个小时之内已更新
            Date updateTime = dynamicInfo.getUpdateTime();
            if (updateTime != null) {
                long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数
                long nh = 1000 * 60 * 60;// 一小时的毫秒数
                long diff = System.currentTimeMillis() - updateTime.getTime();
                long day = diff / nd;// 计算差多少天
                long hour = diff % nd / nh + day * 24;// 计算差多少小时
                if (hour < 1) {
                    continue;
                }
            }
            // 商品列表
            List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>();
            for (GoodsPicture goodsPicture: imgs) {
                TaoBaoGoodsBriefExtra oldExtra = goodsPicture.getGoods();
                if (oldExtra == null) {
                    continue;
                }
                Integer state = oldExtra.getState();
                if (state != null && state == 1) {
                    continue;
                }
                try {
                    TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(oldExtra.getAuctionId());
                    listGoods.add(goodsBrief);
                    // 更新热销单品的分享奖金  ,其余不做更新
                    if (classId == 1) {
                        BigDecimal shareMoney = taoBaoGoodsBriefService.getShareGoodsUserHongBao(goodsBrief);
                        ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO();
                        shareMoneyDesc.setColor("#FFFFFF");
                        shareMoneyDesc.setBottomColor("#E8AE48");
                        shareMoneyDesc.setContent("预估分享奖金:¥" + shareMoney);
                        dynamicInfo.setDesc(shareMoneyDesc);
                    }
                    TaoBaoGoodsBriefExtra newExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief, proportion.toString(), null);
                    if (!newExtra.isCoupon()) {
                        newExtra.setState(1);
                    }
                    newExtra.setUpdatetime(new Date());
                    goodsPicture.setGoods(newExtra);
                } catch (TaobaoGoodsDownException e) {
                    oldExtra.setState(1);
                    oldExtra.setCoupon(false);
                    oldExtra.setUpdatetime(new Date());
                    goodsPicture.setGoods(oldExtra);
                    // 更新热销单品的分享奖金  ,其余不做更新
                    if (classId == 1) {
                        ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO();
                        shareMoneyDesc.setColor("#FFFFFF");
                        shareMoneyDesc.setBottomColor("#E8AE48");
                        shareMoneyDesc.setContent("预估分享奖金:¥" + new BigDecimal(0));
                        dynamicInfo.setDesc(shareMoneyDesc);
                    }
                    e.printStackTrace();
                }
            }
            // 更新商品
            List<TaoBaoGoodsBrief> listGoodsBrief = dynamicInfo.getListGoodsBrief();
            if (listGoods != null && listGoods.size() > 0 && listGoodsBrief != null && listGoodsBrief.size() > 0) {
                if (classId == 1) {
                    dynamicInfo.setListGoodsBrief(listGoods);
                } else {
                    for (int i =0; i < listGoodsBrief.size(); i ++) {
                        TaoBaoGoodsBrief taoBaoGoodsBrief = listGoodsBrief.get(i);
                        Long auctionId = taoBaoGoodsBrief.getAuctionId();
                        boolean isadd = true;
                        for (TaoBaoGoodsBrief goods: listGoods) {
                            if(goods.getAuctionId().equals(auctionId) || goods.getAuctionId() == auctionId) {
                                isadd = false;
                                break;
                            }
                        }
                        // 商品已下架 则添加原来商品信息
                        if (isadd) {
                            listGoods.add(taoBaoGoodsBrief);
                        }
                    }
                    dynamicInfo.setListGoodsBrief(listGoods);
                }
            }
            dynamicInfo.setImgs(imgs);
            dynamicInfo.setUpdateTime(new Date());
            dynamicInfoDao.updateGoodInfo(dynamicInfo);
        }
        dynamicInfoDao.insert(dynamicVO);
    }
    
    
    @Override
    public void deleteActivity(Long activityId) {
        DynamicInfo dynamicInfo = dynamicInfoDao.getByActivityId(activityId);
        if (dynamicInfo != null) {
            // 删除之前的
            dynamicInfoDao.deleteById(dynamicInfo.getId());
        }
    }
    @Override
    public void saveActivityRecommend(RecommendActivity activity) {
    public void insertActivityRecommend(RecommendActivity activity) {
        if (activity == null || activity.getGoodsList() == null) {
            return;
        }
        
        try {
            DynamicInfo existInfo = dynamicInfoDao.getByActivityId(activity.getId());
            if (existInfo != null) {
                dynamicInfoDao.deleteById(existInfo.getId());
            String dynamicInfoId = null;
            DynamicInfo dynamicInfo = dynamicInfoDao.getByActivityId(activity.getId());
            if (dynamicInfo == null) {
                dynamicInfo = new DynamicInfo();
                dynamicInfo.setId(UUID.randomUUID().toString().replace("-", ""));
                dynamicInfo.setCreateTime(new Date());
            } else {
                dynamicInfoId = dynamicInfo.getId();
            }
            
            DynamicInfo dynamicInfo = new DynamicInfo();
            dynamicInfo.setId(UUID.randomUUID().toString().replace("-", ""));
            dynamicInfo.setClassId(2L);
            dynamicInfo.setSubclassId(0L);
            dynamicInfo.setUser(activity.getActivityUser());
            dynamicInfo.setActivityId(activity.getId());
            dynamicInfo.setUpdateTime(new Date());
            
            List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>();
            String title = activity.getTitle();
            if (!StringUtil.isNullOrEmpty(title)) {
                title = title.replace("<p>", "");
                title = title.replace("</p>", "");
                dynamicInfo.setTitle(convertIntroduce(title));
                title = title.replaceAll("<p>", "");
                title = title.replaceAll("</p>", "");
                title = title.replaceAll("<br>", "\n");
                int index = title.lastIndexOf("\n");
                String newDesc = title.substring(index + 1);
                if(StringUtil.isNullOrEmpty(newDesc)) {
                    title = title.substring(0, index);
                }
                ClientTextStyleVO row1 = new ClientTextStyleVO();
                row1.setColor("#333333");
                row1.setContent(title );
                listtitle.add(row1);
            }
            dynamicInfo.setTitle(listtitle);
            Integer shareCount = activity.getShareCount();
            if (shareCount == null || shareCount <= 0) {
                dynamicInfo.setShareCount(1000 + (int) (Math.random() * 8000));
            } else {
                dynamicInfo.setShareCount(shareCount);
            }
            
            if (existInfo != null) {
                dynamicInfo.setCreateTime(existInfo.getCreateTime());
                dynamicInfo.setShareCount(existInfo.getShareCount());
            // 发布用户
            ActivityUser activityUser = activity.getActivityUser();
            if (activityUser == null) {
                dynamicInfo.setUser(activityUserService.selectByPrimaryKey(2L));
            } else {
                dynamicInfo.setCreateTime(new Date());
                dynamicInfo.setUpdateTime(new Date());
                dynamicInfo.setShareCount(1000 + (int) (Math.random() * 8000));
                dynamicInfo.setUser(activityUser);
            }
            List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>();
@@ -935,6 +832,11 @@
                dynamicInfo.setShowType(DynamicInfo.SHOW_TYPE_THREE);
                dynamicInfo.setShareType(DynamicInfo.SHARE_TYPE_NINE); // 分享类型9图
            }
            if (!StringUtil.isNullOrEmpty(dynamicInfoId)) {
                dynamicInfoDao.deleteById(dynamicInfoId);
            }
            // 保存信息
            dynamicInfoDao.insert(dynamicInfo);
@@ -948,6 +850,25 @@
    }
    
    
    @Override
    public void deleteActivity(Long activityId) {
        DynamicInfo dynamicInfo = dynamicInfoDao.getByActivityId(activityId);
        if (dynamicInfo != null) {
            // 删除之前的
            dynamicInfoDao.deleteById(dynamicInfo.getId());
        }
    }
    @Override
    public void removeByDate(Date createTime) {
        dynamicInfoDao.removeByDate(createTime);
    }
    @Override
    public void updateShareCount(DynamicInfo record) {
        dynamicInfoDao.updateShareCount(record);
    }
    
    @Override
    @Cacheable(value = "dynamicCache", key = "'count-'+#cid+'-'+#subId")
@@ -970,4 +891,150 @@
        
        return list;
    }
    /**
     * 更新商品信息
     */
    public void updateGoodInfo(List<DynamicInfo> list) {
        if (list == null || list.size() == 0) {
            return;
        }
        BigDecimal proportion = hongBaoManageService.getFanLiRate();
        for (DynamicInfo dynamicInfo: list) {
            // 邀请数据不做更新
            long classId = dynamicInfo.getClassId();
            if (classId == 4) {
                break;
            }
            // 更新商品信息
            List<GoodsPicture> imgs = dynamicInfo.getImgs();
            if (imgs == null || imgs.size() == 0) {
                continue;
            }
            // 是否一个小时之内已更新
            Date updateTime = dynamicInfo.getUpdateTime();
            if (updateTime != null) {
                long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数
                long nh = 1000 * 60 * 60;// 一小时的毫秒数
                long diff = System.currentTimeMillis() - updateTime.getTime();
                long day = diff / nd;// 计算差多少天
                long hour = diff % nd / nh + day * 24;// 计算差多少小时
                if (hour < 1) {
                    continue;
                }
            }
            // 已下架ID
            List<Long> listDown = new ArrayList<Long>();
            // 商品列表
            List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>();
            for (GoodsPicture goodsPicture: imgs) {
                TaoBaoGoodsBriefExtra oldExtra = goodsPicture.getGoods();
                if (oldExtra == null) {
                    continue;
                }
                Integer state = oldExtra.getState();
                if (state != null && state == 1) {
                    continue;
                }
                try {
                    TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(oldExtra.getAuctionId());
                    listGoods.add(goodsBrief);
                    // 更新热销单品的分享奖金  ,其余不做更新
                    if (classId == 1) {
                        BigDecimal shareMoney = taoBaoGoodsBriefService.getShareGoodsUserHongBao(goodsBrief);
                        ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO();
                        shareMoneyDesc.setColor("#FFFFFF");
                        shareMoneyDesc.setBottomColor("#E8AE48");
                        shareMoneyDesc.setContent("预估分享奖金:¥" + shareMoney);
                        dynamicInfo.setDesc(shareMoneyDesc);
                    }
                    TaoBaoGoodsBriefExtra newExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief, proportion.toString(), null);
                    if (!newExtra.isCoupon()) {
                        newExtra.setState(1);
                    }
                    newExtra.setUpdatetime(new Date());
                    goodsPicture.setGoods(oldExtra);
                } catch (TaobaoGoodsDownException e) {
                    listDown.add(oldExtra.getAuctionId());
                    oldExtra.setState(1);
                    oldExtra.setCoupon(false);
                    oldExtra.setUpdatetime(new Date());
                    goodsPicture.setGoods(oldExtra);
                    // 商品真实下架
                    goodsPicture.setGoodState(1);
                    // 更新热销单品的分享奖金  ,其余不做更新
                    if (classId == 1) {
                        ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO();
                        shareMoneyDesc.setColor("#FFFFFF");
                        shareMoneyDesc.setBottomColor("#E8AE48");
                        shareMoneyDesc.setContent("预估分享奖金:¥" + new BigDecimal(0));
                        dynamicInfo.setDesc(shareMoneyDesc);
                    }
                    e.printStackTrace();
                }
            }
            dynamicInfo.setImgs(imgs);
            // 商品已下架
            List<TaoBaoGoodsBrief> listGoodsBrief = dynamicInfo.getListGoodsBrief();
            if (listGoodsBrief != null && listGoodsBrief.size() > 0) {
                if (listGoods.size() > 0 ) {
                    if (classId == 1) {
                        dynamicInfo.setListGoodsBrief(listGoods);
                    } else {
                        for (int i =0; i < listGoodsBrief.size(); i ++) {
                            TaoBaoGoodsBrief taoBaoGoodsBrief = listGoodsBrief.get(i);
                            Long auctionId = taoBaoGoodsBrief.getAuctionId();
                            boolean isadd = true;
                            for (TaoBaoGoodsBrief goods: listGoods) {
                                if(goods.getAuctionId().equals(auctionId) || goods.getAuctionId() == auctionId) {
                                    isadd = false;
                                    break;
                                }
                            }
                            if (isadd) {
                                // 商品已下架 则添加原来商品信息
                                if (listDown.size() > 0 && listDown.contains(taoBaoGoodsBrief.getAuctionId())) {
                                    taoBaoGoodsBrief.setState(1);
                                }
                                listGoods.add(taoBaoGoodsBrief);
                            }
                        }
                        dynamicInfo.setListGoodsBrief(listGoods);
                    }
                } else {
                    if (listDown.size() > 0) {
                        for (TaoBaoGoodsBrief taoBaoGoodsBrief: listGoodsBrief) {
                            if (listDown.contains(taoBaoGoodsBrief.getAuctionId())) {
                                taoBaoGoodsBrief.setState(1);
                            }
                        }
                        dynamicInfo.setListGoodsBrief(listGoodsBrief);
                    }
                }
            }
            dynamicInfo.setUpdateTime(new Date());
            dynamicInfoDao.updateGoodInfo(dynamicInfo);
        }
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/user/QrCodeServiceImpl.java
@@ -134,7 +134,7 @@
    
    
    @Override
    public String drawInviteQrCodeNew(String url, Long uid, String portrait, String inviteCode) throws IOException {
    public String drawInviteQrCodeNew(String url, Long uid, String portrait, Integer pX, Integer pY, Integer size, String inviteCode) throws IOException {
        
        if (StringUtil.isNullOrEmpty(url)) {
            return null;
@@ -174,28 +174,36 @@
            portraitInputStream = HttpUtil.getAsInputStream(portrait); // 头像
            erCodeInputStream = new FileInputStream(new File(erCodeTempPath)); // 二维码
        }
        // 开始根据 url(背景图), qrCode(二维码), portrait(头像) 生成图片
        ImageUtil.inviteFriendImg(urlInputStream, portraitInputStream, erCodeInputStream, targetPath, inviteCode);
        ImageUtil.inviteFriendImgWhitecustom(urlInputStream, portraitInputStream, erCodeInputStream, targetPath,
             pX, pY, size, inviteCode);
        // 删除二维码文件
        if(erCodeInputStream != null) {
            erCodeInputStream.close();
        }
        if (erCodeTempPath != null && new File(erCodeTempPath).exists()) {
            new File(erCodeTempPath).delete();
        }
        // 上传文件相对位置
        if (new File(targetPath).exists() && new File(targetPath).length() > 0) {
            int index = url.lastIndexOf("/");
            String newUrl = url.substring(index + 1);
            String urlMd5 = newUrl.substring(0, newUrl.lastIndexOf("."));
            String fileUrl= null;
            if (uid == null) {
                fileUrl= "ercode/" + "ercode_" + uuid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg";
                fileUrl = "ercode/" + "ercode_" + uuid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg";
            } else {
                fileUrl = "ercode/" + "ercode_" + uid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg";
                if (new File(erCodeTempPath).exists())
                    new File(erCodeTempPath).delete();
            }
            // 上传文件
            String imgUrl = COSManager.getInstance().uploadFile(new File(targetPath), fileUrl).getUrl();
            if (new File(targetPath).exists())
                new File(targetPath).delete();
            // 删除本地缓存文件
            new File(targetPath).delete();
            return imgUrl;
        }
@@ -245,6 +253,15 @@
        // 开始根据 url(背景图), qrCode(二维码), portrait(头像) 生成图片
        ImageUtil.drawInviteToGreet(urlInputStream, portraitInputStream, erCodeInputStream, targetPath, inviteCode, content, date);
        // 删除二维码文件
        if(erCodeInputStream != null) {
            erCodeInputStream.close();
        }
        if (erCodeTempPath != null && new File(erCodeTempPath).exists()) {
            new File(erCodeTempPath).delete();
        }
        // 上传文件
        if (new File(targetPath).exists() && new File(targetPath).length() > 0) {
            int index = url.lastIndexOf("/");
@@ -254,22 +271,18 @@
            // 上传文件相对位置
            String fileUrl= null;
            if (uid == null) {
                fileUrl= "ercode/" + "ercode_" + uuid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg";
                fileUrl = "ercode/" + "ercode_" + uuid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg";
            } else {
                fileUrl = "ercode/" + "ercode_" + uid + "_" + System.currentTimeMillis() + "_" + urlMd5 + ".jpg";
                if (new File(erCodeTempPath).exists())
                    new File(erCodeTempPath).delete();
            }
            // 上传
            String imgUrl = COSManager.getInstance().uploadFile(new File(targetPath), fileUrl).getUrl();
            if (new File(targetPath).exists())
                new File(targetPath).delete();
            // 删除缓存文件
            new File(targetPath).delete();
            return imgUrl;
        } 
        return null;
    }
fanli/src/main/java/com/yeshi/fanli/service/impl/user/SpreadUserImgServiceImpl.java
@@ -183,11 +183,12 @@
                if (img.getMd5().equalsIgnoreCase(md5)) {
                    // 画图
                    try {
                        String imgUrl = qrCodeService.drawInviteQrCode(img.getUrl(), uid,
                                StringUtil.isNullOrEmpty(user.getPortrait())
                                        ? Constant.systemCommonConfig.getDefaultPortrait() : user.getPortrait(),
                                inviteCode);
                        String portrait = user.getPortrait();
                        if (StringUtil.isNullOrEmpty(portrait)) {
                            portrait = Constant.systemCommonConfig.getDefaultPortrait();
                        }
                        String imgUrl = qrCodeService.drawInviteQrCodeNew(img.getUrl(), uid, portrait, null, null, null, inviteCode);
                        if (!StringUtil.isNullOrEmpty(imgUrl)) {
                            if (imgUrl != null) {
                                addUserInviteImg(uid, imgUrl);
@@ -252,8 +253,8 @@
    
    @Override
    public String drawInviteQrCodeNew(String bgImg, Long uid, String portrait, String inviteCode) throws Exception {
        return qrCodeService.drawInviteQrCodeNew(bgImg, uid, portrait, inviteCode);
    public String drawInviteQrCodeNew(String bgImg, Long uid, String portrait, Integer pX, Integer pY, Integer size, String inviteCode) throws Exception {
        return qrCodeService.drawInviteQrCodeNew(bgImg, uid, portrait, pX, pY, size, inviteCode);
    }
    
    
fanli/src/main/java/com/yeshi/fanli/service/inter/dynamic/DynamicInfoService.java
@@ -3,7 +3,6 @@
import java.util.Date;
import java.util.List;
import com.yeshi.fanli.entity.bus.activity.ActivityUser;
import com.yeshi.fanli.entity.bus.activity.RecommendActivity;
import com.yeshi.fanli.entity.dynamic.DynamicInfo;
@@ -44,11 +43,11 @@
    public void updateShareCount(DynamicInfo record);
    /**
     * 插入邀请素材
     * 插入邀请素材 - 动态
     * @param content
     * @param picUrl
     */
    public void insertInviteMaterial(String content, String picUrl, Long activityId, ActivityUser activityUser);
    public void insertInviteActivity(RecommendActivity activity) throws Exception;
    public void insert(DynamicInfo record);
@@ -70,7 +69,7 @@
     *  动态商品
     * @param activity
     */
    public void saveActivityRecommend(RecommendActivity activity);
    public void insertActivityRecommend(RecommendActivity activity);
    /**
     * 删除动态信息
fanli/src/main/java/com/yeshi/fanli/service/inter/user/QrCodeService.java
@@ -62,5 +62,5 @@
     * @return
     * @throws IOException
     */
    public String drawInviteQrCodeNew(String url, Long uid, String portrait, String inviteCode) throws IOException;
    public String drawInviteQrCodeNew(String url, Long uid, String portrait, Integer pX, Integer pY, Integer size, String inviteCode) throws IOException;
}
fanli/src/main/java/com/yeshi/fanli/service/inter/user/SpreadUserImgService.java
@@ -58,7 +58,7 @@
     * @return
     * @throws Exception
     */
    String drawInviteQrCodeNew(String bgImg, Long uid, String portrait, String inviteCode) throws Exception;
    String drawInviteQrCodeNew(String bgImg, Long uid, String portrait, Integer pX, Integer pY, Integer size, String inviteCode) throws Exception;
    /**
     * 邀请图片 问候
fanli/src/main/java/com/yeshi/fanli/util/Constant.java
@@ -13,9 +13,9 @@
public class Constant {
    public static boolean IS_TASK = false;
    // 外网环境
    public static boolean IS_OUTNET = true;
    public static boolean IS_OUTNET = false;
    public static boolean IS_TEST = false;
    public static boolean IS_TEST = true;
    public static int PAGE_SIZE = 20;
    
fanli/src/main/java/com/yeshi/fanli/util/ImageUtil.java
@@ -1094,7 +1094,7 @@
        return originalImage;
    }
    static BufferedImage roundImage(BufferedImage srcImage, int cornerRadius) { // 半径
    public static BufferedImage roundImage(BufferedImage srcImage, int cornerRadius) { // 半径
        int width = srcImage.getWidth();
        int height = srcImage.getHeight();
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
@@ -1176,6 +1176,121 @@
    }
    
    /**
     * 头像加白底图 邀请好友图片
     * @param urlInputStream
     * @param portraitInputStream
     * @param erCodeInputStream
     * @param targetPath
     * @param inviteCode
     * @throws IOException
     */
    public static void inviteFriendImgWhite(InputStream urlInputStream, InputStream portraitInputStream,
            InputStream erCodeInputStream, String targetPath,String inviteCode) throws IOException {
        inviteFriendImgWhite(urlInputStream, portraitInputStream, erCodeInputStream, targetPath, 260, 908, 230, inviteCode);
    }
    /**
     * 头像加白底图 邀请好友图片  -自定义二维码位置
     * @param urlInputStream
     * @param portraitInputStream
     * @param erCodeInputStream
     * @param targetPath
     * @param inviteCode
     * @throws IOException
     */
    public static void inviteFriendImgWhitecustom(InputStream urlInputStream, InputStream portraitInputStream,
            InputStream erCodeInputStream, String targetPath, Integer pX, Integer pY, Integer size, String inviteCode) throws IOException {
        inviteFriendImgWhite(urlInputStream, portraitInputStream, erCodeInputStream, targetPath, pX, pY, size, inviteCode);
    }
    /**
     * 邀请好友图片加上头像加上白底
     */
    public static void inviteFriendImgWhite(InputStream urlInputStream, InputStream portraitInputStream,
            InputStream erCodeInputStream, String targetPath, Integer pX, Integer pY, Integer size, String inviteCode) throws IOException {
        if (pX == null) {
            pX = 260;
        }
        if (pY == null) {
            pY = 908;
        }
        if (size == null) {
            size = 230;
        }
        BufferedImage bgImage = ImageIO.read(urlInputStream);
        final BufferedImage targetImg = new BufferedImage(bgImage.getWidth(), bgImage.getHeight(),
                BufferedImage.TYPE_INT_RGB);
        HashMap<Key, Object> mapH = new HashMap<Key, Object>();
        mapH.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);// 抗锯齿 (抗锯齿总开关)  
        mapH.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);// 文字抗锯齿 
        // 画 背景图片
        final Graphics2D g2d = targetImg.createGraphics();
        g2d.drawImage(bgImage, 0, 0, bgImage.getWidth(), bgImage.getHeight(), null);
        g2d.setRenderingHints(mapH);
        // 画 二维码
        BufferedImage qrCodeImage = ImageIO.read(erCodeInputStream);
        qrCodeImage = ImageUtil.qrCodeImage(g2d, qrCodeImage, pX, pY, size, size);
        int portraitSize = size * 5 / 23;
        int pPX = pX + size / 2 - portraitSize / 2;
        int pPY = pY + size / 2 - portraitSize / 2;
        // 头像白色边框
        g2d.fillRoundRect(pPX-4, pPY-4,portraitSize+8, portraitSize + 8, 5, 5);
        g2d.setRenderingHints(mapH);
        // 画 头像
        BufferedImage portraitImg = ImageIO.read(portraitInputStream);
        portraitImg = ImageUtil.zoomInImage(portraitImg, portraitSize, portraitSize);
        portraitImg = ImageUtil.roundImage(portraitImg, 10);
        g2d.drawImage(portraitImg, pPX, pPY, portraitSize, portraitSize, null);
        // 画邀请码(邀请码的大小与字体固定)
        if (!StringUtil.isNullOrEmpty(inviteCode)) {
            String st = "邀请码:" + inviteCode;
            String os = System.getProperty("os.name");
            String fontBoldPath = "/usr/share/fonts/PingFang_Medium.ttf";
            if (os.toLowerCase().startsWith("win")) {
                fontBoldPath = "D:/PingFang_Medium.ttf";
            }
            Font boldFont = null;
            try {
                boldFont = Font.createFont(Font.PLAIN, new File(fontBoldPath)).deriveFont(36.0f);
            } catch (FontFormatException e) {
                e.printStackTrace();
            }
            g2d.setFont(boldFont);
            g2d.getFontMetrics(boldFont);
            g2d.setColor(new Color(0, 0, 0));
            int ax = pX - 30;
            int ay = pY + size +  118;
            g2d.setColor(new Color(0, 0, 0));
            g2d.drawString(st, ax, ay);
        }
        OutputStream out = new FileOutputStream(new File(targetPath));
        ImageIO.write(targetImg, "JPEG", out);
        out.flush();
        out.close();
    }
    /**
     * 绘制邀请问候图
     * @param bgPigInStream  背景图
@@ -1203,6 +1318,7 @@
        final Graphics2D g2d = targetImg.createGraphics();
        g2d.drawImage(bgImage, 0, 0, bgImage.getWidth(), bgImage.getHeight(), null);
        g2d.setRenderingHints(mapH);
        g2d.setBackground(Color.WHITE);
        
        // 画 蒙层
        BufferedImage mengCeng = ImageIO
@@ -1217,23 +1333,32 @@
        int size = 210; // 230
        // 画 二维码
        BufferedImage qrCodeImage = ImageIO.read(erCodeInStream);
        qrCodeImage = ImageUtil.qrCodeImage(g2d, qrCodeImage, pX, pY, size, size); // 二维码长宽
        qrCodeImage = qrCodeImage(g2d, qrCodeImage, pX, pY, size, size); // 二维码长宽
        // 230*230
        // 画 头像
        int portraitSize = size * 5 / 23;
        int pPX = pX + size / 2 - portraitSize / 2;
        int pPY = pY + size / 2 - portraitSize / 2;
        // 头像白色边框
        g2d.fillRoundRect(pPX-4, pPY-4,portraitSize+8, portraitSize + 8, 5, 5);
        g2d.setRenderingHints(mapH);
        BufferedImage portraitImg = ImageIO.read(portraitInStream);
        portraitImg = ImageUtil.portraitImg(g2d, portraitImg, pPX, pPY, portraitSize, portraitSize);// 头像长宽
        portraitImg = ImageUtil.zoomInImage(portraitImg, portraitSize, portraitSize);
        portraitImg = ImageUtil.roundImage(portraitImg, 10);
        g2d.drawImage(portraitImg, pPX, pPY, portraitSize, portraitSize, null);
        // 文字白色
        // 字体白色
        Color color = new Color(255, 255, 255);
        String os = System.getProperty("os.name");
        String fontBoldPath = "/usr/share/fonts/yahei.ttf";
        if (os.toLowerCase().startsWith("win")) {
            fontBoldPath = "C:/yahei.ttf";
        }
        Font boldFont = null;
        // 画邀请码(邀请码的大小与字体固定)
@@ -1349,4 +1474,5 @@
        out.flush();
        out.close();
    }
}
fanli/src/main/resource/druid.properties
@@ -1,8 +1,8 @@
druid.driverClassName=com.mysql.jdbc.Driver
#本地测试
druid.url=jdbc:mysql://192.168.1.253:3306/ec_quan
druid.username=root
druid.password=123456
#druid.url=jdbc:mysql://192.168.1.253:3306/ec_quan
#druid.username=root
#druid.password=123456
@@ -23,9 +23,9 @@
#druid.password=Yeshi2016@
#外网本地测试
#druid.url=jdbc:mysql://gz-cdb-r13d0yi9.sql.tencentcdb.com:62929/ec_quan
#druid.username=root
#druid.password=Yeshi2016@
druid.url=jdbc:mysql://gz-cdb-r13d0yi9.sql.tencentcdb.com:62929/ec_quan
druid.username=root
druid.password=Yeshi2016@
druid.initialSize=10
druid.minIdle=6
fanli/src/main/resource/mongo.properties
@@ -7,6 +7,7 @@
#mongo.password=123456
#上线环境
mongo.host=172.16.16.44
#mongo.host=127.0.0.1
mongo.username=yeshi
mongo.password=Yeshi2016@
mongo.connectionsPerHost=8
fanli/src/main/resource/redis.properties
@@ -1,8 +1,9 @@
#redis.addr=172.16.16.15
redis.addr=192.168.1.253
redis.addr=118.190.207.9
#redis.addr=127.0.0.1
redis.port=6379
#redis.auth=crs-43yhgz0i:Yeshi2016@
redis.auth=123456
redis.auth=Yeshi2016@
redis.max_active=1024
redis.max_idle=200
redis.max_wait=10000
fanli/src/test/java/org/fanli/MyBatisProduce.java
@@ -1,29 +1,26 @@
package org.fanli;
import org.junit.Ignore;
import org.junit.Test;
import org.yeshi.utils.mybatis.ColumnParseUtil;
import org.yeshi.utils.mybatis.MyBatisMapperUtil;
import com.yeshi.fanli.entity.bus.clazz.GoodsSubClass;
import com.yeshi.fanli.entity.bus.clazz.GoodsSubClassLabel;
import com.yeshi.fanli.entity.bus.clazz.GoodsSubClassLabelMap;
import com.yeshi.fanli.entity.bus.msg.MsgDeviceReadState;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
import com.yeshi.fanli.entity.order.CommonOrderTradeIdMap;
import com.yeshi.fanli.entity.taobao.TaoBaoPunishOrder;
//@Ignore
public class MyBatisProduce {
    @Test
    public void test3() {
        MyBatisMapperUtil.createMapper(GoodsSubClassLabel.class);
        MyBatisMapperUtil.createMapper(GoodsSubClassLabelMap.class);
        MyBatisMapperUtil.createMapper(CommonOrderTradeIdMap.class);
        // MyBatisMapperUtil.createMapper(UserMoneyDebtReturnHistory.class);
    }
    @Test
    public void test1() {
        ColumnParseUtil.parseColumn(GoodsSubClass.class,
                "D:/workspace/fanli/fanli-server/fanli/src/main/java/com/yeshi/fanli/mapping/GoodsSubClassMapper.xml");
        ColumnParseUtil.parseColumn(GoodsClass.class,
                "D:/workspace/fanli/fanli-server/fanli/src/main/java/com/yeshi/fanli/mapping/GoodsClassMapper.xml");
    }
}
fanli/src/test/java/org/fanli/TaoKeTest.java
@@ -7,25 +7,35 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.junit.Ignore;
import org.junit.Test;
import org.yeshi.utils.HttpUtil;
import com.yeshi.fanli.dao.mybatis.taobao.TBPidMapper;
import com.yeshi.fanli.entity.taobao.SearchFilter;
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.taobao.PidUser;
import com.yeshi.fanli.entity.taobao.TBPid;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoLink;
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
import com.yeshi.fanli.entity.taobao.TaoBaoPunishOrder;
import com.yeshi.fanli.entity.taobao.TaoKeAppInfo;
import com.yeshi.fanli.exception.taobao.TaoKeApiException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.goods.ShareGoodsService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoBuyRelationMapService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoOrderService;
import com.yeshi.fanli.service.inter.user.TBPidService;
import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.util.BeanUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.util.taobao.TaoKeOrderApiUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -37,27 +47,17 @@
    @Test
    public void test1() {
        // TaoBaoShop shop=
        // TaoBaoUtil.getTaoBaoShopDetailByAuctionId(536542467108L);
        // System.out.println(shop);
        long startTime = TimeUtil.convertToTimeTemp("2019-04-02 00:00:00", "yyyy-MM-dd HH:mm:ss");
        SearchFilter sf = new SearchFilter();
        sf.setPage(3);
        sf.setPageSize(40);
        sf.setKey("鞋套");
        TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiao(sf);
        List<TaoBaoGoodsBrief> goodsList = result.getTaoBaoGoodsBriefs();
        List<Long> list = new ArrayList<>();
        for (TaoBaoGoodsBrief tf : goodsList) {
            list.add(tf.getAuctionId());
        }
        List<TaoBaoPunishOrder> list = TaoKeOrderApiUtil.getPunishOrderList(startTime,
                startTime + 1000 * 60 * 60 * 24L);
        System.out.println(list);
        try {
            TaoKeApiUtil.getBatchGoodsInfo(list);
        } catch (TaoKeApiException e1) {
            e1.printStackTrace();
        } catch (TaobaoGoodsDownException e1) {
            e1.printStackTrace();
        }
        System.out.println(count);
        // TaoKeApiUtil.getTaoKeContentEffective();
        // TaoKeApiUtil.getTaoKeContent();
    }
    @Test
@@ -77,10 +77,7 @@
    @Test
    public void test3() {
        for (int i = 0; i < 10; i++) {
            String uuid = UUID.randomUUID().toString().replaceAll("-", "");
            System.out.println(uuid);
        }
        TaoKeApiUtil.taoKeContent();
    }
    @Test
@@ -118,11 +115,11 @@
                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36");
        headers.put("referer", "https://pub.alimama.com/myunion.htm");
        Map<String, String> params = new HashMap<>();
        params.put("tab", 3 + "");//3
        params.put("tab", 3 + "");// 3
        params.put("toPage", "10");
        params.put("perPageSize", "500");
        params.put("_input_charset", "utf-8");
        params.put("gcid", "8");//8
        params.put("gcid", "8");// 8
        params.put("t", System.currentTimeMillis() + "");
        params.put("_tb_token_", "78e513aee5563");
@@ -133,7 +130,7 @@
            JSONObject item = array.optJSONObject(i);
            String pid = item.optString("adzonePid");
            if ((item.optString("name").startsWith("quanqudao_") || item.optString("name").startsWith("tuiguang_"))
                    && item.optInt("mixClick30day")<3000) {
                    && item.optInt("mixClick30day") < 3000) {
                pids.add(pid);
            }
        }
@@ -167,7 +164,146 @@
    @Test
    public void test6() {
        TaoKeApiUtil.taoKeContent();
        String token = TaoKeApiUtil.getTKToken(
                "https://img.alicdn.com/bao/uploaded/i4/1951405497/O1CN01pSRKwW1qTfhFOL6ID_!!0-item_pic.jpg",
                "进门门垫卧室地毯厨房脚垫卫浴室防滑垫子家用门口卫生间吸水地垫",
                "https://uland.taobao.com/coupon/edetail?e=ALb9e%2B%2F%2BWuEGQASttHIRqWG9PQkvBWgpe2xKTDmY89k3iJ6QLtrZTaw1YqztnqtTrnLz2cLaP4IorCkhghE4lRktOfsF9p14gPp7zT6kOnRnXdWpB0IN0xemP0hpIIPvjDppvlX%2Bob8NlNJBuapvQ2MDg9t1zp0R8pjV3C9qcwTlnMqBDl4yuer2wO%2Fohke1&traceId=0b83456615579010794213275ee3b8&union_lens=lensId:0b1832c2_0bdc_16aba23f39d_07b3&xId=hu3LxjUFR7nb3uT9e97Uy74tDuNpUuisuzrh7K8WAro72oLHXY1N6hSpx7bzQWpJ3rMAKcQf6fA0iBNYmL0GOA");
        System.out.println(token);
    }
    @Test
    public void test7() {
        Long uid = 1965358L;
        Long auctionId = 575009129060L;
        String platform = "ios";
        UserInfoService userInfoService = BeanUtil.getBean(UserInfoService.class);
        UserExtraTaoBaoInfoService userExtraTaoBaoInfoService = BeanUtil.getBean(UserExtraTaoBaoInfoService.class);
        TaoBaoBuyRelationMapService taoBaoBuyRelationMapService = BeanUtil.getBean(TaoBaoBuyRelationMapService.class);
        TBPidService tbPidService = BeanUtil.getBean(TBPidService.class);
        ShareGoodsService shareGoodsService = BeanUtil.getBean(ShareGoodsService.class);
        UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
        TaoBaoGoodsBrief goods = null;
        try {
            goods = TaoKeApiUtil.getSimpleGoodsInfo(auctionId);
        } catch (TaobaoGoodsDownException e) {
            return;
        } catch (Exception e) {
            try {
                LogHelper.errorDetailInfo(e, "获取商品简版详情出错", auctionId + "");
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }
        JSONObject data = new JSONObject();
        boolean isNative = false;
        String pid = null;
        boolean specialConvert = false;
        if (goods.getMaterialLibType() != null && goods.getMaterialLibType() == 1) {
            specialConvert = true;
        } else
            specialConvert = false;
        String specialId = null;
        String relationId = null;
        // 查询用户ID是否绑定了会员运营ID
        UserExtraTaoBaoInfo userInfo = userExtraTaoBaoInfoService.getByUid(uid);
        if (userInfo != null && !StringUtil.isNullOrEmpty(userInfo.getSpecialId()) && userInfo.getSpecialValid() != null
                && userInfo.getSpecialValid() == true) {
            specialId = userInfo.getSpecialId();
            relationId = userInfo.getRelationId();
            // 已经绑定
            if (specialConvert) {
                isNative = true;
            } else
                isNative = false;
            pid = TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT;
        } else {// 尚未绑定
            isNative = true;
        }
        data.put("native", isNative);
        int pidType = PidUser.TYPE_FANLI_ANDROID;
        if (platform.equalsIgnoreCase("ios"))
            pidType = PidUser.TYPE_FANLI_IOS;
        try {
            TaoBaoLink taoBaoLink = null;
            // 是返利商品库的商品
            if (specialConvert) {
                if (!StringUtil.isNullOrEmpty(specialId)) {
                    taoBaoLink = shareGoodsService.getTaoBaoLinkForBuyWithSpecial(uid, specialId, auctionId);
                    data.put("native", true);
                } else {
                    if (!specialConvert && !isNative) {
                        if (pidType == PidUser.TYPE_FANLI_ANDROID)
                            taoBaoLink = shareGoodsService.getTaoBaoLink(uid, auctionId,
                                    tbPidService.getAndroidDefault().getPid());
                        else
                            taoBaoLink = shareGoodsService.getTaoBaoLink(uid, auctionId,
                                    tbPidService.getIOSDefault().getPid());
                    } else
                        taoBaoLink = shareGoodsService.getTaoBaoLinkForBuy(uid, auctionId, pidType);
                }
            } else {// 不是返利库的商品,用特殊PID替代
                try {
                    relationId = taoBaoBuyRelationMapService.getRelationId(uid);
                } catch (Exception e) {
                    LogHelper.errorDetailInfo(e, "uid:" + uid, null);
                }
                if (!StringUtil.isNullOrEmpty(relationId)) {//
                    taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(uid, auctionId, relationId,
                            TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID);
                    data.put("native", true);
                } else {
                    if (pidType == PidUser.TYPE_FANLI_ANDROID)
                        taoBaoLink = shareGoodsService.getTaoBaoLink(uid, auctionId,
                                tbPidService.getAndroidDefault().getPid());
                    else
                        taoBaoLink = shareGoodsService.getTaoBaoLink(uid, auctionId,
                                tbPidService.getIOSDefault().getPid());
                }
            }
            JSONObject link = new JSONObject();
            link.put("clickUrl", taoBaoLink.getClickUrl());
            link.put("couponUrl", taoBaoLink.getCouponLink());
            data.put("type", 1);
            data.put("link", link);
        } catch (Exception e) {
            isNative = false;
            // TBPid tbPid = null;
            // if (acceptData.getPlatform().equalsIgnoreCase("android")) {
            // tbPid = tbPidService.getTBPid(uid, PidUser.TYPE_FANLI_ANDROID);
            // } else {
            // tbPid = tbPidService.getTBPid(uid, PidUser.TYPE_FANLI_IOS);
            // }
            //
            // data.put("native", isNative);
            // if (tbPid != null) {
            // String siteId = tbPid.getPid().split("_")[2];
            // String adzoneId = tbPid.getPid().split("_")[3];
            // TaoBaoUnionConfig config =
            // taoBaoUnionConfigService.getConfigByAppIdCache(siteId);
            // ClientTBPid clientTBPid = new ClientTBPid(config.getAppKey(),
            // tbPid.getPid(), siteId, adzoneId);
            // data.put("type", 2);
            // data.put("tbPidInfo", clientTBPid);
            // out.print(JsonUtil.loadTrueResult(data));
            // } else {
            // out.print(JsonUtil.loadFalseResult(1, "请求失败"));
            // }
        }
    }
    private void deleteAdzones(String adzones) {
@@ -196,4 +332,5 @@
        } catch (InterruptedException e) {
        }
    }
}