Bladeren bron

fix 业务下单校验

he2802 3 jaren geleden
bovenliggende
commit
182b0543b9

+ 6 - 0
zhongzheng-admin/src/main/resources/application-dev.yml

@@ -113,6 +113,12 @@ wx:
     scanLogin:
         host: https://testm.xyyxt.net/
 
+wisdomExamRoom:
+    mchid: 10001
+    appid: ZZ-YXT-GZ-20220820-0001
+    app_secret: mt70O1s/Xd5LwuH7yHLpj9R+tKUn5j9vTnCvmgBnbJDA11Hpl7+q4lEZliqPAjN+YHPn9bGmHkAbw5XwhhMiYg==
+    host: JhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsic2hhbmp1LXJlc291cmNlIl0sI
+
 certificate:
     host: http://192.168.1.38:8000/
 

+ 102 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/wisdom/SignatureUtil.java

@@ -0,0 +1,102 @@
+package com.zhongzheng.common.utils.wisdom;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+import javax.xml.bind.DatatypeConverter;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.security.SignatureException;
+import java.util.*;
+
+public class SignatureUtil {
+    /**
+     * 校验签名是否有效
+     *
+     * @param paramMap
+     * @param key
+     * @param signature
+     * @return
+     */
+    public static boolean isSignatureValid(Map<String, Object> paramMap, String key,
+                                           String signature) throws SignatureException {
+        String mySignature = null;
+        try {
+            mySignature = createSignature(paramMap, key);
+        } catch (SignatureException e) {
+            e.printStackTrace();// should not happen
+            throw e;
+        }
+        if (mySignature.equals(signature)) {
+            return true;
+        }
+        return false;
+    }
+    /**
+     * 创建签名字符串
+     *
+     * @param paramMap
+     * @param key
+     * @return
+     * @throws SignatureException
+     */
+    public static String createSignature(Map<String, Object> paramMap, String key)
+            throws SignatureException {
+        String data = getParamString(paramMap);
+        try {
+            SecretKeySpec signingKey = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA512");
+            Mac mac = Mac.getInstance("HmacSHA512");
+            mac.init(signingKey);
+            byte[] rawHmac = mac.doFinal(data.getBytes("UTF-8"));
+            return DatatypeConverter.printBase64Binary(rawHmac);
+            // Base64 only valid in Java8
+            //return new String(Base64.getEncoder().encode(rawHmac));
+        } catch (NoSuchAlgorithmException e) {
+            throw new SignatureException("no such algorithm.", e);
+        } catch (InvalidKeyException e) {
+            throw new SignatureException("invalid key.", e);
+        } catch (UnsupportedEncodingException e) {
+            throw new SignatureException("unsupported encoding.", e);
+        }
+    }
+    public static String getParamString(Map<String, Object> paramMap) {
+        if (paramMap == null || paramMap.isEmpty()) {
+            return null;
+        }
+        StringBuilder buffer = new StringBuilder();
+        List<String> keys = new ArrayList<String>(paramMap.keySet());
+        Collections.sort(keys);
+        for (String key : keys) {
+            if (paramMap.get(key) != null){
+                String value = paramMap.get(key).toString();
+                if (StringUtils.isNotBlank(value)) {
+                    try {
+                        value = URLEncoder.encode(value, "UTF-8");
+                    } catch (UnsupportedEncodingException e) {
+                        value = null;
+                    }
+                }
+                buffer.append("&").append(key).append("=").append(value);
+            }
+        }
+        return buffer.substring(1);
+    }
+    public static void main(String[] args) throws Exception {
+        //参数
+        Map<String, Object> paramMap = new HashMap<>();
+        //appid
+        String key = "12563";
+        paramMap.put("a", 10);
+        paramMap.put("z", "30");
+        //服务端返回的签名
+        String signature = createSignature(paramMap, key);
+        System.out.println("sign:"+ signature);
+        boolean signatureValid = isSignatureValid(paramMap, key, signature);
+        System.out.println("valid:"+ signatureValid);
+        paramMap.put("l", "30");
+        boolean signatureValid1 = isSignatureValid(paramMap, key, signature);
+        System.out.println("valid1:"+ signatureValid1);
+    }
+}

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamSiteAddBo.java

