Procházet zdrojové kódy

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

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
zouxuan před 3 roky
rodič
revize
f08ad5f2c1
30 změnil soubory, kde provedl 208 přidání a 88 odebrání
  1. 0 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java
  2. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  3. 24 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TenantConfigDto.java
  4. 17 8
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysUserTsign.java
  5. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TenantConfig.java
  6. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  7. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TenantInfoInfoPageVo.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ContractService.java
  9. 0 2
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentService.java
  10. 4 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java
  11. 6 12
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java
  12. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OrderPayOpsServiceImpl.java
  13. 0 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  14. 4 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java
  15. 6 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantInfoSendMsgServiceImpl.java
  16. 18 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantInfoServiceImpl.java
  17. 10 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantOrderRecordServiceImpl.java
  18. 2 2
      mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml
  19. 1 3
      mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml
  20. 0 3
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  21. 2 1
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  22. 1 1
      mec-biz/src/main/resources/config/mybatis/SysCouponMapper.xml
  23. 6 3
      mec-biz/src/main/resources/config/mybatis/TenantConfigMapper.xml
  24. 2 2
      mec-biz/src/main/resources/config/mybatis/TenantInfoMapper.xml
  25. 1 2
      mec-common/common-core/src/main/java/com/ym/mec/common/page/WrapperUtil.java
  26. 5 0
      mec-web/src/main/java/com/ym/mec/web/controller/CloudTeacherOrderController.java
  27. 5 5
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  28. 6 11
      mec-web/src/main/resources/columnMapper.ini
  29. 54 0
      mec-web/src/main/resources/columnMapper_修改商品导入.ini
  30. binární
      mec-web/src/main/resources/excelTemplate/商品导入模板.xls

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

@@ -408,7 +408,5 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
 
     List<Student> queryStudent(Map<String, Object> params);
 
-    int updateMembershipEndTime(@Param("studentId")Integer studentId, @Param("endTime")Date endTime);
-
     SysUser getUserByPhone(String phone);
 }

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

@@ -324,7 +324,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      *
      * @return
      */
