浏览代码

Merge branch 'feature/0908-vip' into master_saas

yuanliang 1 年之前
父节点
当前提交
69085e5b8a
共有 23 个文件被更改,包括 235 次插入50 次删除
  1. 1 0
      .gitignore
  2. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java
  3. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentGoodsSellDao.java
  4. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherCancel.java
  5. 10 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherOrder.java
  6. 45 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherStudent.java
  7. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/CloudTeacherOrderQueryInfo.java
  8. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CloudTeacherOrderService.java
  9. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  10. 44 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java
  11. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java
  12. 39 15
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java
  13. 10 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentGoodsSellServiceImpl.java
  14. 2 2
      mec-biz/src/main/resources/config/contracts/courses.ftl
  15. 2 2
      mec-biz/src/main/resources/config/contracts/goods.ftl
  16. 2 2
      mec-biz/src/main/resources/config/contracts/practice.ftl
  17. 2 2
      mec-biz/src/main/resources/config/contracts/product5.ftl
  18. 15 2
      mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml
  19. 3 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  20. 6 2
      mec-biz/src/main/resources/config/mybatis/StudentGoodsSellMapper.xml
  21. 0 0
      mec-biz/src/main/resources/config/mybatis/TenantInfoMapper.xml
  22. 1 1
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImUserModel.java
  23. 14 2
      mec-web/src/main/java/com/ym/mec/web/controller/CloudTeacherOrderController.java

+ 1 - 0
.gitignore

@@ -32,6 +32,7 @@ mvnw
 mvnw.cmd
 *.iws
 *.ipr
+*.http
 /codegen/src/main/resources/generateConfigration.xml
 **/bootstrap-dev.yml
 **/bootstrap-dev.properties

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

@@ -9,6 +9,7 @@ import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -118,4 +119,8 @@ public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
     List<Map<Integer,BigDecimal>> sumPersonalCloudAmount(@Param("month") String month,
                                                          @Param("firstDay") String firstDayOfMonth,
                                                          @Param("lastDay") String lastDayOfMonth);
+
+    int cancelInactiveCloudTeacher(@Param("idList") List<Long> idList, @Param("cancelReason") String cancelReason,
+                                   @Param("operator") Integer operator, @Param("operateTime") Date operateTime,
+                                   @Param("tenantId") Integer tenantId);
 }

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentGoodsSellDao.java

@@ -57,7 +57,7 @@ public interface StudentGoodsSellDao extends BaseDAO<Integer, StudentGoodsSell>
      * @param autoAffirmReceiveTime:
      * @return java.util.List<java.lang.String>
      */
-    String queryNoAffirmOrderNo(@Param("autoAffirmReceiveTime") String autoAffirmReceiveTime, @Param("tenantId") Integer tenantid);
+    List<String> queryNoAffirmOrderNo(@Param("autoAffirmReceiveTime") String autoAffirmReceiveTime, @Param("tenantId") Integer tenantid);
 
     /**
      * @describe 自动确认收货
@@ -65,10 +65,10 @@ public interface StudentGoodsSellDao extends BaseDAO<Integer, StudentGoodsSell>
      * @author zouxuan
      * @date 2020/10/12
      * @time 10:15
-     * @param orderNo:
+     * @param orderNos:
      * @return void
      */
-    void autoAffirmReceive(@Param("orderNo") String orderNo, @Param("status") String status);
+    void autoAffirmReceive(@Param("orderNos") List<String> orderNos, @Param("status") String status);
 
     /**
      * @describe 获取学生端商品购买列表

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherCancel.java

@@ -0,0 +1,20 @@
+package com.ym.mec.biz.dal.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 取消云教练
+ */
+@ApiModel("取消云教练")
+@Data
+public class CloudTeacherCancel {
+
+    @ApiModelProperty("取消未激活的云教练,多个用逗号隔开")
+    private String ids;
+
+    @ApiModelProperty("取消原因")
+    private String cancelReason;
+
+}

+ 10 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherOrder.java

