Selaa lähdekoodia

Merge remote-tracking branch 'origin/feature/1022_vip' into feature/1022_vip

zouxuan 9 kuukautta sitten
vanhempi
commit
1dafb282df

+ 49 - 0
mec-application/src/main/java/com/ym/mec/web/controller/StudentMemberUpdateLogController.java

@@ -0,0 +1,49 @@
+package com.ym.mec.web.controller;
+
+
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.PageUtil;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+
+import com.alibaba.fastjson.JSONObject;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import com.ym.mec.biz.service.StudentMemberUpdateLogService;
+import com.ym.mec.biz.dal.wrapper.StudentMemberUpdateLogWrapper;
+import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("${app-config.url.web:}/studentMemberUpdateLog")
+@Api(tags = "学员云教练时长修改记录")
+public class StudentMemberUpdateLogController extends BaseController {
+
+    @Autowired
+    private StudentMemberUpdateLogService studentMemberUpdateLogService;
+
+    @ApiOperation(value = "查询分页", notes = "学员云教练时长修改记录- 传入 StudentMemberUpdateLogWrapper.StudentMemberUpdateLogQuery") 
+    @PostMapping("/page")
+    public HttpResponseResult<PageInfo<StudentMemberUpdateLogWrapper.StudentMemberUpdateLog>> page(@RequestBody StudentMemberUpdateLogWrapper.StudentMemberUpdateLogQuery query) {
+        
+        IPage<StudentMemberUpdateLogWrapper.StudentMemberUpdateLog> pages = studentMemberUpdateLogService.selectPage(QueryInfo.getPage(query), query);
+        
+        return succeed(PageUtil.pageInfo(pages));
+	}
+
+}

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

@@ -131,7 +131,7 @@ public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
 
     List<CloudCoachActivationDetailsDto> exportMusicGroupNoCourse(@Param("organId") String organId);
 
-    int countByMemberRankSettingId(@Param("memberRankSettingId") Integer memberRankSettingId);
+    int countByMemberRankSettingId(@Param("memberRankSettingId") List<Integer> memberRankSettingId);
 
     Date getActivationMaxTime(@Param("studentId") Integer studentId, @Param("level") Integer level);
 

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

@@ -1,7 +1,9 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
+import com.ym.mec.biz.dal.wrapper.StudentMemberUpdateLogWrapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -15,6 +17,7 @@ import java.util.List;
 public interface StudentMemberUpdateLogDao extends BaseMapper<StudentMemberUpdateLog> {
 
    int insertBatch(@Param("entities") List<StudentMemberUpdateLog> entities);
-   
+
+    IPage<StudentMemberUpdateLogWrapper.StudentMemberUpdateLog> selectPage(@Param("page") IPage<StudentMemberUpdateLogWrapper.StudentMemberUpdateLog> page, @Param("param") StudentMemberUpdateLogWrapper.StudentMemberUpdateLogQuery query);
 }
 

+ 77 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/StudentMemberUpdateLogWrapper.java

@@ -0,0 +1,77 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.enums.PeriodEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+public class StudentMemberUpdateLogWrapper {
+
+
+    @Data
+    public static class StudentMemberUpdateLogQuery  implements QueryInfo {
+
+
+        @ApiModelProperty("当前页")
+        private Integer page;
+
+        @ApiModelProperty("分页行数")
+        private Integer rows;
+
+        @ApiModelProperty("学练宝ID")
+        private Integer memberRankSettingId;
+
+        @ApiModelProperty(value = "购买方式,1-自行购买 2-后台添加 3-后台扣减")
+        private Integer buyType;
+
+        @ApiModelProperty("用户ID")
+        private Integer userId;
+
+        @ApiModelProperty("操作人名称")
+        private String operatorName;
+
+        @ApiModelProperty("开始时间")
+        private String startTime;
+
+        @ApiModelProperty("结束时间")
+        private String endTime;
+    }
+
+    @Data
+    public static class StudentMemberUpdateLog{
+
+        @ApiModelProperty(value = "购买方式,1-自行购买 2-后台添加 3-后台扣减")
+        private Integer buyType;
+
+
+        @ApiModelProperty("学练宝ID")
+        private Integer level;
+
+        @ApiModelProperty(value = "时长类型 1-天 2-月 3-年")
+        private PeriodEnum type;
+
+
+        @ApiModelProperty(value = "购买时长")
+        private Integer time;
+
+        @ApiModelProperty("学练宝名称")
+        private String memberRankSettingName;
+
+        @ApiModelProperty("操作人ID")
+        private Integer operatorId;
+
+        @ApiModelProperty("操作人名称")
+        private String operatorName;
+
+        @ApiModelProperty("创建时间")
+        private Date createTime;
+
+        @ApiModelProperty("添加原因")
+        private String memo;
+
+
+    }
+}

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

