From e61108b9d44f0afc0c303db8914ebcc590c7013d Mon Sep 17 00:00:00 2001
From: yujian <yujian>
Date: 星期五, 19 四月 2019 18:12:50 +0800
Subject: [PATCH] 微信激活、绑定优化
---
fanli/src/main/java/com/yeshi/fanli/controller/client/ShareController.java | 457 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 443 insertions(+), 14 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/ShareController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/ShareController.java
index 34b292c..def96c7 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/ShareController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/ShareController.java
@@ -11,25 +11,46 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.HttpUtil;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.taobao.TbImgUtil;
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.user.UserExtraTaoBaoInfo;
import com.yeshi.fanli.entity.bus.user.UserInfo;
+import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoLink;
+import com.yeshi.fanli.entity.taobao.TaoKeAppInfo;
import com.yeshi.fanli.exception.ShareGoodsException;
+import com.yeshi.fanli.exception.goods.ShareGoodsTextTemplateException;
+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.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.UserExtraTaoBaoInfoService;
+import com.yeshi.fanli.service.inter.user.UserInfoService;
+import com.yeshi.fanli.service.inter.user.UserShareGoodsGroupService;
+import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService;
import com.yeshi.fanli.util.AESUtil;
import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.MoneyBigDecimalUtil;
+import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.TaoBaoConstant;
+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 net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@Controller(value = "ShareController1")
@@ -47,6 +68,30 @@
@Resource
private MonitorService monitorService;
+
+ @Resource
+ private UserShareGoodsRecordService userShareGoodsRecordService;
+
+ @Resource
+ private UserShareGoodsGroupService userShareGoodsGroupService;
+
+ @Resource
+ private CommonGoodsService commonGoodsService;
+
+ @Resource
+ private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
+
+ @Resource
+ private UserInfoService userInfoService;
+
+ @Resource
+ private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
+
+ @Resource
+ private RedisManager redisManager;
+
+ @Resource
+ private ShareGoodsTextTemplateService shareGoodsTextTemplateService;
// 鑾峰彇鍟嗗搧鍒嗕韩閾炬帴
@RequestMapping(value = "getGoodsShareUrl")
@@ -72,16 +117,27 @@
return;
}
+ UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
+ if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
+ out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
+ return;
+ }
+
if (auctionId == null || auctionId <= 0) {
out.print(JsonUtil.loadFalseResult(2, "鍟嗗搧ID涓嶈兘涓虹┖"));
return;
}
+ UserExtraTaoBaoInfo extraInfo = userExtraTaoBaoInfoService.getByUid(uid);
try {
- TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(uid, auctionId);
+ String relationId = null;
+ if (extraInfo != null && extraInfo.getRelationId() != null && extraInfo.getRelationValid() != null
+ && extraInfo.getRelationValid() == true)
+ relationId = extraInfo.getRelationId();
+ TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(uid, auctionId, relationId);
JSONObject data = new JSONObject();
- String url = String.format("http://%s%s?uid=%s&id=%s", configService.getH5Host(),
+ String url = String.format("http://%s%s?uid=%s&id=%s&appType=flq", configService.getH5Host(),
Constant.systemCommonConfig.getShareGoodsPagePath(), AESUtil.encrypt(uid + "", Constant.UIDAESKEY),
auctionId + "");
@@ -101,28 +157,41 @@
String shopType = taoBaoLink.getGoods().getUserType() == 0 ? "娣樺疂浠�" : "澶╃尗浠�";
if (StringUtil.isNullOrEmpty(taoBaoLink.getGoods().getCouponInfo())) {
- String text = configService.get("goods_share_text_nocoupon");
- shareText = text.replace("[鏍囬]", taoBaoLink.getGoods().getTitle()).replace("[鍦ㄥ敭浠穄",
- "楼" + taoBaoLink.getGoods().getZkPrice());
+ String text = shareGoodsTextTemplateService.getCommonTemplate(uid);
+ if (StringUtil.isNullOrEmpty(text))
+ text = configService.get("goods_share_text_nocoupon");
+ shareText = text.replace("{鏍囬}", taoBaoLink.getGoods().getTitle()).replace("{鍟嗗搧鍘熶环}",
+ MoneyBigDecimalUtil.getWithNoZera(taoBaoLink.getGoods().getZkPrice()) + "");
} else// 鏈夊埜
{
- String text = configService.get("goods_share_text_coupon");
- shareText = text.replace("[鏍囬]", taoBaoLink.getGoods().getTitle())
- .replace("[鍦ㄥ敭浠穄", "楼" + taoBaoLink.getGoods().getZkPrice())
- .replace("[鍒稿悗浠穄", "楼" + TaoBaoUtil.getAfterUseCouplePrice(taoBaoLink.getGoods()));
+ String text = shareGoodsTextTemplateService.geteCouponTemplate(uid);
+ if (StringUtil.isNullOrEmpty(text))
+ text = configService.get("goods_share_text_coupon");
+
+ shareText = text.replace("{鏍囬}", taoBaoLink.getGoods().getTitle())
+ .replace("{鍟嗗搧鍘熶环}", MoneyBigDecimalUtil.getWithNoZera(taoBaoLink.getGoods().getZkPrice()) + "")
+ .replace("{浼樻儬鍒搁潰棰潁",
+ MoneyBigDecimalUtil.getWithNoZera(taoBaoLink.getGoods().getCouponAmount()).toString())
+ .replace("{浼樻儬鍒镐环}", TaoBaoUtil.getAfterUseCouplePrice(taoBaoLink.getGoods()) + "");
}
- shareText = shareText.replace("[浠锋牸绫诲瀷]", shopType);
+ shareText = shareText.replace("{搴楅摵绫诲瀷}", shopType)
+ .replace("{鏈堥攢閲弣", TaoBaoUtil.getSaleCount(taoBaoLink.getGoods().getBiz30day()))
+ .replace("{棰嗗埜鐭摼}", shortLink).replace("{娣樺彛浠", taoBaoLink.getTaoToken());
data.put("shareText", shareText);
- String descText = shareText.replace(taoBaoLink.getGoods().getTitle() + "\r\n", "");
+ String descText = shareText.replace(taoBaoLink.getGoods().getTitle(), "").trim();
if (descText.startsWith("\\r\\n"))
descText = descText.substring(0);
data.put("descText", descText);
//
- data.put("notifyPicture", "");
- data.put("notifyDesc", "");
+ 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));
+ data.put("notifyDesc", configService.get("goods_share_notify"));
// 娣诲姞鍒嗕韩璁板綍
- BigDecimal rate = new BigDecimal(hongBaoManageService.get("hongbao_goods_proportion"));
+ BigDecimal rate = hongBaoManageService.getShareRate();
UserShareGoodsHistory history = new UserShareGoodsHistory();
history.setTkCode(taoBaoLink.getTaoToken());
history.setLink(taoBaoLink.getClickUrl());
@@ -139,6 +208,8 @@
history.setPictures(JsonUtil.getGson().toJson(imgList));
history.setUser(new UserInfo(uid));
history.setPostPicture(taoBaoLink.getGoods().getPictUrl());
+
+ data.put("shareMoney", "楼" + history.getHongbao().toString());
out.print(JsonUtil.loadTrueResult(data));
@@ -161,4 +232,362 @@
}
+ /**
+ * 鍒嗕韩璁板綍缁熻鍒楄〃
+ *
+ * @param acceptData
+ * @param page
+ * 鍒濆1
+ * @param uid
+ * @param source
+ * @param out
+ */
+ @RequestMapping(value = "getlistrecord", method = RequestMethod.POST)
+ public void getListRecord(AcceptData acceptData, Integer page, Long uid, String source, PrintWriter out) {
+
+ if (page == null || page < 1) {
+ out.print(JsonUtil.loadFalseResult("椤电爜涓嶆纭�"));
+ }
+
+ if (uid == null) {
+ out.print(JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
+ }
+
+ if ("all".equals(source)) {
+ source = null;// 鏌ヨ鍏ㄩ儴
+ }
+
+ try {
+ int pageSize = Constant.PAGE_SIZE;
+
+ JSONObject data = new JSONObject();
+ List<UserShareGoodsRecord> list = new ArrayList<UserShareGoodsRecord>();
+
+ long count = userShareGoodsRecordService.countQueryByUid(uid, source);
+
+ if (count > 0) {
+ list = userShareGoodsRecordService.getMyShareGoodsRecords((page - 1) * pageSize, pageSize, uid, source);
+ }
+
+ data.put("count", count);
+ data.put("result_list", list);
+ out.print(JsonUtil.loadTrueResult(data));
+
+ } catch (Exception e) {
+ out.print(JsonUtil.loadFalseResult("鍔犺浇澶辫触"));
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 鑾峰彇鍒嗕韩鍟嗗搧
+ *
+ * @param acceptData
+ * @param recordId
+ * @param out
+ */
+ @RequestMapping(value = "getrecordgoods", method = RequestMethod.POST)
+ public void getRecordGoods(AcceptData acceptData, Long recordId, PrintWriter out) {
+
+ if (recordId == null) {
+ out.print(JsonUtil.loadFalseResult("鍙傛暟涓嶆纭�"));
+ }
+
+ try {
+ JSONObject data = userShareGoodsRecordService.getGoodsGroup(recordId);
+ out.print(JsonUtil.loadTrueResult(data));
+ } catch (Exception e) {
+ out.print(JsonUtil.loadFalseResult("鍔犺浇澶辫触"));
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 鑾峰彇鍒嗕韩鍟嗗搧鍗曚釜缁熻淇℃伅
+ *
+ * @param acceptData
+ * @param groupId
+ * @param out
+ */
+ @RequestMapping(value = "getgoodsdata", method = RequestMethod.POST)
+ public void getGoodsData(AcceptData acceptData, Long groupId, PrintWriter out) {
+
+ if (groupId == null) {
+ out.print(JsonUtil.loadFalseResult("鍙傛暟涓嶆纭�"));
+ }
+
+ try {
+ UserShareGoodsGroup userShareGoodsGroup = userShareGoodsGroupService.selectByPrimaryKey(groupId);
+ if (userShareGoodsGroup != null) {
+ userShareGoodsGroup.setBrowseTime(null);
+ userShareGoodsGroup.setCreateTime(null);
+ userShareGoodsGroup.setUpdateTime(null);
+ userShareGoodsGroup.setRecordId(null);
+ }
+
+ JSONObject data = new JSONObject();
+ data.put("goodsData", userShareGoodsGroup);
+ out.print(JsonUtil.loadTrueResult(data));
+ } catch (Exception e) {
+ out.print(JsonUtil.loadFalseResult("鍔犺浇澶辫触"));
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 鍟嗗搧璇︽儏鍒嗕韩
+ *
+ * @param acceptData
+ * @param uid
+ * 鐢ㄦ埛id
+ * @param auctionId
+ * 鍟嗗搧id
+ * @param type
+ * 鍥剧墖鍒嗕韩绫诲瀷 鍗曞浘single 澶氬浘many
+ * @param out
+ */
+ @RequestMapping(value = "sharedetail", method = RequestMethod.POST)
+ public void shareDetail(AcceptData acceptData, Long uid, Long auctionId, String type, PrintWriter out) {
+ try {
+ userShareGoodsRecordService.saveDetail(uid, auctionId, type);
+ out.print(JsonUtil.loadTrueResult("鍒嗕韩鎴愬姛"));
+ } catch (UserShareGoodsRecordException e) {
+ out.print(JsonUtil.loadFalseResult(e.getMsg()));
+ e.printStackTrace();
+ } catch (Exception e) {
+ out.print(JsonUtil.loadFalseResult("鍔犺浇澶辫触"));
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 鏇存柊鍒嗕韩璁板綍
+ *
+ * @param acceptData
+ * @param shareId
+ * @param out
+ */
+ @RequestMapping(value = "updaterecord", method = RequestMethod.POST)
+ public void updateRecord(AcceptData acceptData, Long shareId, PrintWriter out) {
+ if (shareId == null) {
+ out.print(JsonUtil.loadFalseResult("鍙傛暟涓嶆纭�"));
+ }
+
+ try {
+ userShareGoodsRecordService.updateShareRecord(shareId);
+ out.print(JsonUtil.loadTrueResult(""));
+ } catch (UserShareGoodsRecordException e) {
+ out.print(JsonUtil.loadFalseResult(e.getMsg()));
+ e.printStackTrace();
+ } catch (Exception e) {
+ out.print(JsonUtil.loadFalseResult("鍔犺浇澶辫触"));
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 棰勮鍒嗕韩妯℃澘
+ *
+ * @param acceptData
+ * @param uid
+ * @param template
+ * @param goodsId
+ * @param hasCoupon
+ * @param out
+ */
+ @RequestMapping(value = "viewShareTextTemplate", method = RequestMethod.POST)
+ public void preViewShareTextTemplate(AcceptData acceptData, Long uid, String template, Long goodsId,
+ Boolean hasCoupon, PrintWriter out) {
+ if (uid == null) {
+ out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�"));
+ return;
+ }
+
+ if (goodsId == null) {
+ out.print(JsonUtil.loadFalseResult(3, "鍟嗗搧ID涓嶈兘涓虹┖"));
+ return;
+ }
+
+ TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(goodsId);
+ if (goods == null)
+ try {
+ goods = redisManager.getTaoBaoGoodsBrief(goodsId);
+ } catch (TaobaoGoodsDownException e) {
+ goods = null;
+ }
+
+ if (goods == null) {
+ out.print(JsonUtil.loadFalseResult(4, "鍟嗗搧宸蹭笅鏋�"));
+ return;
+ }
+
+ if (StringUtil.isNullOrEmpty(template))
+ template = getShareTemplate(uid, hasCoupon);
+
+ // 鏍¢獙鍒告ā鏉挎槸鍚︽纭�
+ if (hasCoupon) {
+ // 鏈夊埜鍟嗗搧
+ try {
+ shareGoodsTextTemplateService.isCouponTemplateRight(template);
+ } catch (ShareGoodsTextTemplateException e) {
+ out.print(JsonUtil.loadFalseResult(5, e.getMsg()));
+ return;
+ }
+
+ } else {
+ // 鏅�氬晢鍝�
+ try {
+ shareGoodsTextTemplateService.isCommonTemplateRight(template);
+ } catch (ShareGoodsTextTemplateException e) {
+ out.print(JsonUtil.loadFalseResult(5, e.getMsg()));
+ return;
+ }
+ }
+
+ // 鏌ヨ鏄惁鏈夊垎浜�
+ UserShareGoodsHistory userShareHistory = shareGoodsService.getShareGoodsHistory(uid, goods.getAuctionId());
+ String url = String.format("http://%s%s?uid=%s&id=%s&appType=flq", configService.getH5Host(),
+ Constant.systemCommonConfig.getShareGoodsPagePath(), AESUtil.encrypt(uid + "", Constant.UIDAESKEY),
+ goods.getAuctionId() + "");
+ String shortLink = HttpUtil.getShortLink(url);
+ String token = "";
+ if (userShareHistory != null) {
+ token = userShareHistory.getTkCode();
+ }
+
+ if (StringUtil.isNullOrEmpty(token)) {
+ TaoKeAppInfo app = new TaoKeAppInfo();
+ app.setAdzoneId(TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT.split("_")[3]);
+ app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
+ app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
+ app.setPid(TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT);
+ TaoBaoGoodsBrief goodsLink = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app);
+ if (goodsLink != null)
+ token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(),
+ StringUtil.isNullOrEmpty(goodsLink.getCouponLink()) ? goodsLink.getAuctionUrl()
+ : goodsLink.getCouponLink());
+ }
+ String content = shareGoodsTextTemplateService.createContentByTemplate(template, uid, goods, token, shortLink,
+ hasCoupon);
+ JSONObject data = new JSONObject();
+ data.put("content", content);
+ out.print(JsonUtil.loadTrueResult(data));
+ }
+
+ /**
+ * 淇濆瓨妯℃澘
+ *
+ * @param acceptData
+ * @param uid
+ * @param hasCoupon
+ * @param template
+ * @param out
+ */
+ @RequestMapping(value = "saveShareTextTemplate", method = RequestMethod.POST)
+ public void saveShareTextTemplate(AcceptData acceptData, Long uid, Boolean hasCoupon, String template,
+ PrintWriter out) {
+ if (StringUtil.isNullOrEmpty(template)) {
+ out.print(JsonUtil.loadFalseResult(1, "鍒嗕韩妯℃澘涓虹┖"));
+ return;
+ }
+ // 鏍¢獙鍒告ā鏉挎槸鍚︽纭�
+ if (hasCoupon) {
+ // 鏈夊埜鍟嗗搧
+ try {
+ shareGoodsTextTemplateService.isCouponTemplateRight(template);
+ shareGoodsTextTemplateService.saveCouponTemplate(uid, template);
+ out.print(JsonUtil.loadTrueResult(""));
+ } catch (ShareGoodsTextTemplateException e) {
+ out.print(JsonUtil.loadFalseResult(5, e.getMsg()));
+ return;
+ }
+
+ } else {
+ // 鏅�氬晢鍝�
+ try {
+ shareGoodsTextTemplateService.isCommonTemplateRight(template);
+ shareGoodsTextTemplateService.saveCommonTemplate(uid, template);
+ out.print(JsonUtil.loadTrueResult(""));
+ } catch (ShareGoodsTextTemplateException e) {
+ out.print(JsonUtil.loadFalseResult(5, e.getMsg()));
+ return;
+ }
+ }
+
+ }
+
+ /**
+ * 杩樺師妯℃澘
+ *
+ * @param acceptData
+ * @param uid
+ * @param hasCoupon
+ * -鏄惁鏈夊埜
+ * @param out
+ */
+ @RequestMapping(value = "resetShareTextTemplate", method = RequestMethod.POST)
+ public void resetShareTextTemplate(AcceptData acceptData, Long uid, Long goodsId, Boolean hasCoupon,
+ PrintWriter out) {
+ if (uid == null) {
+ out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�"));
+ return;
+ }
+ if (hasCoupon) {
+ shareGoodsTextTemplateService.resetCouponTemplate(uid);
+ } else {
+ shareGoodsTextTemplateService.resetCommonTemplate(uid);
+ }
+
+ if (goodsId != null) {
+ preViewShareTextTemplate(acceptData, uid, null, goodsId, hasCoupon, out);
+ return;
+ }
+
+ out.print(JsonUtil.loadTrueResult(""));
+ }
+
+ private String getShareTemplate(Long uid, boolean hasCoupon) {
+ if (hasCoupon) {
+ String template = shareGoodsTextTemplateService.geteCouponTemplate(uid);
+ if (StringUtil.isNullOrEmpty(template))
+ template = configService.get("goods_share_text_coupon");
+ return template;
+ } else {
+ String template = shareGoodsTextTemplateService.getCommonTemplate(uid);
+ if (StringUtil.isNullOrEmpty(template))
+ template = configService.get("goods_share_text_nocoupon");
+ return template;
+ }
+ }
+
+ /**
+ * 鑾峰彇鍒嗕韩妯℃澘
+ *
+ * @param acceptData
+ * @param uid
+ * @param hasCoupon
+ * @param out
+ */
+ @RequestMapping(value = "getShareTextTemplate", method = RequestMethod.POST)
+ public void getShareTextTemplate(AcceptData acceptData, Long uid, Boolean hasCoupon, PrintWriter out) {
+ if (uid == null) {
+ out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�"));
+ return;
+ }
+ JSONObject data = new JSONObject();
+ data.put("template", getShareTemplate(uid, hasCoupon));
+ out.print(JsonUtil.loadTrueResult(data));
+ }
+
+ /**
+ * 鑾峰彇鍒嗕韩妯℃澘缂栬緫瑙勫垯
+ *
+ * @param acceptData
+ * @param out
+ */
+ @RequestMapping(value = "getShareTextTemplateRules", method = RequestMethod.POST)
+ public void getShareTextTemplateRules(AcceptData acceptData, PrintWriter out) {
+ out.print(JsonUtil.loadTrueResult(configService.get("share_goods_template_rules")));
+ }
+
}
--
Gitblit v1.8.0