@@ -73,7 +73,16 @@ public class CloudTeacherOrder {
 
     @ApiModelProperty(value = "乐团编号")
     private String musicGroupId;
-    
+
+    @ApiModelProperty(value = "操作人")
+    private Long operator;
+
+    @ApiModelProperty(value = "操作时间")
+    private Long operateTime;
+
+    @ApiModelProperty(value = "取消原因")
+    private Long cancelReason;
+
     private StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
 
     private Integer tenantId = TenantContextHolder.getTenantId();

+ 45 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CloudTeacherStudent.java

@@ -4,6 +4,7 @@ import com.ym.mec.biz.dal.enums.PeriodEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * Description
@@ -58,6 +59,18 @@ public class CloudTeacherStudent {
     @ApiModelProperty(value = "数量")
     private Integer time;
 
+    @ApiModelProperty(value = "操作人")
+    private Integer operator;
+
+    @ApiModelProperty(value = "操作人名称")
+    private String operatorName;
+
+    @ApiModelProperty(value = "操作时间")
+    private Date operateTime;
+
+    @ApiModelProperty(value = "取消原因")
+    private String cancelReason;
+
     // ------------------------------------------------------------------------------------------
 
     public String getTransNo() {
@@ -180,4 +193,36 @@ public class CloudTeacherStudent {
     public void setAmount(BigDecimal amount) {
         this.amount = amount;
     }
+
+    public Integer getOperator() {
+        return operator;
+    }
+
+    public void setOperator(Integer operator) {
+        this.operator = operator;
+    }
+
+    public Date getOperateTime() {
+        return operateTime;
+    }
+
+    public void setOperateTime(Date operateTime) {
+        this.operateTime = operateTime;
+    }
+
+    public String getOperatorName() {
+        return operatorName;
+    }
+
+    public void setOperatorName(String operatorName) {
+        this.operatorName = operatorName;
+    }
+
+    public String getCancelReason() {
+        return cancelReason;
+    }
+
+    public void setCancelReason(String cancelReason) {
+        this.cancelReason = cancelReason;
+    }
 }

+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CloudTeacherOrderQueryInfo.java

@@ -13,8 +13,8 @@ public class CloudTeacherOrderQueryInfo extends QueryInfo {
 	@ApiModelProperty(value = "乐团Id")
 	private String musicGroupId;
 
-	@ApiModelProperty(value = "交易状态(0-待生效 1-生效中 2-已生效 3-已退)")
-	private Integer status;
+	@ApiModelProperty(value = "交易状态(0-待生效 1-生效中 2-已生效 3-已退 4-已取消,多个状态用逗号隔开)")
+	private String status;
 
 	@ApiModelProperty(value = "学生编号")
 	private Integer studentId;
@@ -54,11 +54,11 @@ public class CloudTeacherOrderQueryInfo extends QueryInfo {
 	@ApiModelProperty(value = "结束时间")
 	private Date endTime;
 
-	public Integer getStatus() {
+	public String getStatus() {
 		return status;
 	}
 
-	public void setStatus(Integer status) {
+	public void setStatus(String status) {
 		this.status = status;
 	}
 

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CloudTeacherOrderService.java

@@ -120,4 +120,6 @@ public interface CloudTeacherOrderService extends BaseService<Long, CloudTeacher
     void save(CloudTeacherOrder cloudTeacherOrder,Boolean autoActivationFlag);
 
     CloudTeacherOrder queryByOrderId(Long orderId);
+
+    Boolean cancelInactive(CloudTeacherCancel cloudTeacherCancel,Integer tenantId);
 }

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

@@ -4176,7 +4176,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         }
         map.put("userId", userId);
         if (StringUtils.isEmpty(user.getAvatar())) {
-            map.put("avatar", "https://daya-online.oss-cn-beijing.aliyuncs.com/201912/RkoZBNq.jpeg");
+            map.put("avatar", "https://oss.dayaedu.com/201912/RkoZBNq.jpeg");
         } else {
             map.put("avatar", user.getAvatar());
         }

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java

@@ -3,11 +3,15 @@ package com.ym.mec.biz.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.CloudTeacherOrderDto;
 import com.ym.mec.biz.dal.dto.Mapper;
+import com.ym.mec.biz.dal.dto.SimpleUserDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
@@ -16,6 +20,7 @@ import com.ym.mec.biz.dal.enums.TenantOrderRecordEnum;
 import com.ym.mec.biz.dal.page.CloudTeacherOrderQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.service.IdGeneratorService;
@@ -24,6 +29,7 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import jodd.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -59,6 +65,12 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     @Autowired
     private SysConfigDao sysConfigDao;
 
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private EmployeeDao employeeDao;
+
     @Override
     public BaseDAO<Long, CloudTeacherOrder> getDAO() {
         return cloudTeacherOrderDao;
@@ -115,7 +127,18 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
             return pageInfo;
         }
         assert dataList != null;
+
+        Map<Integer, SimpleUserDto> empMapById = new HashMap<>();
+        List<Integer> operatorIdList = dataList.stream().map(CloudTeacherStudent::getOperator)
+                .distinct().collect(Collectors.toList());
+        if (!operatorIdList.isEmpty()) {
+            List<SimpleUserDto> byIds = employeeDao.findByIds(operatorIdList);
+            byIds.forEach(next -> empMapById.put(next.getUserId(), next));
+        }
         for (CloudTeacherStudent cst : dataList) {
+            if (cst.getOperator() != null) {
+                cst.setOperatorName(empMapById.getOrDefault(cst.getOperator(), new SimpleUserDto()).getUserName());
+            }
             TenantConfig tenantConfig = tenantConfigService.getOne(new QueryWrapper<TenantConfig>().eq("tenant_id_", cst.getTenantId()));
             if (tenantConfig == null) {
                 throw new Exception("未找到组织Id " + cst.getTenantId().toString() + "在 TenantConfig 表");
@@ -353,4 +376,25 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     public String queryActiveOrderPage(Integer userId, Integer activeRemark, String remark) {
         return cloudTeacherOrderDao.queryActiveOrderPage(userId, activeRemark, remark);
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Boolean cancelInactive(CloudTeacherCancel cloudTeacherCancel,Integer tenantId) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("登录失效,请重新登录");
+        }
+        String ids = cloudTeacherCancel.getIds();
+        if (StringUtils.isEmpty(ids)) {
+            throw new BizException("未指定删除云教练");
+        }
+
+        List<Long> idList = Arrays.stream(ids.split(",")).map(Long::valueOf).collect(Collectors.toList());
+        int cancelNum = cloudTeacherOrderDao.cancelInactiveCloudTeacher(idList, cloudTeacherCancel.getCancelReason(),
+                sysUser.getId(), new Date(), tenantId);
+        if (cancelNum != idList.size()) {
+            throw new BizException("数据已更新,请刷新后重试");
+        }
+        return true;
+    }
 }

+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java

@@ -1006,10 +1006,10 @@ public class ContractServiceImpl implements ContractService {
 		if (studentInfo.getTenantId() == 1) {
 			if (OwnershipType.OWN.name().equals(params.get("ownershipType"))) {
 				//params.put("companyName", "深圳大雅乐盟网络教育股份有限公司");
-				//params.put("sealPicture", "https://daya-online.oss-cn-beijing.aliyuncs.com/website/cachet.png");
+				//params.put("sealPicture", "https://oss.dayaedu.com/website/cachet.png");
 			} else {
 				params.put("companyName", "武汉长乐长风乐器销售有限公司");
-				params.put("sealPicture", "https://daya-online.oss-cn-beijing.aliyuncs.com/website/clcf.png");
+				params.put("sealPicture", "https://oss.dayaedu.com/website/clcf.png");
 			}
 		}
 
@@ -1137,10 +1137,10 @@ public class ContractServiceImpl implements ContractService {
 		if (studentInfo.getTenantId() == 1) {
 			if (OwnershipType.OWN.name().equals(params.get("ownershipType"))) {
 				//params.put("companyName", "深圳大雅乐盟网络教育股份有限公司");
-				//params.put("sealPicture", "https://daya-online.oss-cn-beijing.aliyuncs.com/website/cachet.png");
+				//params.put("sealPicture", "https://oss.dayaedu.com/website/cachet.png");
 			} else {
 				params.put("companyName", "武汉长乐长风乐器销售有限公司");
-				params.put("sealPicture", "https://daya-online.oss-cn-beijing.aliyuncs.com/website/clcf.png");
+				params.put("sealPicture", "https://oss.dayaedu.com/website/clcf.png");
 			}
 		}
 		

+ 39 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -3217,7 +3217,9 @@ public class ExportServiceImpl implements ExportService {
 
     public @PostConstruct
     void initOrderDetailTypeServiceConsumerMap() {
-        BiConsumer<StudentPaymentOrderExportDto, StudentPaymentOrderDetail> con1 = (orderDto, detail) -> orderDto.setMusicGroupCourseFee(orderDto.getMusicGroupCourseFee().add(detail.getPrice()));
+        BiConsumer<StudentPaymentOrderExportDto, StudentPaymentOrderDetail> con1 =
+                (orderDto, detail) -> orderDto.setMusicGroupCourseFee(orderDto.getMusicGroupCourseFee().add(detail.getPrice())
+                        .compareTo(orderDto.getServiceAmount()) > 0 ? orderDto.getServiceAmount() : orderDto.getMusicGroupCourseFee().add(detail.getPrice()));
         orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.COURSE, con1);
         orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.CLASSROOM, con1);
         orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.SINGLE, con1);
@@ -3230,15 +3232,30 @@ public class ExportServiceImpl implements ExportService {
         orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.HIGH, con1);
         orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.HIGH_ONLINE, con1);
         orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.HIGH_ONLINE_COURSE, con1);
-        orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.DEGREE_REGISTRATION, (orderDto, detail) -> orderDto.setDegreeFee(orderDto.getDegreeFee().add(detail.getPrice())));
-        orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.MAINTENANCE, (orderDto, detail) -> orderDto.setMaintenanceFee(orderDto.getMaintenanceFee().add(detail.getPrice())));
-        BiConsumer<StudentPaymentOrderExportDto, StudentPaymentOrderDetail> con2 = (orderDto, detail) -> orderDto.setCloudTeacherFee(orderDto.getCloudTeacherFee().add(detail.getPrice()));
+        orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.DEGREE_REGISTRATION,
+                (orderDto, detail) -> orderDto.setDegreeFee(orderDto.getDegreeFee().add(detail.getPrice())
+                        .compareTo(orderDto.getServiceAmount()) > 0 ? orderDto.getServiceAmount() : orderDto.getDegreeFee().add(detail.getPrice())));
+        orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.MAINTENANCE,
+                (orderDto, detail) -> orderDto.setMaintenanceFee(orderDto.getMaintenanceFee().add(detail.getPrice())
+                        .compareTo(orderDto.getServiceAmount()) > 0 ? orderDto.getServiceAmount() : orderDto.getMaintenanceFee().add(detail.getPrice())));
+        //原有的业务逻辑不支持同一笔订单明细分润导多个账户,所以这里先比较金额大小,会有bug
+        BiConsumer<StudentPaymentOrderExportDto, StudentPaymentOrderDetail> con2 =
+                (orderDto, detail) -> orderDto.setCloudTeacherFee(orderDto.getCloudTeacherFee().add(detail.getPrice())
+                        .compareTo(orderDto.getServiceAmount()) > 0 ? orderDto.getServiceAmount() : orderDto.getCloudTeacherFee().add(detail.getPrice()));
         orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.CLOUD_TEACHER, con2);
         orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.CLOUD_TEACHER_PLUS, con2);
