Przeglądaj źródła

submit:旧系统商品学习对接

yangdamao 3 lat temu
rodzic
commit
aff6815980
16 zmienionych plików z 272 dodań i 4 usunięć
  1. 12 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  2. 8 4
      zhongzheng-api/src/main/java/com/zhongzheng/controller/user/LoginController.java
  3. 13 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/redis/RedisCache.java
  4. 1 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/config/SecurityConfig.java
  5. 30 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java
  6. 39 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsStudyUrlBo.java
  7. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsMapper.java
  8. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java
  9. 51 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java
  10. 23 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/UserOrderGoodsVo.java
  11. 24 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserAppTelphoneLoginBo.java
  12. 17 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserPhoneBo.java
  13. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserMapper.java
  14. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserService.java
  15. 26 0
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml
  16. 10 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserMapper.xml

+ 12 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java

@@ -16,6 +16,7 @@ import com.zhongzheng.framework.config.ServerConfig;
 import com.zhongzheng.framework.web.service.WxLoginService;
 import com.zhongzheng.modules.course.vo.CourseMenuVo;
 import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
+import com.zhongzheng.modules.goods.bo.GoodsStudyUrlBo;
 import com.zhongzheng.modules.goods.bo.UserGoodsListBo;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.GoodsJzsVo;
@@ -223,6 +224,17 @@ public class CommonController
         return AjaxResult.success(voList);
     }
 
+    @ApiOperation("旧系统获取商品学习中心路径")
+    @PostMapping("common/get/goods/studyUrl")
+    public AjaxResult getGoodsStudyUrl(@RequestBody GoodsStudyUrlBo bo)
+    {
+//        if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){
+//            return AjaxResult.error("签名错误");
+//        }
+        String studyUrl = iGoodsService.getGoodsStudyUrl(bo);
+        return AjaxResult.success(studyUrl);
+    }
+
     @ApiOperation("批量查询官方班级人数")
     @PostMapping("common/free/batch/officialGradeCount")
     public AjaxResult batchOfficialGradeCount(@RequestBody ClassGradeBatchQueryBo bo)

+ 8 - 4
zhongzheng-api/src/main/java/com/zhongzheng/controller/user/LoginController.java

@@ -2,10 +2,7 @@ package com.zhongzheng.controller.user;
 
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
-import com.zhongzheng.modules.user.bo.UserAppAccountLoginBo;
-import com.zhongzheng.modules.user.bo.UserAppForgetBo;
-import com.zhongzheng.modules.user.bo.UserAppRegisterBo;
-import com.zhongzheng.modules.user.bo.UserAppSmsLoginBo;
+import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.service.IUserService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -60,4 +57,11 @@ public class LoginController extends BaseController {
         Map<String,Object> map = iUserService.accountLogin(bo);
         return AjaxResult.success(map);
     }
+
+    @ApiOperation("手机号码自动登入")
+    @PostMapping("/telphone_login")
+    public AjaxResult telphone_login(@RequestBody UserAppTelphoneLoginBo bo) {
+        Map<String,Object> map = iUserService.telphone_login(bo);
+        return AjaxResult.success(map);
+    }
 }

+ 13 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/core/redis/RedisCache.java

@@ -113,6 +113,19 @@ public class RedisCache
         return operation.get(unionKey);
     }
 