@@ -36,4 +36,7 @@ public class ExamSiteAddBo {
     /** 修改时间 */
     @ApiModelProperty("修改时间")
     private Long updateTime;
+    /** 1云学堂 2智慧考场 */
+    @ApiModelProperty("1云学堂 2智慧考场")
+    private Integer from;
 }

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamSiteEditBo.java

@@ -41,5 +41,7 @@ public class ExamSiteEditBo {
     @ApiModelProperty("修改时间")
     private Long updateTime;
 
-
+    /** 1云学堂 2智慧考场 */
+    @ApiModelProperty("1云学堂 2智慧考场")
+    private Integer from;
 }

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamSiteQueryBo.java

@@ -49,6 +49,8 @@ public class ExamSiteQueryBo extends BaseEntity {
 	/** 1启用 0关闭 -1删除 */
 	@ApiModelProperty("1启用 0关闭 -1删除")
 	private List<Integer> status;
-
+	/** 1云学堂 2智慧考场 */
+	@ApiModelProperty("1云学堂 2智慧考场")
+	private Integer from;
 
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/domain/ExamSite.java

@@ -40,4 +40,6 @@ private static final long serialVersionUID=1L;
     /** 修改时间 */
     @TableField(fill = FieldFill.INSERT_UPDATE)
     private Long updateTime;
+    /** 1云学堂 2智慧考场 */
+    private Integer from;
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamSiteServiceImpl.java

@@ -71,7 +71,6 @@ public class ExamSiteServiceImpl extends ServiceImpl<ExamSiteMapper, ExamSite> i
 
     @Override
     public Boolean insertByAddBo(ExamSiteAddBo bo) {
-
         //判断地点是否重复
         ExamSite add = BeanUtil.toBean(bo, ExamSite.class);
         LambdaQueryWrapper<ExamSite> lqw = Wrappers.lambdaQuery();
@@ -85,6 +84,7 @@ public class ExamSiteServiceImpl extends ServiceImpl<ExamSiteMapper, ExamSite> i
         add.setCode(ServletUtils.getEncoded("DD"));
         add.setCreateTime(DateUtils.getNowTime());
         add.setUpdateTime(DateUtils.getNowTime());
+        add.setFrom(1);
         return this.save(add);
     }
 

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/vo/ExamSiteVo.java

@@ -40,4 +40,8 @@ public class ExamSiteVo {
 	@Excel(name = "1启用 0关闭 -1删除")
 	@ApiModelProperty("1启用 0关闭 -1删除")
 	private Integer status;
+	/** 1云学堂 2智慧考场 */
+	@Excel(name = "1云学堂 2智慧考场")
+	@ApiModelProperty("1云学堂 2智慧考场")
+	private Integer from;
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderUserCheckBuyBo.java

@@ -26,6 +26,9 @@ public class OrderUserCheckBuyBo {
     @ApiModelProperty("身份证号")
     private String idCard;
 
+    @ApiModelProperty("手机号码")
+    private String tel;
+
     @ApiModelProperty("班级ID")
     private Long gradeId;
 

+ 3 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -228,16 +228,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     public List<OrderUserCheckBuyBo> userCheckBuyList(List<OrderUserCheckBuyBo> list) {
         for(OrderUserCheckBuyBo bo : list){
             bo.setBuy(false);
-            if(Validator.isEmpty(bo.getIdCard())||Validator.isEmpty(bo.getGradeId())||Validator.isEmpty(bo.getGoodsId())){
+            if(Validator.isEmpty(bo.getTel())||Validator.isEmpty(bo.getGradeId())||Validator.isEmpty(bo.getGoodsId())){
                 bo.setMsg("参数缺失");
                 continue;
             }
             //订单商品
             Goods goods = iGoodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getGoodsId, bo.getGoodsId()));
             User user = iUserService.getOne(new LambdaQueryWrapper<User>()
-                    .eq(User::getIdCard,bo.getIdCard()).last("limit 1"));
+                    .eq(User::getTelphone,bo.getTel()).last("limit 1"));
             if(Validator.isNull(user)){
-                bo.setMsg("该身份证用户不存在");
+                bo.setMsg("该手机号码用户不存在");
                 continue;
             }
             OrderGoodsQueryBo orderGoodsQueryBo = new OrderGoodsQueryBo();

+ 12 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/wisdom/service/IWisdomService.java

@@ -0,0 +1,12 @@
+package com.zhongzheng.modules.wisdom.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.polyv.domain.PolyvVideo;
+import com.zhongzheng.modules.user.bo.UserQueryBo;
+
+import java.text.ParseException;
+
+
+public interface IWisdomService {
+    void authorization();
+}

+ 143 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/wisdom/service/impl/WisdomServiceImpl.java

@@ -0,0 +1,143 @@
+package com.zhongzheng.modules.wisdom.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.lang.Validator;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhongzheng.common.core.domain.entity.SysUser;
+import com.zhongzheng.common.core.redis.RedisCache;
+import com.zhongzheng.common.exception.CustomException;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.common.utils.http.HttpUtils;
+import com.zhongzheng.modules.alisms.vo.ResultBean;
+import com.zhongzheng.modules.base.service.IProfileTpService;
+import com.zhongzheng.modules.base.vo.ProfileTpVo;
+import com.zhongzheng.modules.course.bo.CourseChapterSectionQueryBo;
+import com.zhongzheng.modules.course.bo.CourseMenuQueryBo;
+import com.zhongzheng.modules.course.bo.CourseModuleChapterQueryBo;
+import com.zhongzheng.modules.course.bo.CourseSectionQueryBo;
+import com.zhongzheng.modules.course.domain.CourseSection;
+import com.zhongzheng.modules.course.domain.CourseSubject;
+import com.zhongzheng.modules.course.service.*;
+import com.zhongzheng.modules.course.vo.CourseChapterSectionVo;
+import com.zhongzheng.modules.course.vo.CourseMenuVo;
+import com.zhongzheng.modules.course.vo.CourseModuleChapterVo;
+import com.zhongzheng.modules.course.vo.CourseSectionVo;
+import com.zhongzheng.modules.exam.bo.ExamApplyQueryBo;
+import com.zhongzheng.modules.exam.bo.ExamBeforeQueryBo;
+import com.zhongzheng.modules.exam.domain.ExamApply;
+import com.zhongzheng.modules.exam.domain.ExamBefore;
+import com.zhongzheng.modules.exam.domain.ExamNumber;
+import com.zhongzheng.modules.exam.mapper.ExamApplyMapper;
+import com.zhongzheng.modules.exam.mapper.ExamBeforeMapper;
+import com.zhongzheng.modules.exam.mapper.ExamNumberMapper;
+import com.zhongzheng.modules.exam.vo.ExamApplyVo;
+import com.zhongzheng.modules.exam.vo.ExamBeforeVo;
+import com.zhongzheng.modules.exam.vo.ExamUserApplyVo;
+import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
+import com.zhongzheng.modules.goods.service.IGoodsCourseService;
+import com.zhongzheng.modules.goods.service.IGoodsService;
+import com.zhongzheng.modules.goods.vo.GoodsCourseVo;
+import com.zhongzheng.modules.goods.vo.GoodsVo;
+import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
+import com.zhongzheng.modules.grade.domain.ClassGradeUserTemp;
+import com.zhongzheng.modules.grade.domain.UserPeriod;
+import com.zhongzheng.modules.grade.domain.UserPeriodStatus;
+import com.zhongzheng.modules.grade.service.*;
+import com.zhongzheng.modules.grade.vo.ClassGradeUserGoodsVo;
+import com.zhongzheng.modules.grade.vo.ClassGradeVo;
+import com.zhongzheng.modules.grade.vo.ClassPeriodVo;
+import com.zhongzheng.modules.inform.bo.InformQueryBo;
+import com.zhongzheng.modules.inform.bo.InformSysUserAddBo;
+import com.zhongzheng.modules.inform.bo.InformUserAddBo;
+import com.zhongzheng.modules.inform.domain.InformUser;
+import com.zhongzheng.modules.inform.service.IInformRemindService;
+import com.zhongzheng.modules.inform.service.IInformService;
+import com.zhongzheng.modules.inform.service.IInformSysUserService;
+import com.zhongzheng.modules.inform.service.IInformUserService;
+import com.zhongzheng.modules.inform.vo.InformRemindVo;
+import com.zhongzheng.modules.inform.vo.InformVo;
+import com.zhongzheng.modules.mock.domain.MockApply;
+import com.zhongzheng.modules.mock.domain.MockMajorSubject;
+import com.zhongzheng.modules.mock.domain.MockMajorSubjectTime;
+import com.zhongzheng.modules.mock.service.IMockApplyService;
+import com.zhongzheng.modules.mock.service.IMockMajorSubjectGoodsService;
+import com.zhongzheng.modules.mock.service.IMockMajorSubjectService;
+import com.zhongzheng.modules.mock.service.IMockMajorSubjectTimeService;
+import com.zhongzheng.modules.mock.vo.MockApplyVo;
+import com.zhongzheng.modules.order.bo.OrderQueryBo;
+import com.zhongzheng.modules.order.domain.Order;
+import com.zhongzheng.modules.order.mapper.OrderGoodsMapper;
+import com.zhongzheng.modules.order.mapper.OrderMapper;
+import com.zhongzheng.modules.order.service.IOrderBusinessService;
+import com.zhongzheng.modules.order.service.IOrderGoodsService;
+import com.zhongzheng.modules.order.service.IOrderService;
+import com.zhongzheng.modules.order.vo.OrderGoodsVo;
+import com.zhongzheng.modules.order.vo.OrderListVo;
+import com.zhongzheng.modules.polyv.bo.PolyvLiveQueryBo;
+import com.zhongzheng.modules.polyv.domain.PolyvVideo;
+import com.zhongzheng.modules.polyv.mapper.PolyvVideoMapper;
+import com.zhongzheng.modules.polyv.service.IPolyvLiveService;
+import com.zhongzheng.modules.schedule.service.IScheduleService;
+import com.zhongzheng.modules.system.service.ISysUserService;
+import com.zhongzheng.modules.user.bo.*;
+import com.zhongzheng.modules.user.domain.*;
+import com.zhongzheng.modules.user.mapper.UserPlanMapper;
+import com.zhongzheng.modules.user.mapper.UserStudyRecordMapper;
+import com.zhongzheng.modules.user.service.*;
+import com.zhongzheng.modules.user.vo.*;
+import com.zhongzheng.modules.wisdom.service.IWisdomService;
+import com.zhongzheng.modules.wx.service.IWxLoginService;
+import net.polyv.live.v1.entity.channel.playback.LiveChannelVideoListResponse;
+import net.polyv.live.v1.entity.channel.playback.LiveListChannelVideoLibraryResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+
+@Service
+public class WisdomServiceImpl  implements IWisdomService {
+
+    @Value("${wisdomExamRoom.mchid}")
+    private String mchid;
+
+    @Value("${wisdomExamRoom.appid}")
+    private String appid;
+
+    @Value("${wisdomExamRoom.app_secret}")
+    private String app_secret;
+
+    @Value("${wisdomExamRoom.host}")
+    private String host;
+
+    private String authorizationUrl = "/exam/api/authorization";
+
+    private String getRoomListUrl = "/exam/api/rooms";
+
+    @Autowired
+    private RedisCache redisCache;
+
+    @Override
+    public void authorization() {
+        String url = host + authorizationUrl;
+        Map<String, String> paramMap = new HashMap<>();
+        paramMap.put("mchid",mchid);
+        paramMap.put("appid",appid);
+        paramMap.put("app_secret",app_secret);
+        try{
+            String result = HttpUtils.postFormBody(url,paramMap);
+        }catch (Exception e){
+
+        }
+    }
+}

+ 1 - 0
zhongzheng-system/src/main/resources/mapper/modules/exam/ExamSiteMapper.xml

@@ -12,6 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="status" column="status"/>
         <result property="createTime" column="create_time"/>
         <result property="updateTime" column="update_time"/>
+        <result property="from" column="from"/>
     </resultMap>