Browse Source

Merge remote-tracking branch 'origin/saas' into saas

zouxuan 3 years ago
parent
commit
4dd6b61502

+ 9 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java

@@ -96,5 +96,13 @@ public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
 
     List<CloudTeacherStudent> queryInactive(Map<String, Object> params);
 
-    int updateCloudTeacherOrder(@Param("payStudentIds") String payStudentIds);
+    int updateOrderStatusOK(@Param("orderId") Integer orderId);
+
+    int updateOrderId(@Param("cloudTeacherOrderId")Integer cloudTeacherOrderId,
+                      @Param("amount") BigDecimal amount,
+                      @Param("orderId")Integer orderId);
+
+    int findRecordCount(Map<String, Object> params);
+
+    List<CloudTeacherStudent> queryRecord(Map<String, Object> params);
 }

+ 0 - 20
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderRecordDao.java

@@ -1,20 +0,0 @@
-package com.ym.mec.biz.dal.dao;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ym.mec.biz.dal.entity.CloudTeacherOrderRecord;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * 机构付款记录表(CloudTeacherOrderRecord)表数据库访问层
- *
- * @author makejava
- * @since 2021-12-21 18:13:47
- */
-public interface CloudTeacherOrderRecordDao extends BaseMapper<CloudTeacherOrderRecord> {
-
-    int insertBatch(@Param("entities") List<CloudTeacherOrderRecord> entities);
-
-}
-

+ 0 - 195
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherOrderRecord.java

@@ -1,195 +0,0 @@
-package com.ym.mec.biz.dal.entity;
-
-
-import java.math.BigDecimal;
-import java.util.Date;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.TableId;
-
-import java.io.Serializable;
-
-/**
- * 机构付款记录表(CloudTeacherOrderRecord)表实体类
- *
- * @author makejava
- * @since 2021-12-21 18:13:47
- */
-@ApiModel(value = "cloud_teacher_order_record-机构付款记录表")
-public class CloudTeacherOrderRecord implements Serializable {
-    @TableId(value = "id_", type = IdType.AUTO)
-    @ApiModelProperty(value = "主键")
-    private Integer id;
-
-    @TableField("tenant_id_")
-    @ApiModelProperty(value = "机构产品设置表id")
-    private Integer tenantId;
-
-    @TableField("order_no_")
-    @ApiModelProperty(value = "订单编号(付款前生成订单时生成的编号)")
-    private String orderNo;
-
-    @TableField("trans_no_")
-    @ApiModelProperty(value = "支付编号(付款后第三方支付给予的)")
-    private String transNo;
-
-    @TableField("order_type_")
-    @ApiModelProperty(value = "订单类型/机构开通缴费、续费、充值、激活团练宝")
-    private String orderType;
-
-    @TableField("payment_channel_")
-    @ApiModelProperty(value = "付款渠道/惠支付、双乾")
-    private String paymentChannel;
-
-    @TableField("pay_channel_")
-    @ApiModelProperty(value = "付款渠道/微信、支付宝、等")
-    private String payChannel;
-
-    @TableField("expect_amount")
-    @ApiModelProperty(value = "应付金额")
-    private BigDecimal expectAmount;
-
-    @TableField("actual_amount")
-    @ApiModelProperty(value = "实付金额")
-    private BigDecimal actualAmount;
-
-    @TableField("order_state_")
-    @ApiModelProperty(value = "订单状态/0待支付、1已支付")
-    private Integer orderState;
-
-    @TableField("pay_date_")
-    @ApiModelProperty(value = "支付日期")
-    private Date payDate;
-
-    @TableField("pay_time_")
-    @ApiModelProperty(value = "支付时间")
-    private Date payTime;
-
-    @TableField("created_time_")
-    @ApiModelProperty(value = "订单创建时间")
-    private Date createdTime;
-
-    @TableField("pay_student_ids_")
-    @ApiModelProperty(value = "${column.comment}")
-    private String payStudentIds;
-
-    private static final long serialVersionUID = 1L;
-
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public Integer getTenantId() {
-        return tenantId;
-    }
-
-    public void setTenantId(Integer tenantId) {
-        this.tenantId = tenantId;
-    }
-
-    public String getOrderNo() {
-        return orderNo;
-    }
-
-    public void setOrderNo(String orderNo) {
-        this.orderNo = orderNo;
-    }
-
-    public String getTransNo() {
-        return transNo;
-    }
-
-    public void setTransNo(String transNo) {
-        this.transNo = transNo;
-    }
-
-    public String getOrderType() {
-        return orderType;
-    }
-
-    public void setOrderType(String orderType) {
-        this.orderType = orderType;
-    }
-
-    public String getPaymentChannel() {
-        return paymentChannel;
-    }
-
-    public void setPaymentChannel(String paymentChannel) {
-        this.paymentChannel = paymentChannel;
-    }
-
-    public String getPayChannel() {
-        return payChannel;
-    }
-
-    public void setPayChannel(String payChannel) {
-        this.payChannel = payChannel;
-    }
-
-    public BigDecimal getExpectAmount() {
-        return expectAmount;
-    }
-
-    public void setExpectAmount(BigDecimal expectAmount) {
-        this.expectAmount = expectAmount;
-    }
-
-    public BigDecimal getActualAmount() {
-        return actualAmount;
-    }
-
-    public void setActualAmount(BigDecimal actualAmount) {
-        this.actualAmount = actualAmount;
-    }
-
-    public Integer getOrderState() {
-        return orderState;
-    }
-
-    public void setOrderState(Integer orderState) {
-        this.orderState = orderState;
-    }
-
-    public Date getPayDate() {
-        return payDate;
-    }
-
-    public void setPayDate(Date payDate) {
-        this.payDate = payDate;
-    }
-
-    public Date getPayTime() {
-        return payTime;
-    }
-
-    public void setPayTime(Date payTime) {
-        this.payTime = payTime;
-    }
-
-    public Date getCreatedTime() {
-        return createdTime;
-    }
-
-    public void setCreatedTime(Date createdTime) {
-        this.createdTime = createdTime;
-    }
-
-    public String getPayStudentIds() {
-        return payStudentIds;
-    }
-
-    public void setPayStudentIds(String payStudentIds) {
-        this.payStudentIds = payStudentIds;
-    }
-
-
-}
-

