|
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
@@ -22,6 +23,7 @@ import com.zhongzheng.common.utils.http.HttpUtils;
|
|
|
import com.zhongzheng.common.utils.ip.IpUtils;
|
|
|
import com.zhongzheng.modules.alisms.service.IAliSmsService;
|
|
|
import com.zhongzheng.modules.course.bo.SectionWatchPerBo;
|
|
|
+import com.zhongzheng.modules.goods.domain.Goods;
|
|
|
import com.zhongzheng.modules.goods.service.IGoodsService;
|
|
|
import com.zhongzheng.modules.goods.vo.GoodsVo;
|
|
|
import com.zhongzheng.modules.system.service.ISysConfigService;
|
|
@@ -44,6 +46,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import java.io.ByteArrayOutputStream;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 登录校验方法
|
|
@@ -153,6 +156,8 @@ public class WxLoginService implements IWxLoginService {
|
|
|
@Autowired
|
|
|
private ISysConfigService configService;
|
|
|
|
|
|
+ private final String KEY_PREFIX = "GOODS_SHARE";
|
|
|
+
|
|
|
public void initData(){
|
|
|
appid = configService.selectConfigByKey("wx.small.appid");
|
|
|
appsrcret = configService.selectConfigByKey("wx.small.appsecret");
|
|
@@ -997,39 +1002,58 @@ public class WxLoginService implements IWxLoginService {
|
|
|
@Override
|
|
|
public String shareGoodsCode(WxShareGoodsBo bo) {
|
|
|
initData();
|
|
|
- GoodsVo goodsVo = iGoodsService.queryById(bo.getGoodsId());
|
|
|
- if(Validator.isEmpty(goodsVo)){
|
|
|
- throw new CustomException("商品ID错误");
|
|
|
- }
|
|
|
StringBuilder sceneParam = new StringBuilder();
|
|
|
String pageUrl = "";
|
|
|
-
|
|
|
String wxGzhAccessToken = getWxSmallAccessToken();
|
|
|
String param = String.format(small_wxEnCodeParam, wxGzhAccessToken);
|
|
|
String url = small_wxEnCodeUrl + "?" + param;
|
|
|
JSONObject obj = new JSONObject();
|
|
|
|
|
|
- if(goodsVo.getGoodsType()==2){
|
|
|
- pageUrl = "pages2/bank/detail";
|
|
|
- sceneParam.append("id=").append(goodsVo.getGoodsId());
|
|
|
- if (ObjectUtils.isNotNull(bo.getShareCode())){
|
|
|
- sceneParam.append("&").append("sc=").append(bo.getShareCode());
|
|
|
+ if (ObjectUtils.isNotNull(bo.getGoodsId()) && bo.getGoodsId() > 0){
|
|
|
+ //单个商品
|
|
|
+ GoodsVo goodsVo = iGoodsService.queryById(bo.getGoodsId());
|
|
|
+ if(Validator.isEmpty(goodsVo)){
|
|
|
+ throw new CustomException("商品ID错误");
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(bo.getShareActivityCode())){
|
|
|
- sceneParam.append("&").append("sac=").append(bo.getShareActivityCode());
|
|
|
+ if(goodsVo.getGoodsType()==2){
|
|
|
+ pageUrl = "pages2/bank/detail";
|
|
|
+ sceneParam.append("id=").append(goodsVo.getGoodsId());
|
|
|
+ if (ObjectUtils.isNotNull(bo.getShareCode())){
|
|
|
+ sceneParam.append("&").append("sc=").append(bo.getShareCode());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(bo.getShareActivityCode())){
|
|
|
+ sceneParam.append("&").append("sac=").append(bo.getShareActivityCode());
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- if(goodsVo.getGoodsType()==1||goodsVo.getGoodsType()==6){
|
|
|
- pageUrl = "pages3/course/detail";
|
|
|
- sceneParam.append("id=").append(goodsVo.getGoodsId()).append("&");
|
|
|
- sceneParam.append("gt=").append(goodsVo.getGoodsType());
|
|
|
- if (ObjectUtils.isNotNull(bo.getShareCode())){
|
|
|
- sceneParam.append("&").append("sc=").append(bo.getShareCode());
|
|
|
+ if(goodsVo.getGoodsType()==1||goodsVo.getGoodsType()==6){
|
|
|
+ pageUrl = "pages3/course/detail";
|
|
|
+ sceneParam.append("id=").append(goodsVo.getGoodsId()).append("&");
|
|
|
+ sceneParam.append("gt=").append(goodsVo.getGoodsType());
|
|
|
+ if (ObjectUtils.isNotNull(bo.getShareCode())){
|
|
|
+ sceneParam.append("&").append("sc=").append(bo.getShareCode());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(bo.getShareActivityCode())){
|
|
|
+ sceneParam.append("&").append("sac=").append(bo.getShareActivityCode());
|
|
|
+ }
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(bo.getShareActivityCode())){
|
|
|
- sceneParam.append("&").append("sac=").append(bo.getShareActivityCode());
|
|
|
+ } else if (StringUtils.isNotBlank(bo.getGoodsIds())){
|
|
|
+ //多商品
|
|
|
+ List<Long> goodsIds = Arrays.asList(bo.getGoodsIds().split(",")).stream().map(x -> Long.valueOf(x)).collect(Collectors.toList());
|
|
|
+ //校验商品
|
|
|
+ List<Goods> goodsList = iGoodsService.listByIds(goodsIds);
|
|
|
+ if (CollectionUtils.isEmpty(goodsList)){
|
|
|
+ throw new CustomException("商品信息获取异常【ids:"+bo.getGoodsIds()+"】");
|
|
|
}
|
|
|
+ //缓存ids
|
|
|
+ Long nowTime = DateUtils.getNowTime();
|
|
|
+ String key = KEY_PREFIX+nowTime;
|
|
|
+ Long time = bo.getEndTime() - nowTime;
|
|
|
+ redisCache.setCacheObjectTenant(key,bo.getGoodsIds(),time.intValue(),TimeUnit.SECONDS);
|
|
|
+ //页面路径和参数
|
|
|
+ pageUrl = "/pages5/scan/recommen";
|
|
|
+ sceneParam.append("sharekey=").append(nowTime);
|
|
|
}
|
|
|
+
|
|
|
obj.put("page", pageUrl);
|
|
|
obj.put("scene",sceneParam.toString());
|
|
|
obj.put("env_version","trial");
|