Explorar o código

fix 学时推送

he2802 %!s(int64=3) %!d(string=hai) anos
pai
achega
e09117c2d8

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseSectionServiceImpl.java

@@ -362,7 +362,7 @@ public class CourseSectionServiceImpl extends ServiceImpl<CourseSectionMapper, C
 
     public Long findProjectId(String project,Long eduId){
         if(project!=null){
-            String key = "PROJ_"+project;
+            String key = "PROJ_"+project+eduId;
             Long value = redisCache.getCacheObject(key);
             if(value!=null){
                 if(value==0L){
@@ -384,7 +384,7 @@ public class CourseSectionServiceImpl extends ServiceImpl<CourseSectionMapper, C
 
     public Long findBusinessId(String business,Long projectId){
         if(business!=null){
-            String key = "BUS_"+business;
+            String key = "BUS_"+business+projectId;
             Long value = redisCache.getCacheObject(key);
             if(value!=null){
                 if(value==0L){

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/domain/ClassGradeUser.java

@@ -58,5 +58,13 @@ private static final long serialVersionUID=1L;
     private Integer changeGrade;
     /** 学时通过时间 */
     private Long periodTime;
+    /** 官方信息推送结果 */
+    private String officialStatusMsg;
+    /** 学时推送结果 */
+    private String periodPlushMsg;
+    /** 官方信息推送时间 */
+    private Long officialStatusTime;
+    /** 学时推送时间 */
+    private Long periodPlushTime;
 }
 

+ 83 - 73
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -7,6 +7,7 @@ import cn.hutool.core.util.IdUtil;
 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.StringUtils;
 import com.zhongzheng.common.core.redis.RedisCache;
 import com.zhongzheng.common.core.redis.RedisLockEntity;
@@ -15,6 +16,7 @@ import com.zhongzheng.common.utils.AES;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.http.HttpUtils;
 import com.zhongzheng.common.utils.polyv.PolyvUtils;
+import com.zhongzheng.modules.course.domain.CourseBusiness;
 import com.zhongzheng.modules.course.vo.CourseChapterVo;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
@@ -29,6 +31,7 @@ import com.zhongzheng.modules.order.domain.OrderGoods;
 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.system.domain.SysTenant;
 import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
 import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.domain.UserPlan;
@@ -374,111 +377,118 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     public Boolean pushOfficialInfo(ClassGradeUserQueryBo bo){
         ClassGradeUserVo userVo = this.baseMapper.selectUser(bo);
         if(Validator.isEmpty(userVo)){
-            throw new CustomException("用户不存在");
+        //    throw new CustomException("用户不存在");
+            System.out.println("用户不存在");
+            return false;
         }
-        if(Validator.isEmpty(userVo.getInterfacePushId())||userVo.getInterfacePushId().equals(1L)){
-            throw new CustomException("没开通信息推送");
+        if(Validator.isEmpty(userVo.getInterfacePushId())||!userVo.getInterfacePushId().equals(1L)){
+        //    throw new CustomException("没开通信息推送");
+            System.out.println("没开通信息推送");
+            return false;
         }
-        if(Validator.isEmpty(userVo.getInterfacePushId())||userVo.getInterfacePushId().equals(1L)){
-            throw new CustomException("没开通信息推送");
-        }
-        if(Validator.isEmpty(userVo.getClassName())){
-            throw new CustomException("没配置班号");
+        if(Validator.isEmpty(userVo.getOfficialName())){
+        //    throw new CustomException("没配置班号");
+            System.out.println("没配置班号");
+            return false;
         }
         if(Validator.isEmpty(userVo.getClassStatus())||userVo.getClassStatus()!=1){
-            throw new CustomException("未开班");
+        //    throw new CustomException("未开班");
+            System.out.println("未开班");
+            return false;
+        }
+        OrderGoodsQueryBo goodsQueryBo = new OrderGoodsQueryBo();
+        goodsQueryBo.setUserId(bo.getUserId());
+        goodsQueryBo.setGradeId(userVo.getGradeId());
+        OrderGoodsVo orderGoods = iOrderGoodsService.gradeGoods(goodsQueryBo);
+        if(Validator.isEmpty(orderGoods)){
+        //    throw new CustomException("班级商品不存在");
+            return false;
         }
-
-
         Map<String, String> params =  new HashMap<>();
         params.put("zh",OFFICIALPUSH_INFOACCOUNT);
-        params.put("bh",userVo.getClassName());
+        params.put("bh",userVo.getOfficialName());
         params.put("xm",userVo.getRealName());
         params.put("sfz",userVo.getIdCard());
         params.put("dh",userVo.getTelPhone());
-        params.put("bmrq","2022-11-11");
+        params.put("bmrq",DateUtils.timestampToDate(orderGoods.getCreateTime()));
         String  dataTxt = params.get("zh")+params.get("bh")+params.get("xm")+params.get("sfz")+params.get("dh")+params.get("bmrq");
         System.out.println(dataTxt);
         String encrypted = dataSign(dataTxt,OFFICIALPUSH_TOKEN);
-        System.out.println(encrypted);
         params.put("SignMsg",encrypted);
         String respone = "";
         try{
          respone = HttpUtils.postFormBody(OFFICIALPUSH_INFOPATH,params);
-        System.out.println(respone);
+         String[] split = respone.split("\\|");
+        if (split.length < 2) {
+           return false;
+        }
+         if(split[0].equals("OK")){
+             //推送成功
+             LambdaUpdateWrapper<ClassGradeUser> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+             objectLambdaUpdateWrapper.eq(ClassGradeUser::getId, userVo.getId());
+             objectLambdaUpdateWrapper.set(ClassGradeUser::getOfficialStatus, 1);
+             objectLambdaUpdateWrapper.set(ClassGradeUser::getOfficialStatusMsg, respone);
+             objectLambdaUpdateWrapper.set(ClassGradeUser::getUpdateTime,DateUtils.getNowTime());
+             objectLambdaUpdateWrapper.set(ClassGradeUser::getOfficialStatusTime,DateUtils.getNowTime());
+             this.update(null, objectLambdaUpdateWrapper);
+             return true;
+         }else {
+             //推送失败
+             LambdaUpdateWrapper<ClassGradeUser> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+             objectLambdaUpdateWrapper.eq(ClassGradeUser::getId, userVo.getId());
+             objectLambdaUpdateWrapper.set(ClassGradeUser::getOfficialStatusMsg, respone);
+             objectLambdaUpdateWrapper.set(ClassGradeUser::getUpdateTime,DateUtils.getNowTime());
+             objectLambdaUpdateWrapper.set(ClassGradeUser::getOfficialStatusTime,DateUtils.getNowTime());
+             this.update(null, objectLambdaUpdateWrapper);
+             throw new CustomException("推送失败:"+respone);
+         }
         }catch (IOException e){
             throw new CustomException("请求错误");
         }
-        ClassGradeUserOfficialBo officialBo = new ClassGradeUserOfficialBo();
-        officialBo.setZh("peixunjigou");
-        officialBo.setBh(userVo.getClassName());
-        officialBo.setSfz(userVo.getIdCard());
-        officialBo.setXm(userVo.getRealName());
-        officialBo.setDh(userVo.getTelPhone());
-        officialBo.setBmrq("2022-2-15");
-
-        return true;
     }
 
 
 
-    public String dataSign(String SourceMsg,String PKey)
-    {
-        try{
-            String TempPKey;
-            TempPKey = getMD5(PKey,"gb2312");
-            TempPKey = SourceMsg + TempPKey;
-            TempPKey = getMD5(TempPKey,"gb2312");
-            return TempPKey;
-        }catch (NoSuchAlgorithmException e){
-            throw new CustomException("数据错误");
-        }catch (UnsupportedEncodingException exception){
-            throw new CustomException("数据错误");
-        }catch (Exception exception2){
-            throw new CustomException("数据错误");
-        }
-
-    }
-
-    public static String MD5Encode(String origin) {
-        StringBuffer sb = new StringBuffer();
+    public static String EncoderByMd5(String str) {
+        String result = "";
+        MessageDigest md5 = null;
         try {
-            MessageDigest md = MessageDigest.getInstance("MD5");
-            md.update(origin.getBytes("utf8"));
-            byte[] result = md.digest();
-            for (int i = 0; i < result.length; i++) {
-                //int val = result[i] & 0xff;
-                //sb.append(Integer.toHexString(val));
-                int val = (result[i] & 0x000000ff) | 0xffffff00;
-                sb.append(Integer.toHexString(val).substring(6));
-            }
-        } catch (Exception e) {
+            md5 = MessageDigest.getInstance("MD5");
+            // 这句是关键
+            md5.update(str.getBytes("gb2312"));
+        } catch (NoSuchAlgorithmException e) {
+            // TODO Auto-generated catch block
             e.printStackTrace();
+        } catch (UnsupportedEncodingException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        byte b[] = md5.digest();
+        int i;
+        StringBuffer buf = new StringBuffer("");
+        for (int offset = 0; offset < b.length; offset++) {
+            i = b[offset];
+            if (i < 0)
+                i += 256;
+            if (i < 16)
+                buf.append("0");
+            buf.append(Integer.toHexString(i));
         }
+        result = buf.toString();
 
-        return sb.toString();
+        return result;
     }
 
-    public  String getMD5(String str, String encoding) throws Exception {
-
-        MessageDigest md = MessageDigest.getInstance("MD5");
-
-        md.update(str.getBytes(encoding));
-
-        byte[] result = md.digest();
-
-        StringBuffer sb = new StringBuffer();
-
-        for (int i = 0; i < result.length; i++) {
-
-            int val = result[i] & 0xff;
-
-            sb.append(Integer.toHexString(val));
+    public String dataSign(String SourceMsg,String PKey)
+    {
+            String TempPKey;
+            TempPKey = EncoderByMd5(PKey);
+            TempPKey = SourceMsg + TempPKey;
+            TempPKey = EncoderByMd5(TempPKey);
+            return TempPKey;
+    }
 
-        }
-        return sb.toString();
 
-    }
 
     @Override
     public List<ClassPeriodStudentExportVo> exportPo(ClassGradeUserQueryBo bo) {

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeUserVo.java

@@ -87,4 +87,12 @@ public class ClassGradeUserVo {
 	@Excel(name = "官方信息推送接口")
 	@ApiModelProperty("官方信息推送接口")
 	private Long interfacePushId;
+	/** 官方信息推送结果 */
+	@Excel(name = "官方信息推送结果")
+	@ApiModelProperty("官方信息推送结果")
+	private String officialStatusMsg;
+	/** 学时推送结果 */
+	@Excel(name = "学时推送结果")
+	@ApiModelProperty("学时推送结果")
+	private String periodPlushMsg;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderGoodsQueryBo.java

@@ -94,5 +94,7 @@ public class OrderGoodsQueryBo extends BaseEntity {
 
 	@ApiModelProperty("用户ID")
 	private Long userId;
+	@ApiModelProperty("班级ID")
+	private Long gradeId;
 
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderGoodsMapper.java

@@ -29,4 +29,5 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
 
     List<OrderGoodsVo> sendGoods();
     List<OrderGoodsVo> rebuyInfo(OrderGoodsQueryBo bo);
+    OrderGoodsVo gradeGoods(OrderGoodsQueryBo bo);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java

@@ -66,4 +66,6 @@ public interface IOrderGoodsService extends IService<OrderGoods> {
 	List<OrderGoodsVo> selectOrderTwoGoods();
 
 	List<OrderGoodsVo> sendGoods();
+
+	OrderGoodsVo gradeGoods(OrderGoodsQueryBo bo);
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java

@@ -212,6 +212,11 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         return baseMapper.sendGoods();
     }
 
+    @Override
+    public OrderGoodsVo gradeGoods(OrderGoodsQueryBo bo) {
+        return baseMapper.gradeGoods(bo);
+    }
+
     public boolean joinGrade(Long orderGoodsId,Long gradeId,Long userId,Long goodsId){
         ClassGradeVo classGradeVo = iClassGradeService.queryById(gradeId);
         if(classGradeVo==null){

+ 12 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java

@@ -33,8 +33,10 @@ import com.zhongzheng.modules.exam.service.IExamNoteService;
 
 import com.zhongzheng.modules.goods.service.IGoodsService;
 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.StudyCountLog;
+import com.zhongzheng.modules.grade.service.IClassGradeUserService;
 import com.zhongzheng.modules.grade.service.IClassGradeUserTempService;
 import com.zhongzheng.modules.grade.service.IStudyCountLogService;
 import com.zhongzheng.modules.order.bo.OrderGoodsQueryBo;
@@ -154,6 +156,9 @@ public class WxPayServiceImpl  implements IWxPayService {
     @Autowired
     private IStudyCountLogService iStudyCountLogService;
 
+    @Autowired
+    private IClassGradeUserService iClassGradeUserService;
+
 
 
 
@@ -341,9 +346,9 @@ public class WxPayServiceImpl  implements IWxPayService {
                     g.setPayStatus(OrderGoods.PAY_FULL);
                     g.setGoodsReceived(g.getGoodsRealPrice());
                     iOrderGoodsService.updateById(g);
-                    joinLockGrade(order.getOrderSn(),g.getGoodsId(),g.getOrderGoodsId());
                     //给用户增加商品考试次数前培次数
                     updateUserExamGoods(g,order);
+                    joinLockGrade(order.getOrderSn(),g.getGoodsId(),g.getOrderGoodsId());
                 }
             }
 
@@ -456,6 +461,12 @@ public class WxPayServiceImpl  implements IWxPayService {
             studyCountLog.setCreateTime(DateUtils.getNowTime());
             studyCountLog.setUpdateTime(DateUtils.getNowTime());
             iStudyCountLogService.save(studyCountLog);
+            //官方信息推送
+            ClassGradeUserQueryBo queryBo = new ClassGradeUserQueryBo();
+            queryBo.setUserId(classGradeUserTemp.getUserId());
+            queryBo.setGradeId(classGradeUserTemp.getGradeId());
+            iClassGradeUserService.pushOfficialInfo(queryBo);
+
         }
         return true;
     }

+ 4 - 0
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -16,6 +16,10 @@
         <result property="periodWaitTime" column="period_wait_time"/>
         <result property="changeGrade" column="change_grade"/>
         <result property="periodTime" column="period_time"/>
+        <result property="officialStatusMsg" column="official_status_msg"/>
+        <result property="periodPlushMsg" column="period_plush_msg"/>
+        <result property="officialStatusTime" column="official_status_time"/>
+        <result property="periodPlushTime" column="period_plush_time"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.grade.vo.ClassGradeUserVo" id="ClassGradeUserVoResult">

+ 9 - 0
zhongzheng-system/src/main/resources/mapper/modules/order/OrderGoodsMapper.xml

@@ -213,5 +213,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             o.user_id = #{userId} and og.goods_id = #{goodsId} and og.pay_status in (2,3) and  og.order_goods_id !=  #{orderGoodsId}
     </select>
 
+    <select id="gradeGoods" parameterType="com.zhongzheng.modules.order.bo.OrderGoodsQueryBo" resultMap="OrderGoodsResultVo">
+        SELECT
+            og.*
+        FROM
+            order_goods og
+                LEFT JOIN `order` o on og.order_sn = o.order_sn
+        WHERE
+            o.user_id = #{userId} and og.grade_id = #{gradeId} and og.pay_status in (2,3)
+    </select>
 
 </mapper>