zouxuan 9 kuukautta sitten
vanhempi
commit
ac71fe89dc

+ 4 - 1
mec-application/src/main/java/com/ym/mec/web/controller/TenantConfigController.java

@@ -3,6 +3,7 @@ package com.ym.mec.web.controller;
 import com.ym.mec.biz.dal.entity.TenantConfig;
 import com.ym.mec.biz.service.TenantConfigService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -12,6 +13,8 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Map;
+
 @RequestMapping("${app-config.url.web:}/tenantConfig")
 @Api(tags = "机构配置管理")
 @RestController
@@ -32,7 +35,7 @@ public class TenantConfigController extends BaseController {
 	@ApiOperation("当前机构是否可以自动激活团练宝")
 	@GetMapping(value = "/autoActivationFlag")
 	@PreAuthorize("@pcs.hasPermissions('tenantConfig/autoActivationFlag')")
-	public Object autoActivationFlag() {
+	public HttpResponseResult<Map<Integer, Boolean>> autoActivationFlag() {
 		return succeed(tenantConfigService.autoActivationFlag(TenantContextHolder.getTenantId()));
 	}
 }

+ 13 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/TenantConfigService.java

@@ -1,8 +1,10 @@
 package com.ym.mec.biz.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.biz.dal.dto.TenantConfigDto;
 import com.ym.mec.biz.dal.entity.TenantConfig;
+import com.ym.mec.biz.dal.enums.PeriodEnum;
 
 import java.math.BigDecimal;
 import java.util.Map;
@@ -19,12 +21,15 @@ public interface TenantConfigService extends IService<TenantConfig> {
 
     Map<String, BigDecimal> getCloudRoomRule(String config);
 
-    /**
-    * @description: 是否可以自动激活团练宝
-     * @param tenantId
-    * @return java.lang.Boolean
-    * @author zx
-    * @date 2022/3/21 10:18
-    */
-    Boolean autoActivationFlag(Integer tenantId);
+    //是否可以自动激活团练宝
+    Map<Integer,Boolean> autoActivationFlag(Integer tenantId);
+
+    //是否可以自动激活团练宝
+    Boolean autoActivationFlag(Integer tenantId, Integer memberRankId);
+
+    //获取激活所需的金额
+    Map<Integer, JSONObject> getActivationAmount(Integer tenantId);
+
+    //根据购买周期获取价格
+    BigDecimal getPriceByPeriod(JSONObject memberConfig, PeriodEnum period);
 }

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

@@ -117,7 +117,7 @@ public class CloudCoachPaymentProgramServiceImpl extends BaseServiceImpl<Long, C
 		//获取缴费状态
 		cloudCoachPaymentProgram.setStatus(getStatus(cloudCoachPaymentProgram));
 		//是否自动激活
-		cloudCoachPaymentProgram.setAutoActivationFlag(tenantConfigService.autoActivationFlag(tenantId));
+		cloudCoachPaymentProgram.setAutoActivationFlag(tenantConfigService.autoActivationFlag(tenantId,cloudCoachPaymentProgram.getMemberRankSettingId()));
 		cloudCoachPaymentProgramDao.insert(cloudCoachPaymentProgram);
 		studentCloudCoachPaymentDetailsDao.batchInsert(cloudCoachPaymentProgram.getId(),userIds,tenantId);
 		if(cloudCoachPaymentProgram.getStatus() == CloudCoachPaymentProgram.StatusEnum.OPEN){
@@ -179,7 +179,7 @@ public class CloudCoachPaymentProgramServiceImpl extends BaseServiceImpl<Long, C
 		}
 		cloudCoachPaymentProgram.setStatus(getStatus(cloudCoachPaymentProgram));
 		//是否自动激活
-		cloudCoachPaymentProgram.setAutoActivationFlag(tenantConfigService.autoActivationFlag(cloudCoachPaymentProgram.getTenantId()));
+		cloudCoachPaymentProgram.setAutoActivationFlag(tenantConfigService.autoActivationFlag(cloudCoachPaymentProgram.getTenantId(),cloudCoachPaymentProgram.getMemberRankSettingId()));
 		cloudCoachPaymentProgramDao.update(cloudCoachPaymentProgram);
 		if(cloudCoachPaymentProgram.getStatus() == CloudCoachPaymentProgram.StatusEnum.OPEN){
 			List<Integer> userIds = studentCloudCoachPaymentDetailsDao.findUserByProgramId(cloudCoachPaymentProgram.getId());

+ 10 - 63
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CloudTeacherOrderServiceImpl.java

@@ -53,6 +53,8 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
     @Resource
     private TenantConfigService tenantConfigService;
     @Resource
+    private TenantMemberRankSettingService tenantMemberRankSettingService;
+    @Resource
     private PayService payService;
     @Resource
     private IdGeneratorService idGenerator;
@@ -133,7 +135,7 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
             return pageInfo;
         }
         assert dataList != null;
-        List<Integer> organIds = dataList.stream().map(e -> e.getOrganId()).distinct().collect(Collectors.toList());
+        List<Integer> organIds = dataList.stream().map(CloudTeacherStudent::getOrganId).distinct().collect(Collectors.toList());
         Map<Integer, String> organNameMap = this.getMap("organization", "id_", "name_", organIds, queryInfo.getTenantId(), Integer.class, String.class);
 
         Map<Integer, SimpleUserDto> empMapById = new HashMap<>();
@@ -146,6 +148,7 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         //获取会员名称
         List<Integer> memberRankIds = dataList.stream().map(CloudTeacherStudent::getMemberRankId).collect(Collectors.toList());
         Map<Integer, String> memberNameMap = memberRankSettingService.queryMemberName(memberRankIds);
+        Map<Integer, JSONObject> rankSettingMap = tenantConfigService.getActivationAmount(queryInfo.getTenantId());
         //获取
         for (CloudTeacherStudent cst : dataList) {
             cst.setMemberName(memberNameMap.get(cst.getMemberRankId()));
@@ -153,37 +156,8 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
             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 表");
-            }
-            JSONObject cfg = JSON.parseObject(tenantConfig.getConfig());
-            JSONObject memberConfig = (JSONObject) cfg.get("member_config");
-            Double divide;
-            switch (cst.getType()) {
-                case DAY:
-                    divide = memberConfig.getDouble("day_divide");
-                    break;
-                case MONTH:
-                    divide = memberConfig.getDouble("month_divide");
-                    break;
-                case QUARTERLY:
-                    divide = memberConfig.getDouble("quarter_divide");
-                    break;
-                case YEAR_HALF:
-                    divide = memberConfig.getDouble("half_year_divide");
-                    break;
-                case YEAR:
-                    divide = memberConfig.getDouble("year_divide");
-                    break;
-                default:
-                    divide = null;
-            }
-            if (divide == null) {
-                cst.setAmount(null);
-            } else {
-                cst.setAmount(new BigDecimal(divide * cst.getTime()));
-            }
+            JSONObject memberConfig = rankSettingMap.get(cst.getMemberRankId());
+            cst.setAmount(tenantConfigService.getPriceByPeriod(memberConfig, cst.getType()).multiply(new BigDecimal(cst.getTime())));
         }
         return pageInfo;
     }
