fanli/src/main/java/com/yeshi/fanli/aspect/SignValidateAspect.java
@@ -134,7 +134,7 @@ data.put("msg", "签名错误"); out.print(data); out.close(); LogHelper.error("签名错误:" + getHttpServletParams(request)); LogHelper.error("签名错误:" + request.getRequestURI() + "-" + getHttpServletParams(request)); return null; } } @@ -221,4 +221,24 @@ } } public static boolean signIsRight(JSONObject json) { List<String> list = new ArrayList<>(); for (Iterator<String> its = json.keySet().iterator(); its.hasNext();) { String key = its.next(); list.add(key + "=" + json.optString(key)); } Collections.sort(list); String str = ""; for (String st : list) { str += st + "&"; } String sign = StringUtil.Md5(str + KEY); if (sign.equalsIgnoreCase(json.optString("sign"))) { return true; } else { return false; } } } fanli/src/main/java/com/yeshi/fanli/controller/client/v1/BrandController.java
@@ -25,6 +25,7 @@ import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; import com.yeshi.fanli.service.inter.brand.BrandClassService; import com.yeshi.fanli.service.inter.brand.BrandClassShopService; import com.yeshi.fanli.service.inter.brand.BrandInfoRecordService; import com.yeshi.fanli.service.inter.brand.TaoBaoShopHistoryService; import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService; import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; @@ -33,6 +34,7 @@ import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.ThreadUtil; import com.yeshi.fanli.util.VersionUtil; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; @@ -64,6 +66,10 @@ @Resource private DaTaoKeGoodsService daTaoKeGoodsService; @Resource private BrandInfoRecordService brandInfoRecordService; /** * 获取品牌分类 @@ -105,6 +111,22 @@ out.print(JsonUtil.loadFalseResult("未选择数据")); return; } // 新版删除 if ("ios".equalsIgnoreCase(acceptData.getPlatform())) { if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) { brandInfoRecordService.deleteRecord(Arrays.asList(ids.split(",")), uid, acceptData.getDevice()); out.print(JsonUtil.loadTrueResult("删除成功")); return; } } else { if (VersionUtil.greaterThan_2_0_2(acceptData.getPlatform(), acceptData.getVersion())) { brandInfoRecordService.deleteRecord(Arrays.asList(ids.split(",")), uid, acceptData.getDevice()); out.print(JsonUtil.loadTrueResult("删除成功")); return; } } taoBaoShopHistoryService.deleteHistory(Arrays.asList(ids.split(",")), uid, acceptData.getDevice()); out.print(JsonUtil.loadTrueResult("删除成功")); } catch (Exception e) { fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java
@@ -8,6 +8,7 @@ import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,11 +26,17 @@ import com.yeshi.fanli.entity.bus.user.UserInfoExtra; import com.yeshi.fanli.entity.bus.user.UserInviteSeparate; import com.yeshi.fanli.entity.bus.user.WeiXinUser; import com.yeshi.fanli.entity.system.BusinessSystem; import com.yeshi.fanli.entity.system.SystemClientParams; import com.yeshi.fanli.exception.user.UserAccountException; import com.yeshi.fanli.exception.user.UserInfoExtraException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.config.SpreadImgService; import com.yeshi.fanli.service.inter.config.SystemClientParamsService; import com.yeshi.fanli.service.inter.msg.UserSystemMsgService; import com.yeshi.fanli.service.inter.push.PushService; import com.yeshi.fanli.service.inter.user.SpreadUserImgService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.service.inter.user.UserInviteSeparateService; @@ -79,6 +86,17 @@ @Resource private UserInviteSeparateService userInviteSeparateService; @Resource private SpreadImgService spreadImgService; @Resource private SpreadUserImgService spreadUserImgService; @Resource private SystemClientParamsService systemClientParamsService; /** * 邀请码验证 @@ -543,4 +561,51 @@ out.print(JsonUtil.loadFalseResult("提醒失败")); } } @RequestMapping(value = "/getInviteImgs", method = RequestMethod.POST) public void getInviteImgs(AcceptData acceptData, Long uid, Integer page, PrintWriter out, HttpServletRequest request) { if (uid == null || uid <= 0) { out.print(JsonUtil.loadFalseResult("用户未登录")); return; } if (page == null || page < 1) page = 1; try { String inviteCode = userInfoExtraService.getInviteCodeByUid(uid); if (StringUtil.isNullOrEmpty(inviteCode)) { out.print(JsonUtil.loadFalseResult("邀请码未激活")); return; } int count = 3; if (page > 1) count = Integer.MAX_VALUE; // 邀请图 List<String> imgList = spreadUserImgService.getUserSpreadImgToPage(uid, page, count, request); // 邀请规则 BusinessSystem system = new BusinessSystem(); system.setId(4L); system.setPlatform(1); system.setCreatetime(java.lang.System.currentTimeMillis()); SystemClientParams values = systemClientParamsService.getSystemClientParamsBySystemAndKey(system, "inviteRules"); JSONObject data = new JSONObject(); data.put("count", spreadImgService.countAll()); data.put("inviteCode", inviteCode); data.put("helpLink", configService.get("invite_help_link")); data.put("inviteRules", values.getValue().replace("\n", "<br><br>")); data.put("imgUrlList", JsonUtil.getSimpleGsonWithDate().toJson(imgList)); data.put("inviteLink", "http://a.app.qq.com/o/simple.jsp?pkgname=com.yeshi.ec.rebate"); out.print(JsonUtil.loadTrue(0, JsonUtil.getSimpleGson().toJson(data), "成功")); } catch (Exception e) { LogHelper.errorDetailInfo(e); out.print(JsonUtil.loadFalseResult("邀请信息获取失败")); } } } fanli/src/main/java/com/yeshi/fanli/dao/mybatis/user/SpreadImgMapper.java
@@ -15,6 +15,7 @@ */ List<SpreadImg> listAll(); long countAll(); List<SpreadImg> listQuery(@Param("start") long start, @Param("count") int count, @Param("url") String url); fanli/src/main/java/com/yeshi/fanli/mapping/user/SpreadImgMapper.xml
@@ -20,6 +20,10 @@ <include refid="Base_Column_List" /> from yeshi_ec_spread_img </select> <select id="countAll" resultType="Long"> SELECT IFNULL(COUNT(si_id),0) FROM yeshi_ec_spread_img </select> <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from yeshi_ec_spread_img where si_id = #{id,jdbcType=BIGINT} fanli/src/main/java/com/yeshi/fanli/service/impl/brand/BrandInfoRecordServiceImpl.java
@@ -24,7 +24,7 @@ @Override @Transactional public void deleteRecord(List<Long> list, Long uid, String device) { public void deleteRecord(List<String> list, Long uid, String device) { if (list == null || list.size() == 0) return; @@ -35,8 +35,8 @@ if (uid != null && uid > 0) device = null; for (long brandId: list) { brandInfoRecordMapper.updateState(brandId, uid, device); for (String brandId: list) { brandInfoRecordMapper.updateState(Long.parseLong(brandId), uid, device); } } fanli/src/main/java/com/yeshi/fanli/service/impl/config/SpreadImgServiceImpl.java
@@ -104,4 +104,13 @@ return spreadImgMapper.countQuery(key); } @Override public List<SpreadImg> listAll() { return spreadImgMapper.listAll(); } @Override public long countAll() { return spreadImgMapper.countAll(); } } fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackGiveRecordServiceImpl.java
@@ -134,13 +134,14 @@ throw new RedPackGiveRecordException(1, "余额不足"); Date nowDate = new Date(); Date endTime = DateUtil.plusDayDate(Constant.TOKEN_DAYS, new Date()); // 赠送记录 RedPackGiveRecord giveRecord = new RedPackGiveRecord(); giveRecord.setAmount(amount); giveRecord.setGiveUid(uid); giveRecord.setState(RedPackGiveRecord.STATE_INIT); giveRecord.setGiveTime(nowDate); giveRecord.setEndTime(DateUtil.plusDayDate(Constant.GIVE_DAYS, new Date())); giveRecord.setEndTime(endTime); redPackGiveRecordMapper.insertSelective(giveRecord); // 口令记录 @@ -149,7 +150,7 @@ tokenRecord.setIdentify(giveRecord.getId() + ""); tokenRecord.setType(TokenTypeEnum.redPack); tokenRecord.setStartTime(nowDate); tokenRecord.setEndTime(DateUtil.plusDayDate(Constant.TOKEN_DAYS, new Date())); tokenRecord.setEndTime(endTime); tokenRecord.setState(0); tokenRecordService.insertSelective(tokenRecord); @@ -178,13 +179,13 @@ msg.setUid(uid); Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.redPackGiftDrawback, msg); // 延迟一分钟 message.setStartDeliverTime(endTime.getTime() + 1000 * 60); try { producer.send(message); } catch (Exception e) { throw new RedPackGiveRecordException(1, "红包创建失败"); } return tips; } fanli/src/main/java/com/yeshi/fanli/service/impl/user/SpreadUserImgServiceImpl.java
@@ -23,6 +23,8 @@ 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; @@ -48,6 +50,12 @@ @Resource private UserInfoExtraService userInfoExtraService; @Resource private SpreadImgService spreadImgService; @Override public void addUserInviteImg(Long uid, String imgUrl) { @@ -238,6 +246,169 @@ 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) { // 查询是否存在 fanli/src/main/java/com/yeshi/fanli/service/impl/user/TokenRecordServiceImpl.java
@@ -634,10 +634,6 @@ return; Date date = new Date(); for (TokenRecord tokenRecord: list) { Integer state = tokenRecord.getState(); if (state != null && state == 0) continue; tokenRecord.setState(1); tokenRecord.setUpdateTime(date); tokenRecordMapper.updateByPrimaryKeySelective(tokenRecord); fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java
@@ -2075,12 +2075,13 @@ } Date nowDate = new Date(); Date endTime = DateUtil.plusDayDate(Constant.GIVE_DAYS, nowDate); // 插入赠送记录 UserSystemCouponGiveRecord giveRecord = new UserSystemCouponGiveRecord(); giveRecord.setCouponId(id); giveRecord.setGiveUid(uid); giveRecord.setGiveTime(nowDate); giveRecord.setEndTime(DateUtil.plusDayDate(Constant.GIVE_DAYS, nowDate)); giveRecord.setEndTime(endTime); userSystemCouponGiveRecordService.insertSelective(giveRecord); // 创建记录 @@ -2089,7 +2090,7 @@ tokenRecord.setIdentify(giveRecord.getId() + ""); tokenRecord.setType(tokenTypeEnum); tokenRecord.setStartTime(nowDate); tokenRecord.setEndTime(DateUtil.plusDayDate(Constant.TOKEN_DAYS, nowDate)); tokenRecord.setEndTime(endTime); tokenRecord.setState(0); tokenRecordService.insertSelective(tokenRecord); @@ -2125,6 +2126,8 @@ msg.setUserSystemCouponId(id); msg.setCouponType(type.name()); Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.systemCouponDrawback, msg); // 延迟一分钟 message.setStartDeliverTime(endTime.getTime() + 1000 * 60); try { producer.send(message); } catch (Exception e) { @@ -2317,7 +2320,7 @@ } @Override @RequestSerializableByKeyService(key = "#id") @RequestSerializableByKeyService(key = "#couponId") @Transactional(rollbackFor = Exception.class) public void sendBackByGiveId(Long couponId) { if (couponId == null) fanli/src/main/java/com/yeshi/fanli/service/inter/brand/BrandInfoRecordService.java
@@ -38,6 +38,6 @@ * @param uid * @param device */ public void deleteRecord(List<Long> list, Long uid, String device); public void deleteRecord(List<String> list, Long uid, String device); } fanli/src/main/java/com/yeshi/fanli/service/inter/config/SpreadImgService.java
@@ -18,4 +18,9 @@ public SpreadImg getInviteSpreadImg(long id); public void saveObject(MultipartFile file, SpreadImg record) throws Exception; long countAll(); List<SpreadImg> listAll(); } fanli/src/main/java/com/yeshi/fanli/service/inter/user/SpreadUserImgService.java
@@ -76,4 +76,15 @@ public String getInviteImgToGreet(String bgImg, Long uid, String portrait, String inviteCode, String content, Date date) throws Exception; /** * 获取用户要求图列表 * @param uid * @param page * @param count * @param request * @return */ public List<String> getUserSpreadImgToPage(Long uid, int page, int count, HttpServletRequest request); } fanli/src/test/java/org/fanli/MyBatisProduce.java
@@ -2,9 +2,7 @@ import org.junit.Test; import org.yeshi.utils.mybatis.ColumnParseUtil; import org.yeshi.utils.mybatis.MyBatisMapperUtil; import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl; import com.yeshi.fanli.entity.order.CommonOrder; //@Ignore @@ -12,10 +10,9 @@ @Test public void test3() { MyBatisMapperUtil.createMapper(AdActivityVersionControl.class); } @Test // @Test public void test1() { ColumnParseUtil.parseColumn(CommonOrder.class, "D:/workspace/fanli/fanli-server/fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml");