Sfoglia il codice sorgente

fengji 团练宝缴费激活

yanite 3 anni fa
parent
commit
8768b6738b

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java

@@ -102,4 +102,6 @@ public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
     List<CloudTeacherStudent> queryRecord(Map<String, Object> params);
 
     List<CloudTeacherOrder> findByPlatformOrderId(Integer id);
+
+    int checkOrdered(@Param("cloudTeacherStudentIds")String join);
 }

+ 34 - 18
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java

@@ -22,6 +22,7 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.yqpay.Msg;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import jodd.util.StringUtil;
 import org.joda.time.LocalDateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,6 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.stream.Collectors;
 
 import static com.ym.mec.biz.dal.enums.PeriodEnum.*;
 
@@ -156,7 +158,11 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         if (cloudTeacherStudents.size() == 0) {
             throw new Exception("至少选择一条记录");
         }
-
+        List<Integer> ids = cloudTeacherStudents.stream().map(CloudTeacherStudent::getCloudTeacherOrderId).collect(
+                Collectors.toList());
+        if (cloudTeacherOrderDao.checkOrdered(StringUtil.join(ids, ",")) >= 0) {
+            throw new Exception("学生已经支付");
+        }
         Integer tenantId = null;
         for (CloudTeacherStudent cts: cloudTeacherStudents) {
             if (cts.getAmount() == null) {
@@ -203,7 +209,10 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         } else { // 消费大于 0 元 已支付 直接激活
             orderState = 1;
         }
-        createOrderRecord(tenantId, payAmount, orderNo, tenantEnum, orderState, cloudTeacherStudents);
+        TenantOrderRecord record = createOrderRecord(tenantId, payAmount, orderNo, tenantEnum, orderState, cloudTeacherStudents);
+        if (orderState == 1) { // 成功手直接成功
+            this.paySuccess(record);
+        }
         log.info("tenant pay >>>>> " + JSON.toJSONString(payMap));
         return payMap;
     }
@@ -225,17 +234,7 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
             //tradeState 88就是正确的 其他错误的
             //            DealStatusEnum
             //            notifyMap.put("totalMoney", notifyMap.get("payAmount"));
-            log.info("tenant orderNotify update order status start" + record.getId().toString());
-
-            if (cloudTeacherOrderDao.updateOrderStatusOK(record.getId()) <= 0) {
-                throw new Exception("更新订单状态失败");
-            }
-            List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderDao.findByPlatformOrderId(record.getId());
-            for (CloudTeacherOrder cto : cloudTeacherOrders) {
-                studentService.updateMembershipEndTime(cto.getStudentId(), cto.getEndTime());
-            }
-
-            log.info("tenant orderNotify update order status end");
+            this.paySuccess(record);
             record.setOrderState(1);
             msg.setCode("000000");
             msg.setMsg("success");
@@ -250,12 +249,21 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         return msg;
     }
 