@@ -196,7 +170,7 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         if (dataList == null || dataList.isEmpty()) {
             return dataList;
         }
-        List<Integer> organIds = dataList.stream().map(e -> e.getOrganId()).distinct().collect(Collectors.toList());
+        List<Integer> organIds = dataList.stream().map(CloudTeacherStudent::getOrganId).distinct().collect(Collectors.toList());
         Map<Integer, String> organNameMap = this.getMap("organization", "id_", "name_", organIds, queryInfo.getTenantId(), Integer.class, String.class);
 
         Map<Integer, SimpleUserDto> empMapById = new HashMap<>();
@@ -209,42 +183,15 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
         //获取会员名称
         List<Integer> memberRankIds = dataList.stream().map(CloudTeacherStudent::getMemberRankId).collect(Collectors.toList());
         Map<Integer, String> memberNameMap = memberRankSettingService.queryMemberName(memberRankIds);
-        TenantConfig tenantConfig = tenantConfigService.getOne(new QueryWrapper<TenantConfig>().eq("tenant_id_", queryInfo.getTenantId()));
+        Map<Integer, JSONObject> rankSettingMap = tenantConfigService.getActivationAmount(queryInfo.getTenantId());
         for (CloudTeacherStudent cst : dataList) {
             cst.setMemberName(memberNameMap.get(cst.getMemberRankId()));
             cst.setOrganName(organNameMap.get(cst.getOrganId()));
             if (cst.getOperator() != null) {
                 cst.setOperatorName(empMapById.getOrDefault(cst.getOperator(), new SimpleUserDto()).getUserName());
             }
-            if (tenantConfig != null) {
-                JSONObject cfg = JSON.parseObject(tenantConfig.getConfig());
-                JSONObject memberConfig = (JSONObject) cfg.get("member_config");
-                Double divide;
-                switch (cst.getType()) {
-                    case DAY:
-                        divide = memberConfig.getDouble("day_divide");
-                        break;
-                    case MONTH:
-                        divide = memberConfig.getDouble("month_divide");
-                        break;
-                    case QUARTERLY:
-                        divide = memberConfig.getDouble("quarter_divide");
-                        break;
-                    case YEAR_HALF:
-                        divide = memberConfig.getDouble("half_year_divide");
-                        break;
-                    case YEAR:
-                        divide = memberConfig.getDouble("year_divide");
-                        break;
-                    default:
-                        divide = null;
-                }
-                if (divide == null) {
-                    cst.setAmount(null);
-                } else {
-                    cst.setAmount(new BigDecimal(divide * cst.getTime()));
-                }
-            }
+            JSONObject memberConfig = rankSettingMap.get(cst.getMemberRankId());
+            cst.setAmount(tenantConfigService.getPriceByPeriod(memberConfig, cst.getType()).multiply(new BigDecimal(cst.getTime())));
         }
         return dataList;
     }

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