@@ -71,4 +71,6 @@ public interface MemberRankSettingService extends BaseService<Integer, MemberRan
     String queryMemberName(Integer memberRankId);
 
     List<MemberRankSetting> findByOrganIds(List<Integer> organIds);
+
+    Map<Integer,MemberRankSetting> getMapByIds(List<Integer> memberRankSettingIds);
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentMemberUpdateLogService.java

@@ -1,9 +1,11 @@
 package com.ym.mec.biz.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.biz.dal.dao.StudentMemberUpdateLogDao;
 import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
 import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
+import com.ym.mec.biz.dal.wrapper.StudentMemberUpdateLogWrapper;
 
 /**
  * 学员云教练时长修改记录(StudentMemberUpdateLog)表服务接口
@@ -16,5 +18,7 @@ public interface StudentMemberUpdateLogService extends IService<StudentMemberUpd
     StudentMemberUpdateLogDao getDao();
 
     void saveToCloudTeacherOrder(CloudTeacherOrder cloudTeacherOrder);
+
+    IPage<StudentMemberUpdateLogWrapper.StudentMemberUpdateLog> selectPage(IPage<StudentMemberUpdateLogWrapper.StudentMemberUpdateLog> page, StudentMemberUpdateLogWrapper.StudentMemberUpdateLogQuery query);
 }
 

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

@@ -188,7 +188,13 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         }
 
         // 是否已被购买
-        int count = cloudTeacherOrderDao.countByMemberRankSettingId(memberRankSettingId);
+        List<Integer> memberRankSettingsId = Lists.newArrayList(memberRankSetting.getId());
+        List<MemberRankSetting> notDelByParentIds = memberRankSettingDao.getNotDelByParentIds(memberRankSettingsId);
+        if (CollectionUtils.isNotEmpty(notDelByParentIds)) {
+            List<Integer> ids = notDelByParentIds.stream().map(MemberRankSetting::getId).collect(Collectors.toList());
+            memberRankSettingsId.addAll(ids);
+        }
+        int count = cloudTeacherOrderDao.countByMemberRankSettingId(memberRankSettingsId);
         result.setBuyFlag(count > 0);
 
         // 查询上级
@@ -205,7 +211,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
     public void updateSetting(MemberRankSettingWrapper.MemberRankSettingAdd memberRankSetting) {
 
         // 是否已被购买
-        int count = cloudTeacherOrderDao.countByMemberRankSettingId(memberRankSetting.getId());
+        int count = cloudTeacherOrderDao.countByMemberRankSettingId(Lists.newArrayList(memberRankSetting.getId()));
         if (count >0) {
             // 不能修改权益内容
             List<MemberRankPrivileges> privilegesList = memberRankPrivilegesDao.findByRankSettingId(memberRankSetting.getId());
@@ -1197,7 +1203,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         // 判断是否买过
 
         // 是否已被购买
-        int count = cloudTeacherOrderDao.countByMemberRankSettingId(id);
+        int count = cloudTeacherOrderDao.countByMemberRankSettingId(Lists.newArrayList(id));
         if (count > 0) {
             throw new BizException("存在学员使用、或销售,不可删除");
         }
@@ -1291,4 +1297,16 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         parentSettings.forEach(e -> e.setChildren(childrenMap.get(e.getId())));
         return parentSettings;
     }
+
+    @Override
+    public Map<Integer, MemberRankSetting> getMapByIds(List<Integer> memberRankSettingIds) {
+        if (CollectionUtils.isEmpty(memberRankSettingIds)) {
+            return new HashMap<>();
+        }
+        List<MemberRankSetting> memberRankSettings = memberRankSettingDao.selectBatchIds(memberRankSettingIds);
+        if (CollectionUtils.isEmpty(memberRankSettings)) {
+            return new HashMap<>();
+        }
+        return memberRankSettings.stream().collect(Collectors.toMap(MemberRankSetting::getId, o -> o, (o1, o2) -> o1));
+    }
 }

+ 57 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentMemberUpdateLogServiceImpl.java

@@ -1,15 +1,28 @@
 package com.ym.mec.biz.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.StudentMemberUpdateLogDao;
 import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
+import com.ym.mec.biz.dal.entity.MemberRankSetting;
 import com.ym.mec.biz.dal.entity.StudentMemberUpdateLog;
+import com.ym.mec.biz.dal.wrapper.StudentMemberUpdateLogWrapper;
+import com.ym.mec.biz.service.MemberRankSettingService;
 import com.ym.mec.biz.service.StudentMemberUpdateLogService;
+import com.ym.mec.biz.service.SysUserService;
+import org.apache.commons.collections.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
 /**
  * 学员云教练时长修改记录(StudentMemberUpdateLog)表服务实现类
  *
@@ -19,6 +32,12 @@ import org.springframework.transaction.annotation.Transactional;
 @Service("studentMemberUpdateLogService")
 public class StudentMemberUpdateLogServiceImpl extends ServiceImpl<StudentMemberUpdateLogDao, StudentMemberUpdateLog> implements StudentMemberUpdateLogService {
 
+    @Autowired
+    private SysUserService sysUserService;
+
+    @Autowired
+    private MemberRankSettingService memberRankSettingService;
+
     private final static Logger log = LoggerFactory.getLogger(StudentMemberUpdateLogServiceImpl.class);
 
     @Override
@@ -41,5 +60,43 @@ public class StudentMemberUpdateLogServiceImpl extends ServiceImpl<StudentMember
         this.save(studentMemberUpdateLog);
     }
 
+    @Override
+    public IPage<StudentMemberUpdateLogWrapper.StudentMemberUpdateLog> selectPage(IPage<StudentMemberUpdateLogWrapper.StudentMemberUpdateLog> page, StudentMemberUpdateLogWrapper.StudentMemberUpdateLogQuery query) {
+        IPage<StudentMemberUpdateLogWrapper.StudentMemberUpdateLog> studentMemberUpdateLogIPage = baseMapper.selectPage(page, query);
+        List<StudentMemberUpdateLogWrapper.StudentMemberUpdateLog> records = studentMemberUpdateLogIPage.getRecords();
+        if (CollectionUtils.isEmpty(records)) {
+            return studentMemberUpdateLogIPage;
+        }
+        // 操作人ID集合
+        List<Integer> operatorIds = records.stream()
+            .map(StudentMemberUpdateLogWrapper.StudentMemberUpdateLog::getOperatorId)
+            .filter(Objects::nonNull)
+            .distinct()
+            .collect(Collectors.toList());
+        Map<Long, SysUser> userServiceMapByIds = sysUserService.getMapByIds(operatorIds);
+
+        // 学练宝ID集合
+        List<Integer> memberRankSettingIds = records.stream()
+            .map(StudentMemberUpdateLogWrapper.StudentMemberUpdateLog::getLevel)
+            .filter(Objects::nonNull)
+            .distinct()
+            .collect(Collectors.toList());
+        Map<Integer, MemberRankSetting> rankSettingMap = memberRankSettingService.getMapByIds(memberRankSettingIds);
+
+        records.forEach(record -> {
+            if (record.getOperatorId() !=null) {
+                SysUser sysUser = userServiceMapByIds.get(record.getOperatorId().longValue());
+                if (sysUser != null) {
+                    record.setOperatorName(sysUser.getRealName());
+                }
+            }
+            MemberRankSetting memberRankSetting = rankSettingMap.get(record.getLevel());
+            if (memberRankSetting != null) {
+                record.setMemberRankSettingName(memberRankSetting.getName());
+            }
+        });
+        return studentMemberUpdateLogIPage.setRecords(records);
+    }
+
 }
 

+ 21 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicScoreServiceImpl.java

@@ -304,6 +304,15 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
         List<SysMusicScore> rows = sysMusicScorePageInfo.getRows();
         //处理查询结果
         dealMusicScoreData(rows);
+
+        // 判断曲目是否在分类中
+        for (SysMusicScore row : rows) {
+            if (StringUtils.isBlank(row.getRankIds())) {
+                row.setUseStatus("FREE");
+            } else {
+                row.setUseStatus("LOCK");
+            }
+        }
         return sysMusicScorePageInfo;
     }
 
@@ -337,6 +346,7 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
         dealMusicScoreData(rows);
 
         // 根据用户会员判断是否锁定,免费曲目为试用
+        List<Integer> categoryIds = new ArrayList<>();
         if (queryInfo.getUserType()!=null && ClientEnum.STUDENT==queryInfo.getUserType()) {
             // 查询有效的会员
             List<Integer> activationVipIds = cloudTeacherOrderDao.getActivationVipIds(queryInfo.getUserId());
@@ -346,20 +356,19 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
             if (CollectionUtils.isEmpty(categoryMapperList)) {
                 categoryMapperList = new ArrayList<>();
             }
-            List<Integer> categoryIds = categoryMapperList.stream().map(MemberRankCategoryMapper::getCategoryId).distinct().collect(Collectors.toList());
+            categoryIds = categoryMapperList.stream().map(MemberRankCategoryMapper::getCategoryId).distinct().collect(Collectors.toList());
 
-            // 判断曲目是否在分类中
-            for (SysMusicScore row : rows) {
-                if (StringUtils.isBlank(row.getRankIds())) {
-                    row.setUseStatus("FREE");
-                } else if (categoryIds.contains(row.getCbsMusicCategoriesId())) {
-                    row.setUseStatus("UNLOCK");
-                } else {
-                    row.setUseStatus("LOCK");
-                }
+        }
+
+        // 判断曲目是否在分类中
+        for (SysMusicScore row : rows) {
+            if (StringUtils.isBlank(row.getRankIds())) {
+                row.setUseStatus("FREE");
+            } else if (categoryIds.contains(row.getCbsMusicCategoriesId())) {
+                row.setUseStatus("UNLOCK");
+            } else {
+                row.setUseStatus("LOCK");
             }
-        } else {
-            rows.forEach(o->o.setUseStatus("UNLOCK"));
         }
         return pageInfo;
     }

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

@@ -629,7 +629,10 @@
     </select>
 
     <select id="countByMemberRankSettingId" resultType="int">
-        select count(1) from cloud_teacher_order where level_ = #{memberRankSettingId}
+        select count(1) from cloud_teacher_order where  level_ in
+        <foreach collection="memberRankSettingId" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
     </select>
     <select id="getActivationMaxTime" resultType="java.util.Date">
         select max(end_time_) from cloud_teacher_order where student_id_ = #{studentId} and level_ = #{level} and status_ = 2

+ 33 - 0
mec-biz/src/main/resources/config/mybatis/StudentMemberUpdateLogMapper.xml

@@ -1,4 +1,37 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ym.mec.biz.dal.dao.StudentMemberUpdateLogDao">
+
+    <select id="selectPage"
+            resultType="com.ym.mec.biz.dal.wrapper.StudentMemberUpdateLogWrapper$StudentMemberUpdateLog">
+
+        select * from student_member_update_log t
+        <if test="param.operatorName != null and param.operatorName != ''">
+            left join sys_user u on t.operator_id_ = u.id_
+        </if>
+        <where>
+            <if test="param.buyType != null">
+                and t.buy_type_ = #{param.buyType}
+            </if>
+            <if test="param.memberRankSettingId != null">
+                and t.level_ = #{param.memberRankSettingId}
+            </if>
+            <if test="param.startTime != null">
+                and t.create_time_ &gt;= #{param.startTime}
+            </if>
+            <if test="param.endTime != null">
+                and t.create_time_ &lt;= #{param.endTime}
+            </if>
+            <if test="param.operatorName != null and param.operatorName != ''">
+                and u.real_name_ like concat('%',#{param.operatorName},'%')
+            </if>
+            <if test="param.userId != null">
+                and t.student_id_ = #{param.userId}
+            </if>
+
+
+        </where>
+
+        order by t.create_time_ desc
+    </select>
 </mapper>