+ 65 - 8
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherStudent.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.entity;
 
 import io.swagger.annotations.ApiModelProperty;
 
+import java.math.BigDecimal;
+
 /**
  * Description
  * 团练宝查询学生
@@ -29,16 +31,39 @@ public class CloudTeacherStudent {
     private Integer subject;
 
     @ApiModelProperty(value = "声部")
-    private String subjectLabel;
+    private String subjectName;
+
+    @ApiModelProperty(value = "所属分部")
+    private String organName;
+
+    @ApiModelProperty(value = "乐团编号")
+    private String musicGroupId;
+
+    @ApiModelProperty(value = "乐团名称")
+    private String musicGroupName;
+
+    @ApiModelProperty(value = "合作单位")
+    private String cooperationOrganName;
 
     @ApiModelProperty(value = "团练宝类型")
     private Integer type;
 
+    @ApiModelProperty(value = "团练宝类型")
+    private String typeName;
+
+    public String getTypeName() {
+        return typeName;
+    }
+
+    public void setTypeName(String typeName) {
+        this.typeName = typeName;
+    }
+
     @ApiModelProperty(value = "数量")
     private Integer time;
 
     @ApiModelProperty(value = "金额")
-    private Double amount;
+    private BigDecimal amount;
 
     public Integer getTenantId() {
         return tenantId;
@@ -80,11 +105,11 @@ public class CloudTeacherStudent {
         this.phone = phone;
     }
 
-    public Double getAmount() {
+    public BigDecimal getAmount() {
         return amount;
     }
 
-    public void setAmount(Double amount) {
+    public void setAmount(BigDecimal amount) {
         this.amount = amount;
     }
 
@@ -112,11 +137,43 @@ public class CloudTeacherStudent {
         this.subject = subject;
     }
 
-    public String getSubjectLabel() {
-        return subjectLabel;
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public String getMusicGroupName() {
+        return musicGroupName;
+    }
+
+    public void setMusicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+    }
+
+    public String getCooperationOrganName() {
+        return cooperationOrganName;
     }
 
-    public void setSubjectLabel(String subjectLabel) {
-        this.subjectLabel = subjectLabel;
+    public void setCooperationOrganName(String cooperationOrganName) {
+        this.cooperationOrganName = cooperationOrganName;
     }
 }

+ 0 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/CloudTeacherOrderRecordService.java

@@ -1,15 +0,0 @@
-package com.ym.mec.biz.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.ym.mec.biz.dal.entity.CloudTeacherOrderRecord;
-
-/**
- * 机构付款记录表(CloudTeacherOrderRecord)表服务接口
- *
- * @author makejava
- * @since 2021-12-21 18:13:47
- */
-public interface CloudTeacherOrderRecordService extends IService<CloudTeacherOrderRecord> {
-
-}
-

+ 5 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/CloudTeacherOrderService.java

@@ -21,7 +21,7 @@ public interface CloudTeacherOrderService extends BaseService<Long, CloudTeacher
     /**
      * 查询未激活用户
      */
-    PageInfo<CloudTeacherStudent> queryInactive(CloudTeacherOrderQueryInfo cloudTeacherOrderQueryInfo);
+    PageInfo<CloudTeacherStudent> queryInactive(CloudTeacherOrderQueryInfo cloudTeacherOrderQueryInfo) throws Exception;
 
     /**
      * 机构付款指定学生并激活
@@ -117,4 +117,8 @@ public interface CloudTeacherOrderService extends BaseService<Long, CloudTeacher
     Map<String, Object> pay(List<CloudTeacherStudent> cloudTeacherStudents) throws Exception;
 
     Msg payNotify(Msg msg);
+
+    Boolean payCheck(String orderNo);
+
+    PageInfo<CloudTeacherStudent> queryActiveRecord(CloudTeacherOrderQueryInfo cloudTeacherOrderQueryInfo);
 }

+ 0 - 26
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderRecordServiceImpl.java

@@ -1,26 +0,0 @@
-package com.ym.mec.biz.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ym.mec.biz.dal.dao.CloudTeacherOrderRecordDao;
-import com.ym.mec.biz.dal.entity.CloudTeacherOrderRecord;
-import com.ym.mec.biz.service.CloudTeacherOrderRecordService;
-import org.springframework.stereotype.Service;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * 机构付款记录表(CloudTeacherOrderRecord)表服务实现类
- *
- * @author makejava
- * @since 2021-12-21 18:13:47
- */
-@Service("cloudTeacherOrderRecordService")
-public class CloudTeacherOrderRecordServiceImpl extends ServiceImpl<CloudTeacherOrderRecordDao, CloudTeacherOrderRecord>
-        implements CloudTeacherOrderRecordService {
-
-    private final static Logger logger = LoggerFactory.getLogger(CloudTeacherOrderRecordServiceImpl.class);
-
-
-}
-