-    public Boolean payCheck(String orderNo) {
-        TenantOrderRecord record = tenantOrderRecordService.getOne(new QueryWrapper<TenantOrderRecord>().eq("order_no_", orderNo));
-        return record.getOrderState() == 1;
+    private void paySuccess(TenantOrderRecord record) throws Exception {
+        log.info("tenant orderNotify update order status start" + record.getId().toString());
+
+        if (cloudTeacherOrderDao.updateOrderStatusOK(record.getId()) <= 0) {
+            throw new Exception("更新订单状态失败");
+        }
+        List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderDao.findByPlatformOrderId(record.getId());
+        for (CloudTeacherOrder cto : cloudTeacherOrders) {
+            studentService.updateMembershipEndTime(cto.getStudentId(), cto.getEndTime());
+        }
+
+        log.info("tenant orderNotify update order status end");
     }
 
-    private void createOrderRecord(Integer tenantId, BigDecimal payAmount, String orderNo, TenantOrderRecordEnum tenantEnum, Integer orderState, List<CloudTeacherStudent> cloudTeacherStudents) {
+    private TenantOrderRecord createOrderRecord(Integer tenantId, BigDecimal payAmount, String orderNo, TenantOrderRecordEnum tenantEnum, Integer orderState, List<CloudTeacherStudent> cloudTeacherStudents) throws Exception {
         LocalDateTime now = LocalDateTime.now();
         TenantOrderRecord record = new TenantOrderRecord();
         record.setTenantId(tenantId);
@@ -270,8 +278,16 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         record.setCreatedTime(now.toDate());
         tenantOrderRecordService.save(record);
         for (CloudTeacherStudent cts : cloudTeacherStudents) {
-            cloudTeacherOrderDao.updateOrderId(cts.getCloudTeacherOrderId(), cts.getAmount(), record.getId());
+            if (cloudTeacherOrderDao.updateOrderId(cts.getCloudTeacherOrderId(), cts.getAmount(), record.getId()) <= 0) {
+                throw new Exception("更新订单失败");
+            }
         }
+        return record;
+    }
+
+    public Boolean payCheck(String orderNo) {
+        TenantOrderRecord record = tenantOrderRecordService.getOne(new QueryWrapper<TenantOrderRecord>().eq("order_no_", orderNo));
+        return record.getOrderState() == 1;
     }
 
     @Override

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -1208,7 +1208,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     @Override
     public PageInfo<CloudTeacherActiveTargetDetailDto> countCloudTeacherActiveDetail(CloudTeacherActiveQueryInfo queryInfo) {
         PageInfo<CloudTeacherActiveTargetDetailDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-        Map<String, Object> params = new HashMap<String, Object>();
+        Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
 
         List<CloudTeacherActiveTargetDetailDto> dataList = null;

+ 15 - 3
mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml

@@ -121,7 +121,7 @@
         where id_ = #{id} AND version_ = #{version} and tenant_id_ = #{tenantId}
     </update>
 
-    <select id="findByPlatformOrderId" resultType="com.ym.mec.biz.dal.entity.CloudTeacherOrder">
+    <select id="findByPlatformOrderId"  resultMap="CloudTeacherOrderDto" parameterType="map">
         select * from cloud_teacher_order where platform_order_id_ = #{platformOrderId}
     </select>
 
@@ -376,13 +376,21 @@
         LEFT JOIN sys_user u ON cto.student_id_ = u.id_
         LEFT JOIN SUBJECT sj ON s.subject_id_list_ = sj.id_
         LEFT JOIN student_registration sr ON cto.student_id_ = sr.user_id_
-        LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
         <where>
             cto.status_ = 2 AND tor.order_no_ is not null AND tor.order_type_ = 'CLOUD_TEACHER'
             AND sr.music_group_id_ = #{musicGroupId}
             <if test="queryCondition != null and queryCondition != ''">
                 AND (u.username_ LIKE CONCAT('%', #{queryCondition}, '%') or u.phone_ = #{queryCondition} or u.id_ = #{queryCondition})
             </if>
+            <if test="orderNo != null and orderNo != ''">
+                AND tor.order_no_ LIKE CONCAT('%', #{orderNo}, '%')
+            </if>
+            <if test="startTime != null and startTime != ''">
+                <![CDATA[ AND tor.created_time_ >= #{startTime} ]]>
+            </if>
+            <if test="endTime != null and startTime != ''">
+                <![CDATA[ AND tor.created_time_ <= #{endTime} ]]>
+            </if>
         </where>
     </select>
     <select id="queryRecord"  resultMap="cloudTeacherStudent">
@@ -410,6 +418,7 @@
         LEFT JOIN student s ON cto.student_id_ = s.user_id_
         LEFT JOIN sys_user u ON cto.student_id_ = u.id_
         LEFT JOIN subject sj ON s.subject_id_list_ = sj.id_
+        LEFT JOIN student_registration sr ON cto.student_id_ = sr.user_id_
         <where>
             cto.status_ = 2 AND tor.order_no_ is not null AND tor.order_type_ = 'CLOUD_TEACHER'
             AND sr.music_group_id_ = #{musicGroupId}
@@ -417,7 +426,7 @@
                 AND (u.username_ LIKE CONCAT('%', #{queryCondition}, '%') or u.phone_ = #{queryCondition} or u.id_ = #{queryCondition})
             </if>
             <if test="orderNo != null and orderNo != ''">
-                AND tor.order_no_ = #{orderNo}
+                AND tor.order_no_ LIKE CONCAT('%', #{orderNo}, '%')
             </if>
             <if test="startTime != null and startTime != ''">
                 <![CDATA[ AND tor.created_time_ >= #{startTime} ]]>
@@ -428,6 +437,9 @@
         </where>
         <include refid="global.limit"/>
     </select>
+    <select id="checkOrdered" resultType="java.lang.Integer">
+        select count(1) from cloud_teacher_order where id_ in (${cloudTeacherStudentIds}) and status_ = 2 and platform_order_id_ is not null
+    </select>
 
     <sql id="queryCloudTeacherActiveDetailSql">
         <where>

+ 30 - 1
mec-web/src/main/java/com/ym/mec/web/controller/SysManualController.java

@@ -30,7 +30,7 @@ public class SysManualController extends BaseController {
 
 
     @ApiOperation(value = "查询操作手册")
-    @GetMapping("/list")
+    @RequestMapping("/list")
     public Object list(SysManualQueryInfo queryInfo) {
         QueryWrapper<SysManual> queryWrapper = null;
         if (queryInfo.getMenuId() != null) {
@@ -45,6 +45,7 @@ public class SysManualController extends BaseController {
     @ApiOperation(value = "新增帮助手册")
     @PostMapping("/add")
     public Object add(@RequestBody SysManual sysManual) throws Exception{
+        this.check(sysManual);
         sysManualService.save(sysManual);
         return succeed();
     }
@@ -52,10 +53,38 @@ public class SysManualController extends BaseController {
     @ApiOperation(value = "修改帮助手册")
     @PostMapping("/update")
     public Object update(@RequestBody SysManual sysManual) throws Exception{
+        this.check(sysManual);
+        if (sysManual.getId() == null) {
+            throw new Exception("更新必须有id");
+        }
         sysManualService.updateById(sysManual);
         return succeed();
     }
 
+    private void check(SysManual sysManual) throws Exception {
+        if (sysManual.getMenuId() == null) {
+            throw new Exception("菜单Id是必须");
+        }
+        if (sysManual.getName() == null) {
+            throw new Exception("菜单名是必填");
+        }
+        if (sysManual.getName().length() > 256) {
+            throw new Exception("菜单名不能超过256");
+        }
+        if (sysManual.getOpFlow() == null) {
+            throw new Exception("操作流程必填");
+        }
+        if (sysManual.getOpFlow().length() > 8000) {
+            throw new Exception("操作流程不能超过8000字节");
+        }
+        if (sysManual.getFunRule() == null) {
+            throw new Exception("功能规则必填");
+        }
+        if (sysManual.getFunRule().length() > 8000) {
+            throw new Exception("功能规则不能超过8000字节");
+        }
+    }
+
     @ApiOperation(value = "删除帮助手册")
     @PostMapping("/remove")
     public Object remove(@RequestBody SysManual sysManual) throws Exception{