-        orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.THEORY_COURSE, (orderDto, detail) -> orderDto.setTheoryCourseFee(orderDto.getTheoryCourseFee().add(detail.getPrice())));
-        orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.PRACTICE, (orderDto, detail) -> orderDto.setPracticeCourseFee(orderDto.getPracticeCourseFee().add(detail.getPrice())));
-        orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.VIP, (orderDto, detail) -> orderDto.setVipCourseFee(orderDto.getVipCourseFee().add(detail.getPrice())));
-        orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.REPAIR, (orderDto, detail) -> orderDto.setRepairFee(orderDto.getRepairFee().add(detail.getPrice())));
+        orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.THEORY_COURSE,
+                (orderDto, detail) -> orderDto.setTheoryCourseFee(orderDto.getTheoryCourseFee().add(detail.getPrice())
+                        .compareTo(orderDto.getServiceAmount()) > 0 ? orderDto.getServiceAmount() : orderDto.getTheoryCourseFee().add(detail.getPrice())));
+        orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.PRACTICE,
+                (orderDto, detail) -> orderDto.setPracticeCourseFee(orderDto.getPracticeCourseFee().add(detail.getPrice())
+                        .compareTo(orderDto.getServiceAmount()) > 0 ? orderDto.getServiceAmount() : orderDto.getPracticeCourseFee().add(detail.getPrice())));
+        orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.VIP,
+                (orderDto, detail) -> orderDto.setVipCourseFee(orderDto.getVipCourseFee().add(detail.getPrice())
+                        .compareTo(orderDto.getServiceAmount()) > 0 ? orderDto.getServiceAmount() : orderDto.getVipCourseFee().add(detail.getPrice())));
+        orderDetailTypeServiceConsumerMap.put(OrderDetailTypeEnum.REPAIR,
+                (orderDto, detail) -> orderDto.setRepairFee(orderDto.getRepairFee().add(detail.getPrice())
+                        .compareTo(orderDto.getServiceAmount()) > 0 ? orderDto.getServiceAmount() : orderDto.getRepairFee().add(detail.getPrice())));
     }
 
     //计算订单详情实际支付金额(按比例)