+ 108 - 73
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java

@@ -6,6 +6,7 @@ import java.util.stream.Collectors;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.*;
@@ -40,7 +41,6 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     private CourseScheduleDao courseScheduleDao;
     @Autowired
     private CloudTeacherDao cloudTeacherDao;
-    
     @Autowired
     private StudentService studentService;
     @Autowired
@@ -52,15 +52,34 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     @Autowired
     private IdGeneratorService idGenerator;
     @Autowired
-    private CloudTeacherOrderRecordService cloudTeacherOrderRecordService;
-
+    private TenantOrderRecordService tenantOrderRecordService;
     @Override
     public BaseDAO<Long, CloudTeacherOrder> getDAO() {
         return cloudTeacherOrderDao;
     }
 
     @Override
-    public PageInfo<CloudTeacherStudent> queryInactive(CloudTeacherOrderQueryInfo queryInfo) {
+    public PageInfo<CloudTeacherStudent> queryActiveRecord(CloudTeacherOrderQueryInfo queryInfo) {
+        PageInfo<CloudTeacherStudent> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        List<CloudTeacherStudent> dataList = null;
+        int count = cloudTeacherOrderDao.findRecordCount(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = cloudTeacherOrderDao.queryRecord(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+
+        return pageInfo;
+    }
+
+    @Override
+    public PageInfo<CloudTeacherStudent> queryInactive(CloudTeacherOrderQueryInfo queryInfo) throws Exception {
         PageInfo<CloudTeacherStudent> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
@@ -76,67 +95,66 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         }
         pageInfo.setRows(dataList);
 
-        // List<TenantConfig> tenCfg = tenantConfigService.list(new Wrapper<TenantConfig>());
-        assert dataList != null;
+        if (count == 0) {
+            return pageInfo;
+        }
         for (CloudTeacherStudent cst: dataList) {
-            if (cst.getTime() == null) continue;
-            TenantConfig tenantConfig = tenantConfigService.getById(cst.getTenantId());
-            if (tenantConfig == null) continue;
+            TenantConfig tenantConfig = tenantConfigService.getOne(new QueryWrapper<TenantConfig>().eq("tenant_id_", cst.getTenantId()));
+            if (tenantConfig == null) {
+                throw new Exception("未找到组织Id " + cst.getTenantId().toString() + "在 TenantConfig 表");
+            }
             JSONObject cfg = JSON.parseObject(tenantConfig.getConfig());
             JSONObject memberConfig = (JSONObject) cfg.get("member_config");
-            if (cst.getType() == 1) {
-                double divide = memberConfig.getDouble("month_divide");
-                cst.setAmount(divide * cst.getTime());
-            } else if (cst.getType() == 2) { // 月
-                double divide = memberConfig.getDouble("month_divide");
-                cst.setAmount(divide * cst.getTime());
-            } else if (cst.getType() == 3) {
-                double divide = memberConfig.getDouble("quarter_divide");
-                cst.setAmount(divide * cst.getTime());
-            } else if (cst.getType() == 4) {
-                double divide = memberConfig.getDouble("half_year_divide");
-                cst.setAmount(divide * cst.getTime());
-            } else if (cst.getType() == 5) {
-                double divide = memberConfig.getDouble("year_divide");
-                cst.setAmount(divide * cst.getTime());
+            Double divide;
+            switch (cst.getType()) {
+                case 1:
+                    divide = memberConfig.getDouble("day_divide");
+                    break;
+                case 2:
+                    divide = memberConfig.getDouble("month_divide");
+                    break;
+                case 3:
+                    divide = memberConfig.getDouble("quarter_divide");
+                    break;
+                case 4:
+                    divide = memberConfig.getDouble("half_year_divide");
+                    break;
+                case 5:
+                    divide = memberConfig.getDouble("year_divide");
+                    break;
+                default:
+                    divide = null;
+            }
+            if (divide == null) {
+                cst.setAmount(null);
+            } else {
+                cst.setAmount(new BigDecimal(divide * cst.getTime()));
             }
         }
         return pageInfo;
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Map<String, Object> pay(List<CloudTeacherStudent> cloudTeacherStudents) throws Exception {
 
-        BigDecimal sumAmount = new BigDecimal(0);
+        if (cloudTeacherStudents.size() == 0) {
+            throw new Exception("至少选择一条记录");
+        }
         Integer tenantId = null;
-        StringBuilder payStudentIds = new StringBuilder();
-        StringBuilder payStudentIdsZero = new StringBuilder();
         for (CloudTeacherStudent cts: cloudTeacherStudents) {
             if (cts.getAmount() == null) {
-                throw new Exception("金额错误在 " + cts.getStudentId().toString() );
+                throw new Exception("金额错误在, 学生编号: " + cts.getStudentId().toString());
             }
             if (tenantId == null) {
                 tenantId = cts.getTenantId();
-            } else {
-                if (!tenantId.equals(cts.getTenantId())) {
-                    throw new Exception("分部Id 错误 " + cts.getStudentId().toString() );
-                }
-            }
-            if (cts.getAmount() == 0) {
-                payStudentIdsZero.append(cts.getStudentId());
-                continue;
-            } else {
-                sumAmount.add(BigDecimal.valueOf(cts.getAmount()));
-                payStudentIds.append(cts.getStudentId().toString()).append(",");
-
             }
         }
-        // 金额为 0 的
-        if (payStudentIdsZero.length() > 0) {
-            this.updateCloudTeacherOrder(payStudentIdsZero.toString());
-            createOrderRecord(tenantId, new BigDecimal(0), "", TenantOrderRecordEnum.CLOUD_TEACHER, 1, payStudentIdsZero.toString());
+        BigDecimal sumAmount = new BigDecimal(0);
+        for (CloudTeacherStudent cts: cloudTeacherStudents) {
+            sumAmount = sumAmount.add(cts.getAmount());
         }
-        return this.payExec(sumAmount, tenantId, payStudentIds.toString());
+        return this.payExec(sumAmount, tenantId, cloudTeacherStudents);
     }
 
     /**
@@ -145,7 +163,7 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
      * @param tenantId 分部
      * @return
      */
-    private Map<String, Object> payExec(BigDecimal payAmount, Integer tenantId, String payStudentIds) throws Exception {
+    private Map<String, Object> payExec(BigDecimal payAmount, Integer tenantId, List<CloudTeacherStudent> cloudTeacherStudents) throws Exception {
         //生成订单编号
         String orderNo = idGenerator.generatorId("payment") + "";
         String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
@@ -166,26 +184,21 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
                     1,//临时写死
                     tenantEnum.getCode()
             );
-            createOrderRecord(tenantId, payAmount, orderNo, tenantEnum, orderState, payStudentIds);
-            log.info("tenant pay >>>>> " + JSON.toJSONString(payMap));
-        } else {
-            //已支付 直接激活
+        } else { // 消费大于 0 元 已支付 直接激活
             orderState = 1;
-
         }
+        createOrderRecord(tenantId, payAmount, orderNo, tenantEnum, orderState, cloudTeacherStudents);
+        log.info("tenant pay >>>>> " + JSON.toJSONString(payMap));
         return payMap;
     }
 
-    private Integer updateCloudTeacherOrder(String payStudentIds) {
-        return cloudTeacherOrderDao.updateCloudTeacherOrder(payStudentIds);
-    }
-
+    @Transactional(rollbackFor = Exception.class)
     public Msg payNotify(Msg msg) {
         log.info("tenant orderNotify >>>>> " + msg.toString());
         msg.setMsg("fail");
         Map<String, String> notifyMap = JSON.parseObject(msg.getResponseParameters(), Map.class);
-        CloudTeacherOrderRecord record = cloudTeacherOrderRecordService.getOne(
-                new QueryWrapper<CloudTeacherOrderRecord>().eq("order_no_", notifyMap.get("orderNo")));
+        TenantOrderRecord record = tenantOrderRecordService.getOne(
+                new QueryWrapper<TenantOrderRecord>().eq("order_no_", notifyMap.get("orderNo")));
         record.setOrderNo(notifyMap.get("merMerOrderNo"));
         record.setTransNo(notifyMap.get("orderNo"));
         String channelType = notifyMap.get("channelType").equals("1") ? "WXPay" : (notifyMap.get("channelType").equals("2") ? "Alipay" : "quickPay");
@@ -196,25 +209,31 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
             //tradeState 88就是正确的 其他错误的
             //            DealStatusEnum
             //            notifyMap.put("totalMoney", notifyMap.get("payAmount"));
-            if (record.getPayStudentIds() != null) {
-                this.updateCloudTeacherOrder(record.getPayStudentIds());
-            }
+            log.info("tenant orderNotify update order status start" + record.getId().toString());
+            cloudTeacherOrderDao.updateOrderStatusOK(record.getId());
+            log.info("tenant orderNotify update order status end");
             record.setOrderState(1);
             msg.setCode("000000");
             msg.setMsg("success");
         } else {
+            log.info("tenant orderNotify fail");
             //支付失败
             record.setOrderState(2);
         }
-        cloudTeacherOrderRecordService.update(record, new QueryWrapper<CloudTeacherOrderRecord>()
+        tenantOrderRecordService.update(record, new QueryWrapper<TenantOrderRecord>()
                 .eq("order_no_", record.getOrderNo()));
         log.info("tenant orderNotify return>>>>> " + msg.toString());
         return msg;
     }
 
-    private void createOrderRecord(Integer tenantId, BigDecimal payAmount, String orderNo, TenantOrderRecordEnum tenantEnum, Integer orderState, String payStudentIds) {
+    public Boolean payCheck(String orderNo) {
+        TenantOrderRecord record = tenantOrderRecordService.getOne(new QueryWrapper<TenantOrderRecord>().eq("order_no_", orderNo));
+        return record.getOrderState() == 1;
+    }
+
+    private void createOrderRecord(Integer tenantId, BigDecimal payAmount, String orderNo, TenantOrderRecordEnum tenantEnum, Integer orderState, List<CloudTeacherStudent> cloudTeacherStudents) {
         LocalDateTime now = LocalDateTime.now();
-        CloudTeacherOrderRecord record = new CloudTeacherOrderRecord();
+        TenantOrderRecord record = new TenantOrderRecord();
         record.setTenantId(tenantId);
         record.setOrderNo(orderNo);
         record.setOrderType(tenantEnum.getCode());
@@ -225,8 +244,10 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         record.setPayDate(now.toLocalDate().toDate());
         record.setPayTime(now.toDate());
         record.setCreatedTime(now.toDate());
-        record.setPayStudentIds(payStudentIds);
-        cloudTeacherOrderRecordService.save(record);
+        tenantOrderRecordService.save(record);
+        for (CloudTeacherStudent cts : cloudTeacherStudents) {
+            cloudTeacherOrderDao.updateOrderId(cts.getCloudTeacherOrderId(), cts.getAmount(), record.getId());
+        }
     }
 
     @Override
@@ -279,8 +300,14 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
 			periodEnum = PeriodEnum.MONTH;
 			break;
 		case 3:
-			periodEnum = PeriodEnum.YEAR;
+			periodEnum = PeriodEnum.QUARTERLY;
 			break;
+        case 4:
+            periodEnum = PeriodEnum.YEAR_HALF;
+            break;
+        case 5:
+            periodEnum = PeriodEnum.YEAR;
+            break;
 
 		default:
 			break;
@@ -292,14 +319,18 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
             cloudTeacher = new CloudTeacher();
             startTime = DateUtil.trunc(nowDate);
             endBaseTime = startTime;
-            if (cloudTeacherOrder.getType().equals(1)) {
+            if (cloudTeacherOrder.getType().equals(1)) { // 日
                 endTime = DateUtil.addDays(startTime, cloudTeacherOrder.getTime());
-            } else if (cloudTeacherOrder.getType().equals(2)) {
+            } else if (cloudTeacherOrder.getType().equals(2)) { // 月
                 endTime = DateUtil.addMonths(startTime, cloudTeacherOrder.getTime());
-            } else if (cloudTeacherOrder.getType().equals(3)) {
+            } else if (cloudTeacherOrder.getType().equals(3)) { // 季
+                endTime = DateUtil.addMonths(startTime, cloudTeacherOrder.getTime() * 3);
+            } else if (cloudTeacherOrder.getType().equals(4)) { // 半年
+                endTime = DateUtil.addMonths(startTime, cloudTeacherOrder.getTime() * 6);
+            } else if (cloudTeacherOrder.getType().equals(5)) { // 年
                 endTime = DateUtil.addYears(startTime, cloudTeacherOrder.getTime());
             }
-            cloudTeacher.setStudentId(cloudTeacherOrder.getStudentId());
+        cloudTeacher.setStudentId(cloudTeacherOrder.getStudentId());
             cloudTeacher.setLevel(cloudTeacherOrder.getLevel());
             cloudTeacher.setStartTime(startTime);
             cloudTeacher.setEndTime(endTime);
@@ -311,11 +342,15 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
                 startTime = DateUtil.trunc(nowDate);
                 endBaseTime = startTime;
             }
-            if (cloudTeacherOrder.getType().equals(1)) {
+            if (cloudTeacherOrder.getType().equals(1)) { // 日
                 endTime = DateUtil.addDays(endBaseTime, cloudTeacherOrder.getTime());
-            } else if (cloudTeacherOrder.getType().equals(2)) {
+            } else if (cloudTeacherOrder.getType().equals(2)) { // 月
                 endTime = DateUtil.addMonths(endBaseTime, cloudTeacherOrder.getTime());
-            } else if (cloudTeacherOrder.getType().equals(3)) {
+            } else if (cloudTeacherOrder.getType().equals(3)) { // 季
+                endTime = DateUtil.addMonths(endBaseTime, cloudTeacherOrder.getTime() * 3);
+            } else if (cloudTeacherOrder.getType().equals(4)) { // 半年
+                endTime = DateUtil.addMonths(endBaseTime, cloudTeacherOrder.getTime() * 6);
+            } else if (cloudTeacherOrder.getType().equals(5)) { // 年
                 endTime = DateUtil.addYears(endBaseTime, cloudTeacherOrder.getTime());
             }
             cloudTeacher.setStartTime(startTime);

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

@@ -414,14 +414,17 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
                 student.setMembershipEndTime(DateUtil.addDays(nowDate, cloudTeacherOrder.getTime()));
     			break;
     		case MONTH:
+                student.setMembershipEndTime(DateUtil.addMonths(nowDate, cloudTeacherOrder.getTime()));
+                break;
     		case QUARTERLY:
+                student.setMembershipEndTime(DateUtil.addMonths(nowDate, cloudTeacherOrder.getTime() * 3));
+                break;
     		case YEAR_HALF:
-                student.setMembershipEndTime(DateUtil.addMonths(nowDate, cloudTeacherOrder.getTime()));
+                student.setMembershipEndTime(DateUtil.addMonths(nowDate, cloudTeacherOrder.getTime() * 6));
     			break;
     		case YEAR:
                 student.setMembershipEndTime(DateUtil.addYears(nowDate, cloudTeacherOrder.getTime()));
     			break;
-
     		default:
     			break;
     		}
@@ -432,8 +435,13 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
             	student.setMembershipEndTime(DateUtil.addDays(student.getMembershipEndTime(), cloudTeacherOrder.getTime()));
     			break;
     		case MONTH:
+                student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), cloudTeacherOrder.getTime()));
+                break;
+            case QUARTERLY:
+                student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), cloudTeacherOrder.getTime() * 3 ));
+                break;
     		case YEAR_HALF:
-            	student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), cloudTeacherOrder.getTime()));
+            	student.setMembershipEndTime(DateUtil.addMonths(student.getMembershipEndTime(), cloudTeacherOrder.getTime() * 6 ));
     			break;
     		case YEAR:
             	student.setMembershipEndTime(DateUtil.addYears(student.getMembershipEndTime(), cloudTeacherOrder.getTime()));
@@ -451,9 +459,14 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
                             registration.setMembershipEndTime(DateUtil.addDays(nowDate, cloudTeacherOrder.getTime()));
                             break;
                         case MONTH:
-                        case YEAR_HALF:
                             registration.setMembershipEndTime(DateUtil.addMonths(nowDate, cloudTeacherOrder.getTime()));
                             break;
+                        case QUARTERLY:
+                            registration.setMembershipEndTime(DateUtil.addMonths(nowDate, cloudTeacherOrder.getTime() * 3));
+                            break;
+                        case YEAR_HALF:
+                            registration.setMembershipEndTime(DateUtil.addMonths(nowDate, cloudTeacherOrder.getTime() * 6));
+                            break;
                         case YEAR:
                             registration.setMembershipEndTime(DateUtil.addYears(nowDate, cloudTeacherOrder.getTime()));
                             break;
@@ -466,9 +479,14 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
                             registration.setMembershipEndTime(DateUtil.addDays(registration.getMembershipEndTime(), cloudTeacherOrder.getTime()));
                             break;
                         case MONTH:
-                        case YEAR_HALF:
                             registration.setMembershipEndTime(DateUtil.addMonths(registration.getMembershipEndTime(), cloudTeacherOrder.getTime()));
                             break;
+                        case QUARTERLY:
+                            registration.setMembershipEndTime(DateUtil.addMonths(registration.getMembershipEndTime(), cloudTeacherOrder.getTime() * 3));
+                            break;
+                        case YEAR_HALF:
+                            registration.setMembershipEndTime(DateUtil.addMonths(registration.getMembershipEndTime(), cloudTeacherOrder.getTime() * 6 ));
+                            break;
                         case YEAR:
                             registration.setMembershipEndTime(DateUtil.addYears(registration.getMembershipEndTime(), cloudTeacherOrder.getTime()));
                             break;
@@ -508,14 +526,17 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
             student.setMembershipEndTime(DateUtil.addDays(nowDate, times));
 			break;
 		case MONTH:
+            student.setMembershipEndTime(DateUtil.addMonths(nowDate, times));
+            break;
 		case QUARTERLY:
+            student.setMembershipEndTime(DateUtil.addMonths(nowDate, times * 3));
+            break;
 		case YEAR_HALF:
-            student.setMembershipEndTime(DateUtil.addMonths(nowDate, times));
+            student.setMembershipEndTime(DateUtil.addMonths(nowDate, times * 6));
 			break;
 		case YEAR:
             student.setMembershipEndTime(DateUtil.addYears(nowDate, times));
 			break;