-    List<StudentRegisterPerDto> queryStudentPer1(@Param("teantId") Integer tenantId, @Param("month")String month);
+    List<StudentRegisterPerDto> queryStudentPer1(@Param("tenantId") Integer tenantId, @Param("month")String month);
 
     /**
      * 获取乐团报名信息和学校信息

+ 24 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TenantConfigDto.java

@@ -37,6 +37,14 @@ public class TenantConfigDto implements Serializable {
     @ApiModelProperty(value = "主题色")
     private String themeColor;
 
+    @NotBlank(message = "企业公章不能为空")
+    @ApiModelProperty(value = "企业公章图片地址")
+    private String corporateChops;
+
+    @NotBlank(message = "企业财务公章不能为空")
+    @ApiModelProperty(value = "企业财务公章图片地址")
+    private String corporateFinanceChops;
+
     @ApiModelProperty(value = "机构动态配置,以json格式储存")
     private String config;
 
@@ -106,4 +114,20 @@ public class TenantConfigDto implements Serializable {
     public void setUpdatedBy(Integer updatedBy) {
         this.updatedBy = updatedBy;
     }
+
+    public String getCorporateChops() {
+        return corporateChops;
+    }
+
+    public void setCorporateChops(String corporateChops) {
+        this.corporateChops = corporateChops;
+    }
+
+    public String getCorporateFinanceChops() {
+        return corporateFinanceChops;
+    }
+
+    public void setCorporateFinanceChops(String corporateFinanceChops) {
+        this.corporateFinanceChops = corporateFinanceChops;
+    }
 }

+ 17 - 8
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysUserTsign.java

@@ -31,13 +31,22 @@ public class SysUserTsign extends BaseEntity {
 		// TODO Auto-generated constructor stub
 	}
 
-	public SysUserTsign(Integer userId, String accountId, String sealData, String name, String cardNo) {
-		this.userId = userId;
-		this.accountId = accountId;
-		this.sealData = sealData;
-		this.name = name;
-		this.cardNo = cardNo;
-	}
+    public SysUserTsign(Integer userId, String accountId, String sealData, String name, String cardNo) {
+        this.userId = userId;
+        this.accountId = accountId;
+        this.sealData = sealData;
+        this.name = name;
+        this.cardNo = cardNo;
+    }
+
+    public SysUserTsign(Integer userId, String accountId, String sealData, String name, String cardNo,Integer tenantId) {
+        this.userId = userId;
+        this.accountId = accountId;
+        this.sealData = sealData;
+        this.name = name;
+        this.cardNo = cardNo;
+        super.setTenantId(tenantId);
+    }
 
 	public void setUserId(Integer userId) {
 		this.userId = userId;
@@ -87,7 +96,7 @@ public class SysUserTsign extends BaseEntity {
 		return this.createTime;
 	}
 
-	@Override
+    @Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);
 	}

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TenantConfig.java

@@ -54,6 +54,14 @@ public class TenantConfig implements Serializable {
     @ApiModelProperty(value = "更新时间")
     private Date updatedTime;
 
+    @TableField("corporate_chops_")
+    @ApiModelProperty(value = "企业公章图片地址")
+    private String corporateChops;
+
+    @TableField("corporate_finance_chops_")
+    @ApiModelProperty(value = "企业财务公章图片地址")
+    private String corporateFinanceChops;
+
     private static final long serialVersionUID = 1L;
 
     public Integer getId() {
@@ -128,4 +136,19 @@ public class TenantConfig implements Serializable {
         this.updatedTime = updatedTime;
     }
 
+    public String getCorporateChops() {
+        return corporateChops;
+    }
+
+    public void setCorporateChops(String corporateChops) {
+        this.corporateChops = corporateChops;
+    }
+
+    public String getCorporateFinanceChops() {
+        return corporateFinanceChops;
+    }
+
+    public void setCorporateFinanceChops(String corporateFinanceChops) {
+        this.corporateFinanceChops = corporateFinanceChops;
+    }
 }

+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -205,11 +205,11 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     EMAIL_TENANT_RECHARGE("EMAIL_TENANT_RECHARGE",   "云教室充值"),
     EMAIL_TENANT_INSUFFICIENT_BALANCE("EMAIL_TENANT_INSUFFICIENT_BALANCE",  "余额不足"),
 
-    SMS_TENANT_ACTIVATION_SUCCESSFUL("EMAIL_TENANT_ACTIVATION_SUCCESSFUL",   "开通成功"),
-    SMS_TENANT_RENEWAL_SUCCESSFUL("EMAIL_TENANT_RENEWAL_SUCCESSFUL", "续费成功"),
-    SMS_TENANT_EXPIRATION_REMINDERS("EMAIL_TENANT_EXPIRATION_REMINDERS",   "服务即将到期"),
+    SMS_TENANT_ACTIVATION_SUCCESSFUL("SMS_TENANT_ACTIVATION_SUCCESSFUL",   "开通成功"),
+    SMS_TENANT_RENEWAL_SUCCESSFUL("SMS_TENANT_RENEWAL_SUCCESSFUL", "续费成功"),
+    SMS_TENANT_EXPIRATION_REMINDERS("SMS_TENANT_EXPIRATION_REMINDERS",   "服务即将到期"),
     SMS_TENANT_RECHARGE("SMS_TENANT_RECHARGE",   "云教室充值"),
-    SMS_TENANT_INSUFFICIENT_BALANCE("EMAIL_TENANT_INSUFFICIENT_BALANCE",  "余额不足"),
+    SMS_TENANT_INSUFFICIENT_BALANCE("SMS_TENANT_INSUFFICIENT_BALANCE",  "余额不足"),
 
 
     STUDENT_SMS_CLOUD_PAYMENT("STUDENT_SMS_CLOUD_PAYMENT",  "待缴费订单"),

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TenantInfoInfoPageVo.java

@@ -48,7 +48,7 @@ public class TenantInfoInfoPageVo implements Serializable {
     @ApiModelProperty(value = "学员上限")
     private Integer studentUpLimit;
 
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     @ApiModelProperty(value = "到期时间")
     private Date expireDate;
 

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

@@ -24,7 +24,7 @@ public interface ContractService {
 	 */
 	SysUserTsign register(Integer userId, String realName, String idCardNo, String mobileNo);
 
-    void addTsign(String organCode, String orgName);
+    void addTsign(Integer userId,String organCode, String orgName,Integer tenantId);
 
 	/**
 	 * 传递注册协议至第三方公证平台

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

@@ -156,8 +156,6 @@ public interface StudentService extends BaseService<Integer, Student> {
      */
     PageInfo<CloudTeacherActiveTargetDetailDto> countCloudTeacherActiveDetail(CloudTeacherActiveQueryInfo queryInfo);
 