@@ -3282,18 +3299,22 @@ public class ExportServiceImpl implements ExportService {
         BigDecimal price = orderDetail.getPrice().subtract(orderDetail.getIncome());
         switch (orderDetail.getType()) {
             case OTHER:
-                basicOrder.setOtherFee(basicOrder.getOtherFee().add(price));
+                basicOrder.setOtherFee(basicOrder.getOtherFee().add(price)
+                        .compareTo(basicOrder.getSaleAmount()) > 0 ? basicOrder.getSaleAmount() : basicOrder.getOtherFee().add(price));
                 break;
             case MUSICAL:
                 if (orderDetail.getKitGroupPurchaseType() != null && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
-                    basicOrder.setLeaseFee(basicOrder.getLeaseFee().add(price));
+                    basicOrder.setLeaseFee(basicOrder.getLeaseFee().add(price)
+                            .compareTo(basicOrder.getSaleAmount()) > 0 ? basicOrder.getSaleAmount() : basicOrder.getLeaseFee().add(price));
                 } else {
-                    basicOrder.setMusicalFee(basicOrder.getMusicalFee().add(price));
+                    basicOrder.setMusicalFee(basicOrder.getMusicalFee().add(price)
+                            .compareTo(basicOrder.getSaleAmount()) > 0 ? basicOrder.getSaleAmount() : basicOrder.getMusicalFee().add(price));
                 }
                 break;
             case TEACHING:
             case ACCESSORIES:
-                basicOrder.setTeachingFee(basicOrder.getTeachingFee().add(price));
+                basicOrder.setTeachingFee(basicOrder.getTeachingFee().add(price)
+                        .compareTo(basicOrder.getSaleAmount()) > 0 ? basicOrder.getSaleAmount() : basicOrder.getTeachingFee().add(price));
                 break;
         }
     }
