yangdamao 2 years ago
parent
commit
7f79b9d05c

+ 11 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonGoodsController.java

@@ -14,6 +14,7 @@ import com.zhongzheng.modules.goods.vo.GoodsVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -53,6 +54,16 @@ public class CommonGoodsController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 查询分销商品列表
+     */
+    @ApiOperation("查询分销商品列表")
+    @GetMapping("/share/list/{time}")
+    public AjaxResult<List<GoodsVo>> getShareList(@PathVariable("time") Long time) {
+        List<GoodsVo> list = iGoodsService.getShareList(time);
+        return AjaxResult.success(list);
+    }
+
     /**
      * 导出商品列表
      */

+ 45 - 21
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/WxLoginService.java

@@ -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");

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java

@@ -111,4 +111,6 @@ public interface IGoodsService extends IService<Goods> {
 	boolean goodsBatchCopyIncrementTenant(GoodsBatchCopyTenantBo bo);
 
 	boolean goodsBatchCopyDisposeTenant();
+
+    List<GoodsVo> getShareList(Long time);
 }

+ 27 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java

@@ -1220,8 +1220,14 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
         Long newTenantId = bo.getTenantId();
         List<Goods> oldGoodsList = goodsList.stream().map(x -> BeanUtil.toBean(x, Goods.class)).collect(Collectors.toList());
         for (Goods goods : goodsList) {
-            goods.setGoodsId(null);
-            goods.setTeacherId(newTenantId);
+            //判断商品是否存在
+            GoodsVo newGoods = this.baseMapper.queryGoodsByIdTenant(goods.getGoodsId(),newTenantId);
+            if (ObjectUtils.isNull(newGoods)){
+                //不存在(新增)
+                goods.setGoodsId(null);
+                goods.setTeacherId(newTenantId);
+            }
+
             //供应方ID
             if (ObjectUtil.isNotNull(goods.getSupplyId())){
                 PaySupply supply = iPaySupplyService.getById(goods.getSupplyId());
@@ -1236,6 +1242,8 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
                         iPaySupplyService.save(supply);
                         goods.setSupplyId(supply.getSupplyId());
                     }
+
+
                 }
             }
 
@@ -2905,6 +2913,23 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
         return true;
     }
 
+    private final String KEY_PREFIX = "GOODS_SHARE";
+    @Override
+    public List<GoodsVo> getShareList(Long time) {
+        String key = KEY_PREFIX+time;
+        Object obj = redisCache.getCacheObjectNoTenant(key);
+        if (ObjectUtils.isNull(obj)){
+            throw new CustomException("商品信息异常,请重新生成二维码!");
+        }
+        List<Long> goodsIds = Arrays.asList(obj.toString().split(",")).stream().map(x -> Long.valueOf(x)).collect(Collectors.toList());
+        //获取商品列表
+        List<Goods> goodsList = listByIds(goodsIds);
+        if (CollectionUtils.isEmpty(goodsList)){
+            throw new CustomException("商品信息获取异常");
+        }
+        return goodsList.stream().map(item -> BeanUtil.toBean(item,GoodsVo.class)).collect(Collectors.toList());
+    }
+
     private Long getNewId(Long oldId, Integer type){
         if (ObjectUtils.isNull(oldId) || oldId <= 0L){
             return null;

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/bo/WxShareGoodsBo.java

@@ -6,6 +6,8 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 
+import java.util.List;
+
 @ApiModel("微信商品分享")
 @Data
 @NoArgsConstructor
@@ -21,4 +23,10 @@ public class WxShareGoodsBo {
 
     @ApiModelProperty("活动分享码")
     private String shareActivityCode;
+
+    @ApiModelProperty("商品IDs:逗号隔开")
+    private String goodsIds;
+
+    @ApiModelProperty("活动结束时间")
+    private Long endTime;
 }