-    int updateMembershipEndTime(Integer studentId, Date endTime);
-
     /**
     * @description: 根据手机号检测学员是否存在,存在就更新,不存在插入
      * @param student

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

@@ -287,7 +287,7 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
             }
         }
         bucket.delete();
-        log.info(" 云教练 支付 失败 >>>>> ", i);
+        log.info(" 云教练 支付 失败 >>>>> {} ", i);
         return false;
     }
 
@@ -352,7 +352,9 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
             cto.setEndTime(endTime);
             cto.setStatus(2);
             cloudTeacherOrderDao.update(cto);
-            studentService.updateMembershipEndTime(cto.getStudentId(), cto.getEndTime());
+            log.info("团练宝更新订单");
+            studentService.updateMemberRank(cto.getStudentId(), cto.getType(), cto.getTime(), 1);
+            log.info("团练宝更新学生");
         }
 
         log.info("tenant orderNotify update order status end");

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

@@ -49,7 +49,6 @@ import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.util.*;
-import java.util.Map.Entry;
 import java.util.stream.Collectors;
 
 @Service
@@ -74,9 +73,6 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
     private StudentRegistrationDao studentRegistrationDao;
 
     @Autowired
-    private StudentPaymentOrderService studentPaymentOrderService;
-
-    @Autowired
     private MusicGroupSubjectPlanService musicGroupSubjectPlanService;
 
     @Autowired
@@ -89,9 +85,6 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
     private MusicGroupStudentFeeDao musicGroupStudentFeeDao;
 
     @Autowired
-    private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
-
-    @Autowired
     @Lazy
     private VipGroupService vipGroupService;
 
@@ -135,13 +128,14 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
     public void afterPropertiesSet() throws Exception {
         // 注册企业账户
         Map<String, String> organList = new HashMap<String, String>();
-        organList.put("91420106333619290A", "武汉长乐长风乐器销售有限公司");
-        organList.put("91440300326364429H", "深圳大雅乐盟网络教育股份有限公司");
+        organList.put("91420106333619290A", "2,武汉长乐长风乐器销售有限公司");
+        organList.put("91440300326364429H", "1,深圳大雅乐盟网络教育股份有限公司");
 
         organList.forEach((code, name) -> {
             SysUserTsign sysUserTsign = sysUserTsignService.queryByCardNo(code);
             if (Objects.isNull(sysUserTsign)) {
-                addTsign(code, name);
+                String[] nameSplit = name.split(",");
+                addTsign(Integer.parseInt(nameSplit[0]), code, nameSplit[1], 1);
             }
         });
     }
@@ -150,7 +144,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
      * 校验企业营业信息,不存在则添加一个
      */
     @Override
-    public void addTsign(String organCode, String orgName) {
+    public void addTsign(Integer userId, String organCode, String orgName, Integer tenantId) {
         Optional.ofNullable(organCode).orElseThrow(() -> new BizException("营业执照编号不能为空!"));
         Optional.ofNullable(orgName).orElseThrow(() -> new BizException("营业名称不能为空"));
 
@@ -164,7 +158,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
             throw new BizException("创建电子存证印章失败");
         }
 
-        SysUserTsign sysUserTsign = new SysUserTsign(-1, accountId, sealData, orgName, organCode);
+        SysUserTsign sysUserTsign = new SysUserTsign(-userId, accountId, sealData, orgName, organCode, tenantId);
         sysUserTsignService.insert(sysUserTsign);
     }
 

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