+    /**
+     * 获得缓存的基本对象。
+     *
+     * @param key 缓存键值
+     * @return 缓存键值对应的数据
+     */
+    public <T> T getCacheObjectNoTenant(final String key)
+    {
+        ValueOperations<String, T> operation = redisTemplate.opsForValue();
+        return operation.get(key);
+    }
+
+
     /**
      * 删除单个对象
      *

+ 1 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/config/SecurityConfig.java

@@ -126,6 +126,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/common/jzs/**").anonymous()
                 .antMatchers("/common/rollback/period").anonymous()
                 .antMatchers("/common/get/goods").anonymous()
+                .antMatchers("/common/get/goods/studyUrl").anonymous()
                 .antMatchers("/common/free/**").anonymous()
                 .antMatchers("/common/download**").anonymous()
                 .antMatchers("/common/download/resource**").anonymous()

+ 30 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -3,7 +3,9 @@ package com.zhongzheng.framework.web.service;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.lang.Validator;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -919,6 +921,34 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         return false;
     }
 
+    @Override
+    public User queryUserByTelphoneTenant(String telphone,Long tenantId) {
+        return baseMapper.queryUserByTelphoneTenant(telphone,tenantId);
+    }
+
+    @Override
+    public Map<String, Object> telphone_login(UserAppTelphoneLoginBo bo) {
+        Object cacheObject = redisCache.getCacheObjectNoTenant(bo.getSign());
+        if (ObjectUtil.isNull(cacheObject)){
+            throw new CustomException("该账号不存在!");
+        }
+        UserPhoneBo phoneBo = JSONObject.parseObject(cacheObject.toString(), UserPhoneBo.class);
+        if(Validator.isEmpty(phoneBo.getTelphone())){
+            throw new CustomException("账号不能为空");
+        }
+        User user = baseMapper.queryUserByTelphoneTenant(phoneBo.getTelphone(), phoneBo.getTenantId());
+        if(Validator.isEmpty(user)){
+            throw new CustomException("该账号不存在");
+        }
+        ClientLoginUser loginUser = new ClientLoginUser();
+        loginUser.setUser(user);
+        Map<String,Object> map = new HashMap<>();
+        map.put(Constants.TOKEN,wxTokenService.createToken(loginUser));
+        map.put("user_account",user.getUserAccount());
+        map.put("full_info",Validator.isEmpty(user.getIdCard())?false:true); //是否完善身份信息
+        return map;
+    }
+
     private Long findSubjectId(String subject){
         if(subject!=null){
             String key = "SUB_"+subject;

+ 39 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsStudyUrlBo.java

@@ -0,0 +1,39 @@
+package com.zhongzheng.modules.goods.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2022年12月26日 13:51
+ */
+@Data
+public class GoodsStudyUrlBo implements Serializable {
+
+    @ApiModelProperty("商品ID")
+    @NotBlank(message = "商品ID不能为空")
+    private Long goodsId;
+
+    @ApiModelProperty("用户手机号码")
+    @NotBlank(message = "用户手机号码不能为空")
+    private String telphone;
+
+    @ApiModelProperty("当前时间戳")
+    @NotBlank(message = "当前时间戳不能为空")
+    private Long stamp;
+
+    @ApiModelProperty("签名")
+    @NotBlank(message = "签名不能为空")
+    private String sign;
+
+    @ApiModelProperty("跳转端:1 PC端,2 H5")
+    @NotBlank(message = "跳转端口不能为空")
+    private Integer skipPort;
+
+    @ApiModelProperty("企业ID")
+    @NotBlank(message = "企业ID")
+    private Long tenantId;
+}

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsMapper.java

@@ -10,6 +10,7 @@ import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.goods.vo.UserGoodsListVo;
+import com.zhongzheng.modules.goods.vo.UserOrderGoodsVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -45,4 +46,10 @@ public interface GoodsMapper extends BaseMapper<Goods> {
 
     @InterceptorIgnore(tenantLine = "true")
     List<UserGoodsListVo> getOrderGoodsListByUser(Long userId);
+
+    @InterceptorIgnore(tenantLine = "true")
+    UserOrderGoodsVo countUserOrderGoods(@Param("goodsId") Long goodsId, @Param("userId") Long userId,@Param("tenantId")Long tenantId);
+
+    @InterceptorIgnore(tenantLine = "true")
+    GoodsVo queryGoodsByIdTenant(@Param("goodsId") Long goodsId,@Param("tenantId")Long tenantId);
 }

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

