fanli/src/main/java/com/yeshi/fanli/controller/client/RecommendController.java
@@ -1727,9 +1727,10 @@ // 缓存半个小时 redisManager.cacheCommonString(cachekey, array.toString(), 60 * 30); } Long endTime = nextTime.getTimeInMillis() - java.lang.System.currentTimeMillis(); JSONObject root = new JSONObject(); root.put("time", nextTime.getTimeInMillis()); root.put("endTime", endTime > 0? endTime : 0); root.put("listgoods", array); return root; fanli/src/main/java/com/yeshi/fanli/controller/client/ShareController.java
@@ -16,13 +16,21 @@ import org.yeshi.utils.JsonUtil; import org.yeshi.utils.taobao.TbImgUtil; import com.yeshi.fanli.dto.share.ShareInfoDTO; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.share.UserShareGoodsGroup; import com.yeshi.fanli.entity.bus.share.UserShareGoodsHistory; import com.yeshi.fanli.entity.bus.share.UserShareGoodsRecord; import com.yeshi.fanli.entity.bus.share.UserShareGoodsRecord.ShareSourceTypeEnum; import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.UserInfoExtra; import com.yeshi.fanli.entity.dynamic.DynamicInfo; import com.yeshi.fanli.entity.dynamic.GoodsPicture; 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; @@ -30,12 +38,16 @@ import com.yeshi.fanli.exception.share.UserShareGoodsRecordException; import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.config.SystemClientParamsService; import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService; import com.yeshi.fanli.service.inter.goods.CommonGoodsService; import com.yeshi.fanli.service.inter.goods.ShareGoodsService; import com.yeshi.fanli.service.inter.goods.ShareGoodsTextTemplateService; import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; import com.yeshi.fanli.service.inter.monitor.MonitorService; import com.yeshi.fanli.service.inter.user.SpreadUserImgService; import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.service.inter.user.UserShareGoodsGroupService; import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService; @@ -45,10 +57,12 @@ import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TaoBaoConstant; import com.yeshi.fanli.util.account.UserUtil; import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil; import com.yeshi.fanli.util.factory.MonitorFactory; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; import com.yeshi.fanli.vo.msg.ClientTextStyleVO; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -92,6 +106,19 @@ @Resource private ShareGoodsTextTemplateService shareGoodsTextTemplateService; @Resource private SystemClientParamsService systemClientParamsService; @Resource private DynamicInfoService dynamicInfoService; @Resource private UserInfoExtraService userInfoExtraService; @Resource private SpreadUserImgService spreadUserImgService; // 获取商品分享链接 @RequestMapping(value = "getGoodsShareUrl") @@ -590,4 +617,177 @@ out.print(JsonUtil.loadTrueResult(configService.get("share_goods_template_rules"))); } /** * 查询顶部分类 * @param acceptData * @param page * @param cid * @param out */ @RequestMapping(value = "shareDynamic", method = RequestMethod.POST) public void shareDynamic(AcceptData acceptData, String id, Long uid, PrintWriter out) { try { if (uid == null || uid <= 0) { out.print(JsonUtil.loadFalseResult(1, "用户未登录")); return; } if (StringUtil.isNullOrEmpty(id)) { out.print(JsonUtil.loadFalseResult("参数不能为空")); return; } DynamicInfo dynamicInfo = dynamicInfoService.getById(id); if (dynamicInfo == null) { out.print(JsonUtil.loadFalseResult("该动态信息已不存在")); return; } JSONObject data = new JSONObject(); // 分类id long cid = dynamicInfo.getClassId(); if (cid == 1) { // 热销单品 // 文字内容 data.put("title", JsonUtil.getApiCommonGson().toJson(dynamicInfo.getTitle())); // 分享奖金 ClientTextStyleVO desc = dynamicInfo.getDesc(); String content = desc.getContent(); int index = content.indexOf("¥"); data.put("shareMoney", new BigDecimal(content.substring(index + 1, content.length()))); // 分享链接 String url = String.format("http://%s/share_mushGoods.html?uid=%s&shareId=%s&source=%s", configService.getH5Host(), AESUtil.encrypt(uid + "", Constant.UIDAESKEY), id, "dynamic"); String shortLink = HttpUtil.getShortLink(url); if (!StringUtil.isNullOrEmpty(shortLink)) { url = shortLink; } data.put("clickUrl", url); // 分享文字图标 String imgs = configService.get("goods_share_notify_imgs"); JSONArray array = JSONArray.fromObject(imgs); int p = (int) (array.size() * Math.random()); if (p < array.size()) { data.put("notifyPicture", array.optString(p)); } UserExtraTaoBaoInfo extraInfo = userExtraTaoBaoInfoService.getByUid(uid); String relationId = null; if (extraInfo != null && extraInfo.getRelationId() != null && extraInfo.getRelationValid() != null && extraInfo.getRelationValid() == true) { relationId = extraInfo.getRelationId(); } TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(uid, 42472466270L, relationId); // 淘宝口令 data.put("token", taoBaoLink.getTaoToken()); // 商品图片链接 data.put("shareLink", TbImgUtil.getTBSizeImg(taoBaoLink.getGoods().getPictUrl(), 500)); // 帮助链接 data.put("helpLink","https://img.alicdn.com/imgextra/i1/2200656425615/O1CN01dst9HQ1rLiPN7xmhD_!!0-item_pic.jpg"); // 分享提醒 data.put("notifyDesc", configService.get("goods_share_notify")); } else if (cid == 2) { // 推荐好货 List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>(); List<GoodsPicture> listImgs = dynamicInfo.getImgs(); for (GoodsPicture goodsPicture: listImgs) { TaoBaoGoodsBriefExtra goods = goodsPicture.getGoods(); listGoods.add(goods); } String title = ""; List<ClientTextStyleVO> listTitle = dynamicInfo.getTitle(); for (ClientTextStyleVO textStyleVO: listTitle) { title = title + textStyleVO.getContent(); } if (title.length() > 250) { title = title.substring(0, 250); } // 文字内容 data.put("title", JsonUtil.getApiCommonGson().toJson(dynamicInfo.getTitle())); // 分享奖金 ClientTextStyleVO desc = dynamicInfo.getDesc(); String content = desc.getContent(); int index = content.indexOf("¥"); data.put("shareMoney", new BigDecimal(content.substring(index + 1, content.length()))); // 分享文字图标 String notifyImgs = configService.get("goods_share_notify_imgs"); JSONArray array = JSONArray.fromObject(notifyImgs); int p = (int) (array.size() * Math.random()); if (p < array.size()) { data.put("notifyPicture", array.optString(p)); } ShareInfoDTO shareInfo = userShareGoodsRecordService.saveShareRecord(uid, ShareSourceTypeEnum.activity, title, listGoods); data.put("shareId", shareInfo.getShareId()); data.put("clickUrl", shareInfo.getCodeUrl()); // 商品图片链接 data.put("shareLink", shareInfo.getShareUrl()); // 帮助链接 data.put("helpLink","https://img.alicdn.com/imgextra/i1/2200656425615/O1CN01dst9HQ1rLiPN7xmhD_!!0-item_pic.jpg"); // 分享提醒 data.put("notifyDesc", configService.get("goods_share_notify")); } else if (cid == 4) { // 邀请分享 String inviteCode = null; UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); if (userInfoExtra != null && !StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) { inviteCode = userInfoExtra.getInviteCode(); } else { out.print(JsonUtil.loadFalseResult(9001, "邀请码未激活")); return; } Integer showType = dynamicInfo.getShowType(); if (showType == 0) { // 无图分享 String shortLink = UserUtil.getInviteShortLink(uid); List<ClientTextStyleVO> listTitle = dynamicInfo.getTitle(); for (ClientTextStyleVO textStyleVO: listTitle) { String content = textStyleVO.getContent(); content = content.replace("邀请码", inviteCode); content = content.replace("邀请链接", shortLink); textStyleVO .setContent(content); } data.put("title", listTitle); } else { // 有图分享 // 1、邀请规则 BusinessSystem system = new BusinessSystem(); system.setCreatetime(java.lang.System.currentTimeMillis()); system.setPlatform(1); system.setId(4L); String key = "inviteRules"; // key值 SystemClientParams values = systemClientParamsService.getSystemClientParamsBySystemAndKey(system, key); String valueN = values.getValue(); String valueBr = valueN.replace("\n", "<br><br>"); data.put("inviteRules", valueBr); // 邀请链接 String shortLink = HttpUtil.getShortLink("http://" + Constant.wxGZConfig.getLoginHost() + "/" + Constant.systemCommonConfig.getProjectName() + "/client/threeShareNew?uid=" + uid); data.put("inviteLink", shortLink); // 邀请图片 List<GoodsPicture> imgs = dynamicInfo.getImgs(); String imgLink = spreadUserImgService.getUserSpreadImg(uid, imgs.get(0).getUrl()); data.put("imgLink", imgLink); } } out.print(JsonUtil.loadTrueResult(data)); } catch (Exception e) { out.print(JsonUtil.loadFalseResult("分享记录失败")); e.printStackTrace(); } } } fanli/src/main/java/com/yeshi/fanli/dao/mybatis/activity/ActivityUserMapper.java
@@ -2,21 +2,20 @@ import java.util.List; import org.apache.ibatis.annotations.Param; import com.yeshi.fanli.dao.BaseMapper; import com.yeshi.fanli.entity.bus.activity.ActivityUser; public interface ActivityUserMapper { public interface ActivityUserMapper extends BaseMapper<ActivityUser>{ int deleteByPrimaryKey(Long id); int insert(ActivityUser record); int insertSelective(ActivityUser record); ActivityUser selectByPrimaryKey(Long id); int updateByPrimaryKeySelective(ActivityUser record); int updateByPrimaryKey(ActivityUser record); List<ActivityUser> selectList(); /** * 随机抽取 * @param count * @return */ List<ActivityUser> listRand(@Param("count") int count); } fanli/src/main/java/com/yeshi/fanli/dao/mybatis/taobao/dataoke/DaTaoKeDetailMapper.java
@@ -47,6 +47,16 @@ * @return */ List<DaTaoKeDetail> listByIds(@Param("idList") List<Long> idList); /** * 取出最新的id * * @param ids * @return */ List<DaTaoKeDetail> getGoodsNotInList(@Param("cid") Long cid, @Param("list") List<Long> list, @Param("count") int count); /** * 根据标题查询 fanli/src/main/java/com/yeshi/fanli/mapping/activity/ActivityUserMapper.xml
@@ -24,7 +24,11 @@ </select> <select id="listRand" resultMap="BaseResultMap"> SELECT <include refid="Base_Column_List" /> FROM yeshi_ec_activity_user ORDER BY RAND() LIMIT #{count} </select> <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from yeshi_ec_activity_user where au_id = #{id,jdbcType=BIGINT} fanli/src/main/java/com/yeshi/fanli/mapping/taobao/dataoke/DaTaoKeDetailMapper.xml
@@ -69,6 +69,18 @@ </foreach> </select> <select id="getGoodsNotInList" resultMap="BaseResultMap"> SELECT * FROM `yeshi_ec_goods_dataoke` d WHERE 1=1 <if test="cid != null"> AND d.`cid` = #{cid} </if> <if test="list != null"> AND d.`id` NOT IN <foreach collection="list" item="item" open="(" close=")" separator=",">#{item}</foreach> </if> ORDER BY RAND() LIMIT #{count} </select> <select id="listByDtitle" resultMap="BaseResultMap" fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailServiceImpl.java
@@ -116,7 +116,7 @@ public List<DaTaoKeDetail> listByIds(List<Long> idList) { return daTaoKeDetailMapper.listByIds(idList); } @Override public List<DaTaoKeDetail> listByDtitle(String dtitle) { return daTaoKeDetailMapper.listByDtitle(dtitle.trim()); @@ -133,4 +133,11 @@ return daTaoKeDetailMapper.countSearchByTitleWithCid(title, (cid == null || cid == 0 ? null : cid)); } @Override public List<DaTaoKeDetail> getGoodsNotInList(Long cid, List<Long> listId,int count) { return daTaoKeDetailMapper.getGoodsNotInList(cid, listId,count); } } fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsServiceImpl.java
@@ -10,6 +10,7 @@ import org.springframework.stereotype.Service; import com.yeshi.fanli.dao.mybatis.taobao.dataoke.DaTaoKeDetailMapper; import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail; import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService; import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsService; @@ -19,6 +20,9 @@ @Service public class DaTaoKeGoodsServiceImpl implements DaTaoKeGoodsService { @Resource private DaTaoKeDetailMapper daTaoKeDetailMapper; @Resource private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService; @@ -100,5 +104,10 @@ } else return list; } @Override public List<DaTaoKeDetail> getGoodsNotInList(Long cid, List<Long> listId,int count) { return daTaoKeDetailMapper.getGoodsNotInList(cid, listId,count); } } fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserShareGoodsRecordServiceImpl.java
@@ -26,6 +26,7 @@ import com.google.gson.GsonBuilder; import com.yeshi.fanli.dao.mybatis.UserInfoMapper; import com.yeshi.fanli.dao.mybatis.share.UserShareGoodsRecordMapper; import com.yeshi.fanli.dto.share.ShareInfoDTO; import com.yeshi.fanli.entity.bus.share.UserShareGoodsGroup; import com.yeshi.fanli.entity.bus.share.UserShareGoodsRecord; import com.yeshi.fanli.entity.bus.share.UserShareGoodsRecord.ShareSourceTypeEnum; @@ -298,6 +299,59 @@ return map; } /** * 保存分享记录 * * @param userShareGoodsRecord * 分享记录: uid、picture、source 为必输入 * @throws UserShareGoodsRecordException */ @Override public ShareInfoDTO saveShareRecord(Long uid, ShareSourceTypeEnum source, String title, List<TaoBaoGoodsBrief> listGoods) throws UserShareGoodsRecordException { if (listGoods == null || listGoods.size() == 0) { throw new UserShareGoodsRecordException(1, "分享商品数量不足"); } if (uid == null) { throw new UserShareGoodsRecordException(1, "用户ID不能为空"); } if (source == null) { throw new UserShareGoodsRecordException(1, "分享来源不能为空"); } UserShareGoodsRecord userShareGoodsRecord = new UserShareGoodsRecord(); userShareGoodsRecord.setUid(uid); userShareGoodsRecord.setSource(source); userShareGoodsRecord.setTitle(title); // 取一个商品图片作为主图 userShareGoodsRecord.setPicture(listGoods.get(0).getPictUrl()); Date date = new Date(); userShareGoodsRecord.setShareState(0); // 初始未分享 userShareGoodsRecord.setCreateTime(date); userShareGoodsRecord.setUpdateTime(date); userShareGoodsRecordMapper.insertSelective(userShareGoodsRecord); Map<String, Object> map = new HashMap<String, Object>(); // 多个商品分享 FileUploadResult loadResult = multipleGoodsShare(userShareGoodsRecord, listGoods); ShareInfoDTO shareInfo = new ShareInfoDTO(); shareInfo.setMd5(loadResult.getMd5()); shareInfo.setCodeUrl(loadResult.getUrl()); shareInfo.setShareId(userShareGoodsRecord.getId()); shareInfo.setShareUrl(getShareUrl(userShareGoodsRecord)); return shareInfo; } /** * 单个商品分享生成记录 @@ -412,6 +466,22 @@ return shareImg; } public String getShareUrl (UserShareGoodsRecord shareRecord) { Long uid = shareRecord.getUid(); Long shareId = shareRecord.getId(); String source = shareRecord.getSource().name(); String url = String.format("http://%s/share_mushGoods.html?uid=%s&shareId=%s&source=%s", configService.getH5Host(), AESUtil.encrypt(uid + "", Constant.UIDAESKEY), shareId + "", source + ""); String shortLink = HttpUtil.getShortLink(url); if (!StringUtil.isNullOrEmpty(shortLink)) { url = shortLink; } return url; } /** * 生成分享图 * fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/dataoke/DaTaoKeGoodsDetailService.java
@@ -49,7 +49,7 @@ */ public List<DaTaoKeDetail> listByIds(List<Long> idList); /** /** * 根据标题查询 * * @param dtitle @@ -79,4 +79,14 @@ */ public Long countSearchByTitleWithCid(String title, Long cid); /* * 查询一类全部 * @param cid * @param listId * @param count * @return */ public List<DaTaoKeDetail> getGoodsNotInList(Long cid, List<Long> listId, int count); } fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/dataoke/DaTaoKeGoodsService.java
@@ -30,4 +30,8 @@ */ public List<DaTaoKeDetail> getCurrentHotSalesRankGoodsList(); public List<DaTaoKeDetail> getGoodsNotInList(Long cid, List<Long> listId, int count); } fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserShareGoodsRecordService.java
@@ -5,6 +5,7 @@ import net.sf.json.JSONObject; import com.yeshi.fanli.dto.share.ShareInfoDTO; import com.yeshi.fanli.entity.bus.share.UserShareGoodsRecord; import com.yeshi.fanli.entity.bus.share.UserShareGoodsRecord.ShareSourceTypeEnum; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; @@ -123,4 +124,16 @@ */ public long countShareRecordByUid(Long uid); /** * 多商品分享 * @param uid * @param source * @param title * @param listGoods * @return * @throws UserShareGoodsRecordException */ public ShareInfoDTO saveShareRecord(Long uid, ShareSourceTypeEnum source, String title, List<TaoBaoGoodsBrief> listGoods) throws UserShareGoodsRecordException; }