@@ -331,8 +331,8 @@ public class OrderPayOpsServiceImpl implements OrderPayOpsService {
         }
         //异步
         CompletableFuture.runAsync(() -> {
-            //检查5
-            for (int i = 0; i <= 5; i++) {
+            //检查10
+            for (int i = 0; i <= 10; i++) {
                 try {
                     Thread.sleep(3000);//每3秒触发一次
                     tenantOrderRecordService.checkTenantOrder();
@@ -348,7 +348,7 @@ public class OrderPayOpsServiceImpl implements OrderPayOpsService {
 
     // 检查云教室
     private void delayCheckCloudTeacherOrder(TenantOrderRecord record) {
-        RBucket<Object> bucket = redissonClient.getBucket("delay_check_tenant");
+        RBucket<Object> bucket = redissonClient.getBucket("delay_check_cloud_tenant");
         if (!bucket.trySet(1, 15L, TimeUnit.SECONDS)) {
             return;
         }
@@ -376,7 +376,7 @@ public class OrderPayOpsServiceImpl implements OrderPayOpsService {
 
     // 检查机构充值
     private void delayCheckTenantRecharge(TenantOrderRecord record) {
-        RBucket<Object> bucket = redissonClient.getBucket("delay_check_tenant");
+        RBucket<Object> bucket = redissonClient.getBucket("delay_check_recharge_tenant");
         if (!bucket.trySet(1, 15L, TimeUnit.SECONDS)) {
             log.info("executePayment bucket retryset >>>>> ");
             return;

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

@@ -1186,11 +1186,6 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     }
 
     @Override
-    public int updateMembershipEndTime(Integer studentId, Date endTime) {
-        return studentDao.updateMembershipEndTime(studentId, endTime);
-    }
-
-    @Override
     @Transactional(rollbackFor = Exception.class)
     public <T extends BaseStudentDto> SysUser upSetStudent(T baseStudent) {
         // 判断用户是否存在

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

@@ -309,12 +309,13 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	@Async
 	public void batchSendMessage(Integer senderTenantId, MessageSender messageSender, MessageTypeEnum type, Map<Integer, String> receivers, Date triggerTime, Integer readStatus,
 			String url,String jpushType, Object... args) {
-		LOGGER.info("batchSendMessage {}, type {}, receivers {} ", messageSender, type, receivers);
+		LOGGER.info("batchSendMessage tenantId {} msgSender {}, type {}, receivers {} ", senderTenantId, messageSender, type, receivers);
 		if (receivers == null || receivers.size() == 0) {
 			LOGGER.error("接收地址不能为空");
 			return;
 		}
-		SimpleUserDto simpleUserDto = teacherDao.getSimpleUser(receivers.keySet().iterator().next());
+		Integer userId = receivers.keySet().iterator().next();
+		SimpleUserDto simpleUserDto = teacherDao.getSimpleUser(userId);
 		Integer receiverTenantId = simpleUserDto.getTenantId();
 
 		// email data from database load, 使用接收者 tenantId, 假设发送者和接收者为同一机构
@@ -349,6 +350,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 			}
 		}
 		String[] tos = receivers.values().toArray(new String[receivers.size()]);
+		LOGGER.error("batch 接收人 {} ", tos  );
 		SysMessageConfig messageConfig = sysMessageConfigService.queryByType(type);
 		if (messageConfig == null) {
 			throw new BizException("消息类型错误");

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

@@ -48,12 +48,13 @@ public class TenantInfoSendMsgServiceImpl implements TenantInfoSendMsgService {
      */
     @Override
     public void platformSendToAll(Integer receiveUserId, String email, String phone, Object[] objs) {
-        Map<Integer, String> sendPar = new HashMap<>();
+
         if (Objects.isNull(receiveUserId)) {
             return;
         }
 
         if (StringUtils.isNotBlank(email)) {
+            Map<Integer, String> sendPar = new HashMap<>();
             sendPar.put(receiveUserId, email);
             log.info("platformSendToAll>>> receiveUserId {} email {} objs {} sendPar {}", receiveUserId, email, objs, sendPar);
             sysMessageService.batchSendMessage(-1, MessageSenderPluginContext.MessageSender.EMAIL,
@@ -63,11 +64,12 @@ public class TenantInfoSendMsgServiceImpl implements TenantInfoSendMsgService {
         }
 
         if (StringUtils.isNotBlank(phone)) {
-            sendPar.put(receiveUserId, phone);
-            log.info("platformSendToAll>>> receiveUserId {} phone {} objs {} sendPar {}", receiveUserId, phone, objs, sendPar);
+            Map<Integer, String> sendPar2 = new HashMap<>();
+            sendPar2.put(receiveUserId, phone);
+            log.info("platformSendToAll>>> receiveUserId {} phone {} objs {} sendPar {}", receiveUserId, phone, objs, sendPar2);
             sysMessageService.batchSendMessage(-1, MessageSenderPluginContext.MessageSender.AWSMS,
                     PLATFORM_ALL_MSG_ENUM.get(MessageSenderPluginContext.MessageSender.AWSMS),
-                    sendPar, null, 0, null,
+                    sendPar2, null, 0, null,
                     "SYSTEM", objs);
         }
     }

+ 18 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantInfoServiceImpl.java

@@ -36,6 +36,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
@@ -95,6 +96,9 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
     @Autowired
     private ContractService contractService;
 
+    @Value("${spring.profiles.active:dev}")
+    private String profiles;
+
     /**
      * 新增机构
      */
@@ -125,6 +129,14 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
         //添加机构产品信息
         setIdByApply(tenantId, dto.getProductInfo(), dto.getProductInfo()::setTenantId,
                 tenantProductInfoService::addTenantProduct);
+        //新建机构是0元时,直接默认支付成功
+        if (dto.getProductInfo().getPayAmount().compareTo(BigDecimal.ZERO) == 0) {
+            //修机构相关的改付款时间
+            tenantOpen(tenantId);
+            String orderNo = idGenerator.generatorId("payment") + "";
+            //写入付款记录
+            createOrderRecord(tenantId, BigDecimal.ZERO, orderNo, TenantOrderRecordEnum.TENANT_OPEN, 1, null);
+        }
         //添加机构配置
         setIdByApply(tenantId, dto.getConfig(), dto.getConfig()::setTenantId, tenantConfigService::addConfig);
         //释放
@@ -330,14 +342,14 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
         //建立角色
         Integer roleId = createRole(tenantInfo);
         //密码规则 gym + 随机6位数字
-        String pw = new BCryptPasswordEncoder().encode("gym" + (int) ((Math.random() * 9 + 1) * 100000));
+        String pwStr = "gym" + (int) ((Math.random() * 9 + 1) * 100000);
         // 创建账号、用户信息、用户和角色关系
-        createUser(tenantInfo, orgId, Lists.newArrayList(roleId), pw);
+        createUser(tenantInfo, orgId, Lists.newArrayList(roleId), new BCryptPasswordEncoder().encode(pwStr));
         //建立角色和菜单关系数据
         Lists.partition(collectMenuId, 50)
                 .forEach(idList -> employeeService.batchInsertRoleMenu(roleId, idList, tenantId));
         //添加签章信息
-        contractService.addTsign(tenantInfo.getTsignCode(), tenantInfo.getTsignName());
+        contractService.addTsign(tenantInfo.getUserId(),tenantInfo.getTsignCode(), tenantInfo.getTsignName(), tenantId);
 
         Date now = new Date();
 
@@ -355,7 +367,7 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
         //释放锁
         bucket.delete();
 
-        return pw;
+        return pwStr;
     }
 
     //计算过期时间
@@ -588,7 +600,7 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
         //原子操作 抢锁成功为true
         if (!bucket.trySet(tenantId, 10, TimeUnit.SECONDS)) {
             if (tenantInfo.getPayState() == 1) {
-                throw new BizException("已缴费请勿重复缴费!");
+                throw new BizException("请勿频繁操作!");
             }
             throw new BizException("正在缴费中请稍后!");
         }
@@ -866,4 +878,5 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
 
         return false;
     }
+
 }

+ 10 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantOrderRecordServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ym.mec.biz.dal.dao.TenantOrderRecordDao;
@@ -51,6 +52,8 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
     private RedissonClient redissonClient;
     @Autowired
     private TenantAssetsInfoService assetsInfoService;
+    @Autowired
+    private TenantConfigService tenantConfigService;
 
     //订单不存在
     private static final String PAYMENT_ID_NOT_EXISTS = "payment_id_not_exists";
@@ -110,6 +113,10 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
         //购买的信息
         Map<String, Object> detail = new HashMap<>();
         result.put("detail", detail);
+        //查询该机构的财务公章
+        TenantConfig tenantConfig = tenantConfigService.getOne(new QueryWrapper<TenantConfig>()
+                .eq("tenant_id_", orderRecord.getTenantId()));
+        result.put("financeChops",tenantConfig.getCorporateFinanceChops());
 
         log.info("checkTenantOrder  getOrderState>>>>> {}", JSON.toJSONString(orderRecord));
         getOrderState(orderRecord, result);
@@ -132,9 +139,10 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
                 checkTransOrderState(record);
                 if (record.getOrderState() == 1) {
                     Consumer<TenantOrderRecord> consumer = checkOrder.get(record.getOrderType());
-                    if (Objects.nonNull(consumer)) {
-                        consumer.accept(record);
+                    if (Objects.isNull(consumer)) {
+                        return;
                     }
+                    consumer.accept(record);
                     //修改流水
                     LocalDateTime now = LocalDateTime.now();
                     record.setPayDate(now.toLocalDate().toDate());

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

@@ -394,7 +394,7 @@
         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.trans_no_ is not null
+            cto.tenant_id_ = #{tenantId} AND cto.status_ = 2 AND tor.order_no_ is not null AND tor.trans_no_ is not null
             AND tor.order_type_ = 'CLOUD_TEACHER'
             <if test="queryCondition != null and queryCondition != ''">
                 AND (u.username_ LIKE CONCAT('%', #{queryCondition}, '%') or u.phone_ = #{queryCondition} or u.id_ = #{queryCondition})
@@ -437,7 +437,7 @@
         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.trans_no_ is not null
+            cto.tenant_id_ = #{tenantId} AND cto.status_ = 2 AND tor.order_no_ is not null AND tor.trans_no_ is not null
             AND tor.order_type_ = 'CLOUD_TEACHER'
             <if test="queryCondition != null and queryCondition != ''">
                 AND (u.username_ LIKE CONCAT('%', #{queryCondition}, '%') or u.phone_ = #{queryCondition} or u.id_ = #{queryCondition})

+ 1 - 3
mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml

@@ -34,9 +34,7 @@
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="CooperationOrgan">
-        SELECT *
-        FROM cooperation_organ
-        WHERE id_ = #{id}
+        SELECT * FROM cooperation_organ WHERE id_ = #{id}
     </select>
 
     <!-- 全查询 -->

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

@@ -1323,9 +1323,6 @@
         AND sr.music_group_status_ = 'NORMAL' AND mg.course_view_type_ != 2 AND mg.`status_` = 'PROGRESS'
         GROUP BY sr.user_id_)t)
     </update>
-    <update id="updateMembershipEndTime">
-        update student set membership_end_time_ = #{endTime} where user_id_ = #{studentId}
-    </update>
 
     <select id="queryStudent" resultMap="Student">
         SELECT s.*,su.username_,su.phone_,o.name_ organ_name_,sb.name_ subject_name_ FROM student s

+ 2 - 1
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -1016,6 +1016,7 @@
         <result column="createTime" property="createTime"/>
         <result column="payTime" property="payTime"/>
         <result column="transNo" property="transNo"/>
+        <result column="totalRemitFee" property="totalRemitFee"/>
         <collection property="list" ofType="com.ym.mec.biz.dal.vo.StudentPaymentOrderVo$StudentPaymentDetailVo">
             <result column="goodsName" property="goodsName"/>
             <result column="price" property="price"/>
@@ -1044,7 +1045,7 @@
                ifnull(a.coupon_remit_fee_, 0)     as totalAmount,
                a.actual_amount_                   as actualAmount,
                a.balance_payment_amount_          as balanceAmount,
-               a.remit_fee_ + a.coupon_remit_fee_ as totalRemitFee,
+               ifnull(a.remit_fee_,0) + ifnull(a.coupon_remit_fee_,0) as totalRemitFee,
                a.create_time_ as createTime,
                a.pay_time_ as payTime,
                a.trans_no_ as transNo,

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/SysCouponMapper.xml

@@ -120,7 +120,7 @@
         WHERE id_ = #{param.id}
         and tenant_id_ = #{param.tenantId}
         <if test="param.checkStock != null">
-           and stock_count_ > (consume_num_ + #{param.exchangeNum})
+           and stock_count_ >= (consume_num_ + #{param.exchangeNum})
         </if>
     </update>
 

+ 6 - 3
mec-biz/src/main/resources/config/mybatis/TenantConfigMapper.xml

@@ -11,21 +11,24 @@
         <result column="config_" jdbcType="VARCHAR" property="config"/>
         <result column="updated_by_" jdbcType="INTEGER" property="updatedBy"/>
         <result column="updated_time_" jdbcType="TIMESTAMP" property="updatedTime"/>
+        <result column="corporate_chops_" jdbcType="VARCHAR" property="corporateChops"/>
+        <result column="corporate_finance_chops_" jdbcType="VARCHAR" property="corporateFinanceChops"/>
     </resultMap>
 
     <sql id="Base_Column_List">
         id_
-        , tenant_id_, charge_rate_, teaching_material_id_, theme_, theme_color_, config_, updated_by_, updated_time_
+        , tenant_id_, charge_rate_, teaching_material_id_, theme_, theme_color_, config_, updated_by_, updated_time_, corporate_chops_, corporate_finance_chops_
     </sql>
 
     <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
             parameterType="com.ym.mec.biz.dal.entity.TenantConfig">
         insert into tenant_config(tenant_id_, charge_rate_, teaching_material_id_, theme_, theme_color_, config_,
-        updated_by_, updated_time_)
+        updated_by_, updated_time_, corporate_chops_, corporate_finance_chops_)
         values
         <foreach collection="entities" item="entity" separator=",">
             (#{entity.tenantId}, #{entity.chargeRate}, #{entity.teachingMaterialId}, #{entity.theme},
-            #{entity.themeColor}, #{entity.config}, #{entity.updatedBy}, #{entity.updatedTime})
+            #{entity.themeColor}, #{entity.config}, #{entity.updatedBy}, #{entity.updatedTime},
+            #{entity.corporateChops}, #{entity.corporateFinanceChops})
         </foreach>
     </insert>
 

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

@@ -91,10 +91,10 @@
                 AND a.`state_` = #{param.state}
             </if>
             <if test="param.startDate != null">
-                AND a.`created_time_` <![CDATA[ >= ]]>  #{param.startDate}
+                AND b.`expiry_date_` <![CDATA[ >= ]]>  #{param.startDate}
             </if>
             <if test="param.endDate != null ">
-                AND a.`created_time_` <![CDATA[ <= ]]>  #{param.endDate}
+                AND b.`expiry_date_` <![CDATA[ <= ]]>  #{param.endDate}
             </if>
         </where>
     </select>

+ 1 - 2
mec-common/common-core/src/main/java/com/ym/mec/common/page/WrapperUtil.java

@@ -218,8 +218,7 @@ public class WrapperUtil<T> {
      */
     public static <O> void listDifference(List<O> a, List<O> b) {
         //将ab并集
-        Collection abUn = CollectionUtils.retainAll(a, b);
-        System.out.println(abUn);
+        Collection<O> abUn = CollectionUtils.retainAll(a, b);
         //删除a中abUn的值
         a.removeAll(abUn);
         //删除b中abUn的值

+ 5 - 0
mec-web/src/main/java/com/ym/mec/web/controller/CloudTeacherOrderController.java

@@ -12,6 +12,7 @@ import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.WrapperUtil;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
@@ -63,6 +64,8 @@ public class CloudTeacherOrderController extends BaseController {
     @PostMapping("/queryActive")
     @PreAuthorize("@pcs.hasPermissions('cloudTeacherOrder/queryActive')")
     public HttpResponseResult<PageInfo<CloudTeacherStudent>> queryActive(@RequestBody CloudTeacherOrderQueryInfo cloudTeacherOrderQueryInfo) throws Exception {
+        Integer tenantId = TenantContextHolder.getTenantId();
+        cloudTeacherOrderQueryInfo.setTenantId(tenantId);
         cloudTeacherOrderQueryInfo.setStatus(2);
         return succeed(cloudTeacherOrderService.queryInactive(cloudTeacherOrderQueryInfo));
     }
@@ -71,6 +74,8 @@ public class CloudTeacherOrderController extends BaseController {
     @PostMapping("/queryActiveRecord")
     @PreAuthorize("@pcs.hasPermissions('cloudTeacherOrder/queryActiveRecord')")
     public HttpResponseResult<PageInfo<CloudTeacherStudent>> queryActiveRecord(@RequestBody CloudTeacherOrderQueryInfo cloudTeacherOrderQueryInfo) {
+        Integer tenantId = TenantContextHolder.getTenantId();
+        cloudTeacherOrderQueryInfo.setTenantId(tenantId);
         return succeed(cloudTeacherOrderService.queryRecord(cloudTeacherOrderQueryInfo));
     }
 

+ 5 - 5
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -202,7 +202,7 @@ public class ExportController extends BaseController {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团编号", "乐团名称","合作单位", "乐团状态",
                     "收费模式","收费类型","乐团主管","成团人数", "在读人数", "申请时间", "成团时间", "清单状态"}, new String[]{
                     "organName", "id", "name","cooperationOrganName", "status.msg", "courseViewType.msg","chargeTypeName",
-                    "educationalTeacherName", /*"teamTeacherName", 和标题对不上*/"groupMemberNum","payNum"
+                    "educationalTeacherName", "teamTeacherName", "groupMemberNum","payNum"
                     ,"createTime","updateTime","hasVerifyMusicalList?'已确认':'未确认'"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
@@ -467,10 +467,10 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"商品编号", "货号", "品牌", "商品名称",
-                    "是否组合商品", "是否库存预警","商品类型", "商品分类", "具体型号", "内部库存", "税务库存", "库存类型", "市场价(元)",
+                    "是否组合商品", "商品类型", "商品分类", "具体型号", "内部库存", "税务库存", "库存类型", "市场价(元)",
                     "零售价(元)", "商品团购价(元)", "商品描述", "商品详情", "是否上下架"}, new String[]{
                     "id", "sn", "brand", "name",
-                    "complementGoodsIdList == null || complementGoodsIdList == '' ? '否':'是'", "stockWarning.msg",
+                    "complementGoodsIdList == null || complementGoodsIdList == '' ? '否':'是'",
                     "type.desc", "goodsCategoryName", "specification", "stockCount", "taxStockCount", "stockType.msg", "marketPrice",
                     "discountPrice", "groupPurchasePrice", "brief", "desc", "status.msg"}, rows);
             response.setContentType("application/octet-stream");
@@ -1923,8 +1923,8 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
 
-            String[] header = {"分部", "单位编号", "单位名称", "是否启用","乐团主管","是否全职资源"};
-            String[] body = {"organization.name", "id", "name", "isEnable == true ? '是':'否'", "realName", "fullJobResource == 1 ? '是' : '否'"};
+            String[] header = {"分部", "单位编号", "单位名称", "是否启用","乐团主管","状态栏"};
+            String[] body = {"organization.name", "id", "name", "isEnable == true ? '是':'否'", "realName", "isEnable == true ? '开启' : '未开启'"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, pageList.getRows());
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=cooperationOrgan-" + DateUtil.getDate(new Date()) + ".xls");

+ 6 - 11
mec-web/src/main/resources/columnMapper.ini

@@ -4,20 +4,15 @@
 商品名称 = name
 商品类型 = type
 商品分类 = goodsCategoryName
-具体型号 = specification
+商品型号 = specification
+库存类型 = stockType
+是否库存预警 = stockWarning
 商品市场价(元) = marketPrice
-商品零售价 = discountPrice
-商品团购价(元) = groupPurchasePrice
-商品采购价1(元) = costPrice
+零售价(元) = discountPrice
+团购价(元) = groupPurchasePrice
 商品图片(插入一张图片) = image
-商品明细 = brief
-商品采购价2(元) = agreeCostPrice
-内部库存 = stockCount
-税务库存 = taxStockCount
-备查货号 = supplyChannel
-库存类型 = stockType
+商品描述 = brief
 商品详情 = desc
-库存预警 = stockWarning
 
 
 [财务支出导入模板]

+ 54 - 0
mec-web/src/main/resources/columnMapper_修改商品导入.ini

@@ -0,0 +1,54 @@
+[商品导入模板]
+品牌 = brand
+货号 = sn
+商品名称 = name
+商品类型 = type
+商品分类 = goodsCategoryName
+具体型号 = specification
+商品市场价(元) = marketPrice
+商品零售价 = discountPrice
+商品团购价(元) = groupPurchasePrice
+商品采购价1(元) = costPrice
+商品图片(插入一张图片) = image
+商品明细 = brief
+商品采购价2(元) = agreeCostPrice
+内部库存 = stockCount
+税务库存 = taxStockCount
+备查货号 = supplyChannel
+库存类型 = stockType
+商品详情 = desc
+库存预警 = stockWarning
+
+
+[财务支出导入模板]
+财务流程编号 = financialProcessNo
+钉钉流程编号 = dingtalkProcessNo
+费用归属分部 = organName
+费用归属学校 = cooperationOrganName
+申请人 = applyUser
+费用类型 = type
+费用项目 = feeProject
+付款金额 = amount
+备注 = itemDetail
+付款时间 = paymentTime
+事由 = cause
+
+
+[财务管理导入模板]
+收入类型 = incomeType
+所属分部 = organName
+所属学校 = cooperationOrganName
+学员编号 = userId
+交易流水号 = transNo
+收款账户 = merNo
+交易日期 = payTime
+销售金额 = saleAmount
+服务金额 = serviceAmount
+商品编号 = goodsIds
+商品数量 = goodsNums
+备注 = memo
+缴费单号 = calenderId
+
+[兑换码分配模板表]
+代码 = code
+链接地址 = url

binární
mec-web/src/main/resources/excelTemplate/商品导入模板.xls