@@ -100,4 +100,6 @@ public interface IGoodsService extends IService<Goods> {
     boolean cancelSpecTemplate(GoodsSpecTempEditBo bo);
 
     List<UserGoodsListVo> getUserGoodsList(UserGoodsListBo bo);
+
+    String getGoodsStudyUrl(GoodsStudyUrlBo bo);
 }

+ 51 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java

@@ -1,13 +1,16 @@
 package com.zhongzheng.modules.goods.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.zhongzheng.common.annotation.DataScope;
+import com.zhongzheng.common.core.redis.RedisCache;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
@@ -34,10 +37,12 @@ import com.zhongzheng.modules.order.service.IOrderGoodsService;
 import com.zhongzheng.modules.system.domain.SysConfig;
 import com.zhongzheng.modules.system.service.ISysConfigService;
 import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
+import com.zhongzheng.modules.user.bo.UserPhoneBo;
 import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.service.IUserStudyRecordService;
 import com.zhongzheng.modules.user.vo.SubjectStudyRecordVo;
+import com.zhongzheng.modules.user.vo.UserVo;
 import net.polyv.common.v1.util.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -49,6 +54,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
@@ -123,6 +129,9 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
     @Autowired
     private ISysConfigService iSysConfigService;
 
+    @Autowired
+    private RedisCache redisCache;
+
     @Override
     public GoodsVo queryById(Long goodsId) {
         Goods db = this.baseMapper.selectById(goodsId);
@@ -941,6 +950,48 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
         return voList;
     }
 
+    @Override
+    public String getGoodsStudyUrl(GoodsStudyUrlBo bo) {
+        String url = "";
+        String domain = "http://192.168.1.222:6002/";
+        GoodsVo goods = baseMapper.queryGoodsByIdTenant(bo.getGoodsId(),bo.getTenantId());
+        if (ObjectUtils.isNull(goods)){
+            throw new CustomException("商品不存在!");
+        }
+        User user = iUserService.queryUserByTelphoneTenant(bo.getTelphone(),bo.getTenantId());
+        if (ObjectUtils.isNull(user)){
+            throw new CustomException("用户不存在!");
+        }
+        //校验当前商品是否用户购买
+        UserOrderGoodsVo vo = baseMapper.countUserOrderGoods(bo.getGoodsId(),user.getUserId(),bo.getTenantId());
+        if (ObjectUtils.isNull(vo)){
+            throw new CustomException("用户没有购买该商品!");
+        }
+        //当前时间戳
+        Long nowTime = DateUtils.getNowTime();
+        if (bo.getSkipPort() == 1){
+            //PC端
+            if (goods.getGoodsType() == 2){
+                //题库
+                url = String.format("%sperson-center/my-bank/index?goodsId=%s&skipPort=%s",domain,vo.getGoodsId(),nowTime);
+            }else if (goods.getGoodsType() == 6){
+                //直播
+                url = String.format("%sperson-center/my-live?goodsId=%s&skipPort=%s",domain,vo.getGoodsId(),nowTime);
+            }else {
+                //视频
+                url = String.format("%smy-course-detail/%s?gradeId=%s&orderGoodsId=%s&skipPort=%s",domain,vo.getGoodsId(),vo.getGradeId(),vo.getOrderGoodsId(),nowTime);
+            }
+        }else {
+            //H5
+        }
+        UserPhoneBo phoneBo = new UserPhoneBo();
+        phoneBo.setTelphone(user.getTelphone());
+        phoneBo.setTenantId(bo.getTenantId());
+        //缓存用户手机号码 30分钟失效
+        redisCache.setCacheObject(nowTime.toString(), JSONObject.toJSONString(phoneBo),30, TimeUnit.MINUTES);
+        return url;
+    }
+
     /**
      * 获取商品规格模板列表
      *

+ 23 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/UserOrderGoodsVo.java

@@ -0,0 +1,23 @@
+package com.zhongzheng.modules.goods.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2022年12月26日 14:39
+ */
+@Data
+public class UserOrderGoodsVo implements Serializable {
+
+    @ApiModelProperty("订单商品ID")
+    private Long orderGoodsId;
+
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+
+    @ApiModelProperty("班级ID")
+    private Long gradeId;
+}