@@ -856,7 +856,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
             cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
             cloudTeacherOrder.setAmount(studentPaymentOrder.getExpectAmount());
             cloudTeacherOrder.setOperatingAmount(studentPaymentOrder.getExpectAmount());
-            cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId()));
+            cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId(),1));
             //赠送陪练课
             ActivityUserMapper activityUserMapper = new ActivityUserMapper();
             activityUserMapper.setPaymentOrderId(studentPaymentOrder.getId());
@@ -954,7 +954,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
                 cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
                 cloudTeacherOrder.setAmount(studentPaymentOrder.getExpectAmount());
                 cloudTeacherOrder.setOperatingAmount(studentPaymentOrder.getExpectAmount());
-                cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId()));
+                cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId(),1));
 
                 Map<Integer, String> phoneMaps = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(userId.toString()));
                 String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);

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

@@ -1003,7 +1003,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
                 cloudTeacherOrder.setType(activity.getPeriodEnum());
                 cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
                 cloudTeacherOrder.setTime(studentPaymentOrder.getActivityBuyNum());
-                cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId()));
+                cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId(),activity.getMemberRankId()));
                 activityUserMapper.setMemberFlag(1);
                 activityUserMapper.setMemberOrderId(cloudTeacherOrder.getId());
             }
@@ -1042,7 +1042,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
                 cloudTeacherOrder.setType(activity.getGivePeriodEnum());
                 cloudTeacherOrder.setOrganId(studentPaymentOrder.getOrganId());
                 cloudTeacherOrder.setTime(activity.getGiveMemberTime());
-                cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId()));
+                cloudTeacherOrderService.save(cloudTeacherOrder,tenantConfigService.autoActivationFlag(cloudTeacherOrder.getTenantId(),activity.getGiveMemberRankId()));
                 // 添加会员有效时长
                 activityUserMapper.setGiveMemberFlag(1);
                 activityUserMapper.setGiveMemberOrderId(cloudTeacherOrder.getId());

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