@@ -3306,13 +3327,16 @@ public class ExportServiceImpl implements ExportService {
             case ACCESSORIES:
             case TEACHING:
             case STAFF:
-                basicOrder.setTeachingFee(basicOrder.getTeachingFee().add(sellOrder.getActualAmount()));
+                basicOrder.setTeachingFee(basicOrder.getTeachingFee().add(sellOrder.getActualAmount())
+                        .compareTo(basicOrder.getSaleAmount()) > 0 ? basicOrder.getSaleAmount() : basicOrder.getTeachingFee().add(sellOrder.getActualAmount()));
                 break;
             case INSTRUMENT:
-                basicOrder.setMusicalFee(basicOrder.getMusicalFee().add(sellOrder.getActualAmount()));
+                basicOrder.setMusicalFee(basicOrder.getMusicalFee().add(sellOrder.getActualAmount())
+                        .compareTo(basicOrder.getSaleAmount()) > 0 ? basicOrder.getSaleAmount() : basicOrder.getMusicalFee().add(sellOrder.getActualAmount()));
                 break;
             case OTHER:
-                basicOrder.setOtherFee(basicOrder.getOtherFee().add(sellOrder.getActualAmount()));
+                basicOrder.setOtherFee(basicOrder.getOtherFee().add(sellOrder.getActualAmount())
+                        .compareTo(basicOrder.getSaleAmount()) > 0 ? basicOrder.getSaleAmount() : basicOrder.getOtherFee().add(sellOrder.getActualAmount()));
                 break;
         }
     }

+ 10 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentGoodsSellServiceImpl.java

@@ -18,6 +18,7 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.util.collection.MapUtil;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -81,25 +82,27 @@ public class StudentGoodsSellServiceImpl extends BaseServiceImpl<Integer, Studen
     public void affirmReceive(String orderNo) {
         String str = "MANUAL_RECEIVE";
         if (StringUtils.isNotEmpty(orderNo)) {
-            studentGoodsSellDao.autoAffirmReceive(orderNo, str);
+            List<String> orderNos = new ArrayList<>();
+            orderNos.add(orderNo);
+            studentGoodsSellDao.autoAffirmReceive(orderNos, str);
             return;
         }
         //如果订单编号为空,那么自动确认
-        StringBuffer sb = new StringBuffer();
         str = "AUTO_RECEIVE";
         List<TenantInfo> tenantInfos = tenantInfoService.list(new QueryWrapper<TenantInfo>().eq("state_",1));
         if(tenantInfos != null && tenantInfos.size() > 0){
+            List<String> orderNos = new ArrayList<>();
             for (int i = 0; i < tenantInfos.size(); i++) {
                 TenantInfo tenantInfo = tenantInfos.get(i);
                 String autoAffirmReceiveTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.AUTO_AFFIRM_RECEIVE_TIME,tenantInfo.getId());
                 //获取到期的订单编号
-                String s = studentGoodsSellDao.queryNoAffirmOrderNo(autoAffirmReceiveTime, tenantInfo.getId());
-                if(StringUtils.isNotEmpty(s)){
-                    sb.append(s).append(",");
+                List<String> strings = studentGoodsSellDao.queryNoAffirmOrderNo(autoAffirmReceiveTime, tenantInfo.getId());
+                if(CollectionUtils.isNotEmpty(strings)){
+                    orderNos.addAll(strings);
                 }
             }
-            if (sb.length() > 0) {
-                studentGoodsSellDao.autoAffirmReceive(sb.substring(0,sb.length() - 1), str);
+            if (CollectionUtils.isNotEmpty(orderNos)) {
+                studentGoodsSellDao.autoAffirmReceive(orderNos, str);
             }
         }
     }

+ 2 - 2
mec-biz/src/main/resources/config/contracts/courses.ftl

@@ -168,11 +168,11 @@
         <div class="signature">
         	<#if isShowVisualSeal>
         	<#if ownershipType == 'OWN'>
-            <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司<img class="cachet" src="https://daya-online.oss-cn-beijing.aliyuncs.com/website/cachet.png" alt="" />
+            <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司<img class="cachet" src="https://oss.dayaedu.com/website/cachet.png" alt="" />
                 <span>日期:${.now?string("yyyy年MM月dd日")}</span>
             </div>
             <#else>
-            <div class="sign">甲方签章:武汉长乐长风乐器销售有限公司<img class="cachet" src="https://daya-online.oss-cn-beijing.aliyuncs.com/website/clcf.png" alt="" />
+            <div class="sign">甲方签章:武汉长乐长风乐器销售有限公司<img class="cachet" src="https://oss.dayaedu.com/website/clcf.png" alt="" />
                 <span>日期:${.now?string("yyyy年MM月dd日")}</span>
             </div>
             </#if>

+ 2 - 2
mec-biz/src/main/resources/config/contracts/goods.ftl

@@ -147,11 +147,11 @@
         <div class="signature">
         	<#if isShowVisualSeal>
         	<#if ownershipType == 'OWN'>
-            <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司<img class="cachet" src="https://daya-online.oss-cn-beijing.aliyuncs.com/website/cachet.png" alt="" />
+            <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司<img class="cachet" src="https://oss.dayaedu.com/website/cachet.png" alt="" />
                 <span>日期:${.now?string("yyyy年MM月dd日")}</span>
             </div>
             <#else>
-            <div class="sign">甲方签章:武汉长乐长风乐器销售有限公司<img class="cachet" src="https://daya-online.oss-cn-beijing.aliyuncs.com/website/clcf.png" alt="" />
+            <div class="sign">甲方签章:武汉长乐长风乐器销售有限公司<img class="cachet" src="https://oss.dayaedu.com/website/clcf.png" alt="" />
                 <span>日期:${.now?string("yyyy年MM月dd日")}</span>
             </div>
             </#if>

+ 2 - 2
mec-biz/src/main/resources/config/contracts/practice.ftl

@@ -158,11 +158,11 @@
 		<div class="signature">
         	<#if isShowVisualSeal>
         	<#if ownershipType == 'OWN'>
-            <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司<img class="cachet" src="https://daya-online.oss-cn-beijing.aliyuncs.com/website/cachet.png" alt="" />
+            <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司<img class="cachet" src="https://oss.dayaedu.com/website/cachet.png" alt="" />
                 <span>日期:${.now?string("yyyy年MM月dd日")}</span>
             </div>
             <#else>
-            <div class="sign">甲方签章:武汉长乐长风乐器销售有限公司<img class="cachet" src="https://daya-online.oss-cn-beijing.aliyuncs.com/website/clcf.png" alt="" />
+            <div class="sign">甲方签章:武汉长乐长风乐器销售有限公司<img class="cachet" src="https://oss.dayaedu.com/website/clcf.png" alt="" />
                 <span>日期:${.now?string("yyyy年MM月dd日")}</span>
             </div>
             </#if>

+ 2 - 2
mec-biz/src/main/resources/config/contracts/product5.ftl

@@ -178,11 +178,11 @@
         <div class="signature">
         	<#if isShowVisualSeal>
         	<#if ownershipType == 'OWN'>
-            <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司<img class="cachet" src="https://daya-online.oss-cn-beijing.aliyuncs.com/website/cachet.png" alt="" />
+            <div class="sign">甲方签章:深圳大雅乐盟网络教育股份有限公司<img class="cachet" src="https://oss.dayaedu.com/website/cachet.png" alt="" />
                 <span>日期:${.now?string("yyyy年MM月dd日")}</span>
             </div>
             <#else>
-            <div class="sign">甲方签章:武汉长乐长风乐器销售有限公司<img class="cachet" src="https://daya-online.oss-cn-beijing.aliyuncs.com/website/clcf.png" alt="" />
+            <div class="sign">甲方签章:武汉长乐长风乐器销售有限公司<img class="cachet" src="https://oss.dayaedu.com/website/clcf.png" alt="" />
                 <span>日期:${.now?string("yyyy年MM月dd日")}</span>
             </div>
             </#if>

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

@@ -331,6 +331,9 @@
                cto.tenant_id_ as tenantId,
                u.username_ as name,
                u.phone_ as phone
+               ,cto.operator_ as operator
+               ,cto.operate_time_ as operateTime
+               ,cto.cancel_reason_ as cancelReason
         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_
@@ -339,7 +342,7 @@
             left join student_registration sr ON cto.student_id_ = sr.user_id_
         </if>
         <where>
-            cto.status_ = #{status} AND cto.tenant_id_ = #{tenantId}
+            FIND_IN_SET(cto.status_,#{status}) AND cto.tenant_id_ = #{tenantId}
             <if test="organIds != null and organIds != ''">
                 AND FIND_IN_SET(u.organ_id_ , #{organIds})
             </if>
@@ -366,7 +369,7 @@
             left join student_registration sr ON cto.student_id_ = sr.user_id_
         </if>
         <where>
-            cto.status_ = #{status} AND cto.tenant_id_ = #{tenantId}
+            FIND_IN_SET(cto.status_,#{status}) AND cto.tenant_id_ = #{tenantId}
             <if test="organIds != null and organIds != ''">
                 AND FIND_IN_SET(u.organ_id_ , #{organIds})
             </if>
@@ -520,4 +523,14 @@
           AND cto.settlement_report_flag_ = 0 AND cto.status_ = 2
         group by cto.organ_id_
     </select>
+
+    <update id="cancelInactiveCloudTeacher">
+        update cloud_teacher_order
+        set operator_ = #{operator}, status_=4 ,cancel_reason_=#{cancelReason},operate_time_=#{operateTime}
+        where id_ in
+        <foreach collection="idList" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+        and status_ = 1 and tenant_id_ = #{tenantId}
+    </update>
 </mapper>

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -313,6 +313,9 @@
     <sql id="musicGroupQueryPageSql">
         <where>
             mg.del_flag_ = 0 AND mg.tenant_id_ = #{tenantId}
+            <if test="musicGroupName != null and musicGroupName != ''">
+                AND mg.name_ LIKE CONCAT('%',#{musicGroupName},'%')
+            </if>
             <if test="organId != null">
                 AND FIND_IN_SET(mg.organ_id_,#{organId})
             </if>

+ 6 - 2
mec-biz/src/main/resources/config/mybatis/StudentGoodsSellMapper.xml

@@ -88,7 +88,11 @@
 		</set> WHERE id_ = #{id} and tenant_id_ = #{tenantId}
 	</update>
 	<update id="autoAffirmReceive">
-		UPDATE student_payment_order SET receive_status_ = #{status},update_time_ = NOW() WHERE FIND_IN_SET(order_no_,#{orderNo})
+		UPDATE student_payment_order SET receive_status_ = #{status},update_time_ = NOW()
+		WHERE order_no_ IN
+		<foreach collection="orderNos" item="orderNo" separator="," open="(" close=")">
+		    #{orderNo}
+		</foreach>
 	</update>
 
 	<!-- 根据主键删除一条记录 -->
@@ -166,7 +170,7 @@
 		WHERE spo.order_no_ = #{orderNo} LIMIT 1
 	</select>
     <select id="queryNoAffirmOrderNo" resultType="java.lang.String">
-		SELECT GROUP_CONCAT(DISTINCT so.order_no_) FROM sell_order so
+		SELECT DISTINCT so.order_no_ FROM sell_order so
 		LEFT JOIN student_payment_order spo ON spo.order_no_ = so.order_no_
 		WHERE spo.status_ = 'SUCCESS' AND spo.receive_status_ = 'NO_RECEIVE' and spo.tenant_id_ = #{tenantId}
 		<if test="autoAffirmReceiveTime != null and autoAffirmReceiveTime != ''">

文件差异内容过多而无法显示
+ 0 - 0
mec-biz/src/main/resources/config/mybatis/TenantInfoMapper.xml


+ 1 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImUserModel.java

@@ -19,7 +19,7 @@ public class ImUserModel {
         this.id = id;
         this.name = name;
         if(StringUtils.isEmpty(portrait)){
-            this.portrait = "https://daya-online.oss-cn-beijing.aliyuncs.com/201912/RkoZBNq.jpeg";
+            this.portrait = "https://oss.dayaedu.com/201912/RkoZBNq.jpeg";
         }else {
             this.portrait = portrait;
         }

+ 14 - 2
mec-web/src/main/java/com/ym/mec/web/controller/CloudTeacherOrderController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.biz.dal.entity.CloudTeacherCancel;
 import com.ym.mec.biz.dal.entity.CloudTeacherStudent;
 import com.ym.mec.biz.dal.page.CloudTeacherAddQueryInfo;
 import com.ym.mec.biz.dal.page.CloudTeacherOrderQueryInfo;
@@ -11,6 +12,7 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -49,7 +51,9 @@ public class CloudTeacherOrderController extends BaseController {
         Integer tenantId = TenantContextHolder.getTenantId();
         cloudTeacherOrderQueryInfo.setTenantId(tenantId);
         String organIds = organizationService.getEmployeeOrgan("");
-        cloudTeacherOrderQueryInfo.setStatus(1);
+        if (StringUtils.isEmpty(cloudTeacherOrderQueryInfo.getStatus())) {
+            cloudTeacherOrderQueryInfo.setStatus("1,4");
+        }
         cloudTeacherOrderQueryInfo.setOrganIds(organIds); // 1,2,34,
         return succeed(cloudTeacherOrderService.queryInactive(cloudTeacherOrderQueryInfo));
     }
@@ -60,7 +64,7 @@ public class CloudTeacherOrderController extends BaseController {
     public HttpResponseResult<PageInfo<CloudTeacherStudent>> queryActive(@RequestBody CloudTeacherOrderQueryInfo cloudTeacherOrderQueryInfo) throws Exception {
         Integer tenantId = TenantContextHolder.getTenantId();
         cloudTeacherOrderQueryInfo.setTenantId(tenantId);
-        cloudTeacherOrderQueryInfo.setStatus(2);
+        cloudTeacherOrderQueryInfo.setStatus("2");
         return succeed(cloudTeacherOrderService.queryInactive(cloudTeacherOrderQueryInfo));
     }
 
@@ -86,4 +90,12 @@ public class CloudTeacherOrderController extends BaseController {
     public HttpResponseResult<Boolean> payCheck(@RequestParam String orderNo) {
         return succeed(cloudTeacherOrderService.payCheck(orderNo));
     }
+
+    @ApiOperation(value = "取消未激活的团练宝用户")
+    @PostMapping("/cancelInactive")
+    @PreAuthorize("@pcs.hasPermissions('cloudTeacherOrder/cancelInactive')")
+    public HttpResponseResult<Boolean> cancelInactive(@RequestBody CloudTeacherCancel cloudTeacherCancel) {
+        Integer tenantId = TenantContextHolder.getTenantId();
+        return succeed(cloudTeacherOrderService.cancelInactive(cloudTeacherCancel,tenantId));
+    }
 }

部分文件因为文件数量过多而无法显示