+ 24 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserAppTelphoneLoginBo.java

@@ -0,0 +1,24 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+
+/**
+ * 客户端用户编辑对象 user
+ *
+ * @author ruoyi
+ * @date 2021-06-08
+ */
+@Data
+@ApiModel("客户端用户手机号登录对象")
+public class UserAppTelphoneLoginBo {
+
+    @ApiModelProperty("标识")
+    @NotNull(message = "标识不能为空")
+    private String sign;
+
+}

+ 17 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserPhoneBo.java

@@ -0,0 +1,17 @@
+package com.zhongzheng.modules.user.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2022年12月26日 17:08
+ */
+@Data
+public class UserPhoneBo implements Serializable {
+
+    private String telphone;
+
+    private Long tenantId;
+}

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserMapper.java

@@ -1,5 +1,6 @@
 package com.zhongzheng.modules.user.mapper;
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.zhongzheng.modules.user.bo.RanKingUserQuery;
 import com.zhongzheng.modules.user.bo.UserQueryBo;
 import com.zhongzheng.modules.user.bo.UserStudyRecordQueryBo;
@@ -45,4 +46,7 @@ public interface UserMapper extends BaseMapper<User> {
     Long informSum(Long userId);
 
     Long orderSum(Long userId);
+
+    @InterceptorIgnore(tenantLine = "true")
+    User queryUserByTelphoneTenant(@Param("telphone") String telphone,@Param("tenantId")Long tenantId);
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserService.java

@@ -6,6 +6,7 @@ import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.vo.*;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
 import java.util.Collection;
@@ -113,4 +114,8 @@ public interface IUserService extends IService<User> {
 	List<UserIdCardBatchVo> batchUserId(List<UserIdCardAddBo> list);
 
 	boolean editShareActivityCode(UserEditBo bo);
+
+	User queryUserByTelphoneTenant(String telphone,Long tenantId);
+
+	Map<String, Object> telphone_login(UserAppTelphoneLoginBo bo);
 }

+ 26 - 0
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml

@@ -717,4 +717,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           AND og.refund_status !=2
     </select>
 
+    <select id="countUserOrderGoods" parameterType="Long" resultType="com.zhongzheng.modules.goods.vo.UserOrderGoodsVo">
+        SELECT
+            og.order_goods_id,
+            og.goods_id,
+            og.grade_id
+        FROM
+            `order` o
+                LEFT JOIN order_goods og ON o.order_sn = og.order_sn
+        WHERE
+            o.user_id = #{userId}
+          AND og.goods_id = #{goodsId}
+          AND og.pay_status IN ( 2, 3, 4 )
+          AND og.refund_status != 2
+          AND o.tenant_id = #{tenantId}
+          AND og.tenant_id = #{tenantId}
+    </select>
+
+    <select id="queryGoodsByIdTenant" parameterType="Long" resultType="com.zhongzheng.modules.goods.vo.GoodsVo">
+        SELECT
+            *
+        FROM
+            `goods`
+        WHERE
+            goods_id = #{goodsId} AND tenant_id = #{tenantId}
+    </select>
+
 </mapper>

+ 10 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserMapper.xml

@@ -418,4 +418,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           AND order_status =0
     </select>
 
+    <select id="queryUserByTelphoneTenant" parameterType="map" resultMap="UserResult">
+        SELECT
+            *
+        FROM
+            `user`
+        WHERE
+            telphone = #{telphone}
+          AND status = 1 AND tenant_id = #{tenantId}
+    </select>
+
 </mapper>