-
 		default:
 			break;
 		}

+ 59 - 6
mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml

@@ -115,8 +115,13 @@
         where id_ = #{id} AND version_ = #{version}
     </update>
 
-    <update id="updateCloudTeacherOrder">
-        update cloud_teacher_order set status_ = 2 where student_id_ in (#{payStudentIds})
+    <update id="updateOrderStatusOK">
+        update cloud_teacher_order set status_ = 2 where order_id_ = (#{orderId})
+    </update>
+    <update id="updateOrderId">
+        update cloud_teacher_order
+        set order_id_ = #{orderId} , pay_amount_ = #{amount}
+        where id_ = #{cloudTeacherOrderId}
     </update>
 
     <!-- 全查询 -->
@@ -292,19 +297,27 @@
                    when 4 then '半年'
                    when 5 then '年'
                    else ''
-               end as typeLabel,
+               end as typeName,
                cto.time_ as time,
                sj.id_ as subject,
                sj.name_ as subjectLabel,
                u.tenant_id_ as tenantId,
                u.username_ as name,
-               u.phone_ as phone
+               u.phone_ as phone,
+               org.name_ as organName,
+               mg.id_ as musicGroupId,
+               mg.name_ as musicGroupName,
+               coo.name_ as cooperationOrganName
         from cloud_teacher_order cto
         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_
+        left join music_group mg on sr.music_group_id_ = mg.id_
+        left join cooperation_organ coo on mg.cooperation_organ_id_ = coo.id_
+        left join organization org on mg.organ_id_ = org.id_
         <where>
-            cto.status_ = #{status}
+            cto.status_ = #{status} AND sr.music_group_status_ = 'NORMAL' AND mg.status_ = 'PROGRESS'
             <if test="queryCondition != nul and queryCondition != ''">
                 AND (u.username_ LIKE CONCAT('%', #{queryCondition}, '%') or u.phone_ = #{queryCondition} or u.id_ = #{queryCondition})
             </if>
@@ -319,8 +332,13 @@
         select count(1) from cloud_teacher_order cto
         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 s.user_id_ = sr.user_id_
+        left join music_group mg on sr.music_group_id_ = mg.id_
+        left join cooperation_organ coo on mg.cooperation_organ_id_ = coo.id_
+        left join organization org on mg.organ_id_ = org.id_
         <where>
-            cto.status_ = #{status}
+            cto.status_ = #{status} AND sr.music_group_status_ = 'NORMAL' AND mg.status_ = 'PROGRESS'
             <if test="queryCondition != nul and queryCondition != ''">
                 AND (u.username_ LIKE CONCAT('%', #{queryCondition}, '%') or u.phone_ = #{queryCondition} or u.id_ = #{queryCondition})
             </if>
@@ -329,6 +347,41 @@
             </if>
         </where>
     </select>
+    <select id="findRecordCount" resultType="java.lang.Integer">
+
+    </select>
+    <select id="queryRecord" resultType="com.ym.mec.biz.dal.entity.CloudTeacherStudent">
+        SELECT
+            tor.order_no_ as orderNo,
+            cto.id_ AS cloudTeacherOrderId,
+            cto.student_id_ AS studentId,
+            cto.type_ AS type,
+            CASE cto.type_ WHEN 1 THEN '天'
+                WHEN 2 THEN '月'
+                WHEN 3 THEN '季'
+                WHEN 4 THEN '半年'
+                WHEN 5 THEN '年' ELSE ''
+                END AS typeName,
+            cto.time_ AS time,
+            sj.id_ AS SUBJECT,
+            sj.name_ AS subjectName,
+            u.tenant_id_ AS tenantId,
+            u.username_ AS NAME,
+            u.phone_ AS phone
+        FROM
+            cloud_teacher_order cto
+                LEFT JOIN tenant_order_record tor ON tor.id_ = cto.order_id_
+                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_
+                LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+        <where>
+            cto.status_ = 2 AND sr.music_group_status_ = 'NORMAL' AND mg.status_ = 'PROGRESS' and tor.order_no_ is not null
+            AND cto.type_ > 1
+        </where>
+        <include refid="global.limit"/>
+    </select>
 
     <sql id="queryCloudTeacherActiveDetailSql">
         <where>

+ 0 - 37
mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderRecordMapper.xml

@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ym.mec.biz.dal.dao.CloudTeacherOrderRecordDao">
-    <resultMap id="BaseResultMap" type="com.ym.mec.biz.dal.entity.CloudTeacherOrderRecord">
-        <id column="id_" jdbcType="INTEGER" property="id"/>
-        <result column="tenant_id_" jdbcType="INTEGER" property="tenantId"/>
-        <result column="order_no_" jdbcType="VARCHAR" property="orderNo"/>
-        <result column="trans_no_" jdbcType="VARCHAR" property="transNo"/>
-        <result column="order_type_" jdbcType="VARCHAR" property="orderType"/>
-        <result column="payment_channel_" jdbcType="VARCHAR" property="paymentChannel"/>
-        <result column="pay_channel_" jdbcType="VARCHAR" property="payChannel"/>
-        <result column="expect_amount" jdbcType="VARCHAR" property="expectAmount"/>
-        <result column="actual_amount" jdbcType="VARCHAR" property="actualAmount"/>
-        <result column="order_state_" jdbcType="INTEGER" property="orderState"/>
-        <result column="pay_date_" jdbcType="TIMESTAMP" property="payDate"/>
-        <result column="pay_time_" jdbcType="TIMESTAMP" property="payTime"/>
-        <result column="created_time_" jdbcType="TIMESTAMP" property="createdTime"/>
-        <result column="pay_student_ids_" jdbcType="VARCHAR" property="payStudentIds"/>
-    </resultMap>
-
-    <sql id="Base_Column_List">
-        id_, tenant_id_, order_no_, trans_no_, order_type_, payment_channel_, pay_channel_, expect_amount, actual_amount, order_state_, pay_date_, pay_time_, created_time_, pay_student_ids_
-    </sql>
-
-    <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
-            parameterType="com.ym.mec.biz.dal.entity.CloudTeacherOrderRecord">
-        insert into cloud_teacher_order_record(tenant_id_, order_no_, trans_no_, order_type_, payment_channel_,
-        pay_channel_, expect_amount, actual_amount, order_state_, pay_date_, pay_time_, created_time_, pay_student_ids_)
-        values
-        <foreach collection="entities" item="entity" separator=",">
-            (#{entity.tenantId}, #{entity.orderNo}, #{entity.transNo}, #{entity.orderType}, #{entity.paymentChannel},
-            #{entity.payChannel}, #{entity.expectAmount}, #{entity.actualAmount}, #{entity.orderState},
-            #{entity.payDate}, #{entity.payTime}, #{entity.createdTime}, #{entity.payStudentId})
-        </foreach>
-    </insert>
-
-</mapper>

+ 17 - 11
mec-web/src/main/java/com/ym/mec/web/controller/CloudTeacherOrderController.java

@@ -1,23 +1,15 @@
 package com.ym.mec.web.controller;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.alibaba.fastjson.support.spring.annotation.FastJsonView;
 import com.ym.mec.biz.dal.entity.CloudTeacherStudent;
-import com.ym.mec.biz.dal.entity.TenantConfig;
 import com.ym.mec.biz.dal.page.CloudTeacherOrderQueryInfo;
 import com.ym.mec.biz.service.CloudTeacherOrderService;
-import com.ym.mec.biz.service.TenantConfigService;
 import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.thirdparty.yqpay.Msg;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
-import java.sql.Wrapper;
 import java.util.List;
 
 /**
@@ -38,7 +30,7 @@ public class CloudTeacherOrderController extends BaseController {
     @ApiOperation(value ="查询未激活团练宝用户")
     @PostMapping("/queryInactive")
     // @PreAuthorize("@pcs.hasPermissions('cloudTeacherOrder/queryUnActive')")
-    public Object queryInactive(CloudTeacherOrderQueryInfo cloudTeacherOrderQueryInfo) {
+    public Object queryInactive(CloudTeacherOrderQueryInfo cloudTeacherOrderQueryInfo) throws Exception {
         cloudTeacherOrderQueryInfo.setStatus(1);
         return succeed(cloudTeacherOrderService.queryInactive(cloudTeacherOrderQueryInfo));
     }
@@ -46,15 +38,22 @@ public class CloudTeacherOrderController extends BaseController {
     @ApiOperation(value ="查询已激活团练宝用户")
     @PostMapping("/queryActive")
     // @PreAuthorize("@pcs.hasPermissions('cloudTeacherOrder/queryActive')")
-    public Object queryActive(CloudTeacherOrderQueryInfo cloudTeacherOrderQueryInfo) {
+    public Object queryActive(CloudTeacherOrderQueryInfo cloudTeacherOrderQueryInfo) throws Exception {
         cloudTeacherOrderQueryInfo.setStatus(2);
         return succeed(cloudTeacherOrderService.queryInactive(cloudTeacherOrderQueryInfo));
     }
 
+    @ApiOperation(value ="激活记录")
+    @PostMapping("/queryActiveRecord")
+    // @PreAuthorize("@pcs.hasPermissions('cloudTeacherOrder/queryActive')")
+    public Object queryActiveRecord(CloudTeacherOrderQueryInfo cloudTeacherOrderQueryInfo) throws Exception {
+        return succeed(cloudTeacherOrderService.queryActiveRecord(cloudTeacherOrderQueryInfo));
+    }
+
     @ApiOperation(value ="激活团练宝用户")
     @PostMapping("/pay")
     // @PreAuthorize("@pcs.hasPermissions('cloudTeacherOrder/pay')")
-    public Object pay(List<CloudTeacherStudent> cloudTeacherStudents) throws Exception {
+    public Object pay(@RequestBody List<CloudTeacherStudent> cloudTeacherStudents) throws Exception {
         return succeed(cloudTeacherOrderService.pay(cloudTeacherStudents));
     }
 
@@ -64,4 +63,11 @@ public class CloudTeacherOrderController extends BaseController {
     public Msg payNotify(@ModelAttribute Msg msg) {
         return cloudTeacherOrderService.payNotify(msg);
     }
+
+    @ApiOperation(value ="轮询查询订单状态")
+    @GetMapping("/payCheck")
+    // @PreAuthorize("@pcs.hasPermissions('cloudTeacherOrder/payNotify')")
+    public Boolean payCheck(@RequestParam String orderNo ) {
+        return cloudTeacherOrderService.payCheck(orderNo);
+    }
 }

+ 0 - 27
mec-web/src/main/java/com/ym/mec/web/controller/CloudTeacherOrderRecordController.java

@@ -1,27 +0,0 @@
-package com.ym.mec.web.controller;
-
-
-import com.ym.mec.biz.dal.entity.CloudTeacherOrderRecord;
-import com.ym.mec.biz.service.CloudTeacherOrderRecordService;
-import org.springframework.web.bind.annotation.*;
-import com.ym.mec.common.controller.BaseController;
-
-import javax.annotation.Resource;
-
-/**
- * 机构付款记录表(CloudTeacherOrderRecord)表控制层
- *
- * @author makejava
- * @since 2021-12-21 18:13:47
- */
-@RestController
-@RequestMapping("/cloudTeacherOrderRecord")
-public class CloudTeacherOrderRecordController extends BaseController {
-    /**
-     * 服务对象
-     */
-    @Resource
-    private CloudTeacherOrderRecordService cloudTeacherOrderRecordService;
-
-}
-

+ 6 - 2
mec-web/src/main/java/com/ym/mec/web/controller/SysManualController.java

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ym.mec.biz.dal.entity.SysManual;
 import com.ym.mec.biz.dal.page.SysManualQueryInfo;
 import com.ym.mec.biz.service.SysManualService;
-import com.ym.mec.common.page.WrapperUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,7 +32,12 @@ public class SysManualController extends BaseController {
     @ApiOperation(value = "查询操作手册")
     @GetMapping("/list")
     public Object list(SysManualQueryInfo queryInfo) {
-        QueryWrapper<SysManual> queryWrapper = new WrapperUtil<SysManual>().hasEq("menu_id_", queryInfo.getMenuId()).queryWrapper();
+        QueryWrapper<SysManual> queryWrapper = null;
+        if (queryInfo.getMenuId() != null) {
+            queryWrapper = new QueryWrapper<SysManual>().eq("menu_id_", queryInfo.getMenuId());
+        } else {
+            queryWrapper = new QueryWrapper<>();
+        }
         List<SysManual> result = sysManualService.list(queryWrapper);
         return succeed(result);
     }