@@ -702,7 +702,12 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
         //云教练/云教练+  todo  团练宝
         if (buyCloudTeacher || (Objects.nonNull(calender) && calender.getPayUserType() == MusicGroupPaymentCalender.PayUserType.SCHOOL)) {
-            List<MusicGroupPaymentCalenderMember> calenderMembers = musicGroupPaymentCalenderMemberService.findByIds(registerPayDto.getBuyCalenderMemberId());
+            List<MusicGroupPaymentCalenderMember> calenderMembers = new ArrayList<>();
+            if(buyCloudTeacher){
+                calenderMembers = musicGroupPaymentCalenderMemberService.findByIds(registerPayDto.getBuyCalenderMemberId());
+            }else {
+                calenderMembers = musicGroupPaymentCalenderMemberService.findByCalenderId(calender.getId());
+            }
             if(CollectionUtils.isNotEmpty(calenderMembers)){
                 for (MusicGroupPaymentCalenderMember calenderMember : calenderMembers) {
                     StudentPaymentOrderDetail cloudTeacherOrderDetail = new StudentPaymentOrderDetail();

+ 60 - 17
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantConfigServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
@@ -8,20 +9,23 @@ import com.ym.mec.biz.dal.dao.TenantConfigDao;
 import com.ym.mec.biz.dal.dto.TenantConfigDto;
 import com.ym.mec.biz.dal.entity.TenantConfig;
 import com.ym.mec.biz.dal.entity.TenantConfigDetail;
+import com.ym.mec.biz.dal.entity.TenantMemberRankSetting;
+import com.ym.mec.biz.dal.enums.PeriodEnum;
 import com.ym.mec.biz.service.TenantConfigService;
+import com.ym.mec.biz.service.TenantMemberRankSettingService;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.WrapperUtil;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
 import java.util.function.Consumer;
+import java.util.stream.Collectors;
 
 /**
  * @author hgw
@@ -30,8 +34,10 @@ import java.util.function.Consumer;
 @Service
 public class TenantConfigServiceImpl extends ServiceImpl<TenantConfigDao, TenantConfig> implements TenantConfigService {
 
-    @Autowired
+    @Resource
     private SysUserFeignService sysUserFeignService;
+    @Resource
+    private TenantMemberRankSettingService tenantMemberRankSettingService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -79,19 +85,56 @@ public class TenantConfigServiceImpl extends ServiceImpl<TenantConfigDao, Tenant
     }
 
     @Override
-    public Boolean autoActivationFlag(Integer tenantId) {
-        TenantConfig tenantConfig = this.getOne(new WrapperUtil<TenantConfig>()
-                .hasEq("tenant_id_", tenantId).queryWrapper());
-        TenantConfigDetail configDetail = JSON.parseObject(tenantConfig.getConfig(), TenantConfigDetail.class);
-        TenantConfigDetail.MemberConfig memberConfig = configDetail.getMember_config();
-        if(memberConfig.getDay_divide().compareTo(BigDecimal.ZERO) == 0 &&
-                memberConfig.getMonth_divide().compareTo(BigDecimal.ZERO) == 0 &&
-                memberConfig.getHalf_year_divide().compareTo(BigDecimal.ZERO) == 0 &&
-                memberConfig.getQuarter_divide().compareTo(BigDecimal.ZERO) == 0 &&
-                memberConfig.getYear_divide().compareTo(BigDecimal.ZERO) == 0){
-            return true;
+    public Map<Integer,Boolean> autoActivationFlag(Integer tenantId) {
+        List<TenantMemberRankSetting> rankSettings = tenantMemberRankSettingService.lambdaQuery().eq(TenantMemberRankSetting::getTenantId, tenantId).list();
+        Map<Integer, Boolean> result = new HashMap<>();
+        if(CollectionUtils.isNotEmpty(rankSettings)){
+            rankSettings.forEach(e -> {
+                TenantConfigDetail.MemberConfig memberConfig = JSON.parseObject(e.getMemberConfig(), TenantConfigDetail.MemberConfig.class);
+                result.put(e.getMemberRankSettingId(), memberConfig.getDay_divide().compareTo(BigDecimal.ZERO) == 0 &&
+                        memberConfig.getMonth_divide().compareTo(BigDecimal.ZERO) == 0 &&
+                        memberConfig.getHalf_year_divide().compareTo(BigDecimal.ZERO) == 0 &&
+                        memberConfig.getQuarter_divide().compareTo(BigDecimal.ZERO) == 0 &&
+                        memberConfig.getYear_divide().compareTo(BigDecimal.ZERO) == 0);
+            });
+        }
+        return result;
+    }
+
+    @Override
+    public Boolean autoActivationFlag(Integer tenantId, Integer memberRankId) {
+        return this.autoActivationFlag(tenantId).get(memberRankId);
+    }
+
+    @Override
+    public Map<Integer, JSONObject> getActivationAmount(Integer tenantId) {
+        List<TenantMemberRankSetting> rankSettings = tenantMemberRankSettingService.lambdaQuery()
+                .eq(TenantMemberRankSetting::getTenantId, tenantId).list();
+        if(CollectionUtils.isNotEmpty(rankSettings)){
+            return rankSettings.stream().collect(Collectors.toMap(TenantMemberRankSetting::getMemberRankSettingId, e -> JSON.parseObject(e.getMemberConfig())));
+        }
+        return new HashMap<>();
+    }
+
+    @Override
+    public BigDecimal getPriceByPeriod(JSONObject memberConfig, PeriodEnum period) {
+        if (Objects.isNull(memberConfig) || Objects.isNull(period)) {
+            return BigDecimal.ZERO;
+        }
+        switch (period) {
+            case DAY:
+                return memberConfig.getBigDecimal("day_divide");
+            case MONTH:
+                return memberConfig.getBigDecimal("month_divide");
+            case QUARTERLY:
+                return memberConfig.getBigDecimal("quarter_divide");
+            case YEAR_HALF:
+                return memberConfig.getBigDecimal("half_year_divide");
+            case YEAR:
+                return memberConfig.getBigDecimal("year_divide");
+            default:
+                return BigDecimal.ZERO;
         }
-        return false;
     }
 
     private void setUserId(Integer id, Consumer<Integer> setOption) {

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

@@ -935,7 +935,7 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 					map.put(userId, userId.toString());
 					sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PUSH_STUDENT_BUY_MEMBER_ACTIVITY, map, null, 0, null, "STUDENT",
 							activityName);
-					if(!tenantConfigService.autoActivationFlag(user.getTenantId())){
+					if(!tenantConfigService.autoActivationFlag(user.getTenantId(),1)){
 						//获取乐团主管
 						Map<Integer, String> eduMap = MapUtil.convertMybatisMap(studentRegistrationDao.queryStudentEduMap(userId));
 						if (CollectionUtils.isEmpty(eduMap)) {