zouxuan пре 5 година
родитељ
комит
07c3c57a32

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.UserGoodsDto;
+import com.ym.mec.biz.dal.dto.musicalListDetailDto;
 import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
@@ -12,6 +13,7 @@ import org.apache.ibatis.annotations.Param;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrder> {
 
@@ -157,4 +159,11 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
      * @return
      */
     Integer findOrderByGroupType(@Param("userId") Integer userId, @Param("sporadicId") Integer sporadicId, @Param("groupType") String groupType, @Param("status") DealStatusEnum status);
+
+    /**
+     * 获取订单金额map
+     * @param paymentOrderNo
+     * @return
+     */
+    List<Map<Long, BigDecimal>> queryActualAmount(@Param("paymentOrderNo") List<Long> paymentOrderNo);
 }

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDetailDao.java

@@ -6,7 +6,9 @@ import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
 public interface StudentPaymentOrderDetailDao extends BaseDAO<Long, StudentPaymentOrderDetail> {
 
@@ -51,4 +53,19 @@ public interface StudentPaymentOrderDetailDao extends BaseDAO<Long, StudentPayme
      * @return
      */
     List<musicalListDetailDto> getMusicalListDetail(String musicGroupId);
+
+    /**
+     * 获取商品名称列表
+     * @param paymentOrderNo
+     * @return
+     */
+    List<Map<Long, String>> queryGoodsNames(@Param("paymentOrderNo") List<Long> paymentOrderNo);
+
+    /**
+     * 获取对应商品类型总价
+     * @param paymentOrderNo
+     * @param type
+     * @return
+     */
+    List<Map<Long, BigDecimal>> queryGoodsPrice(@Param("paymentOrderNo") List<Long> paymentOrderNo,@Param("type") String type);
 }

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

@@ -284,4 +284,11 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @param studentRegistration
      */
     void updateCurrentClass(StudentRegistration studentRegistration);
+
+    /**
+     * 获取乐团学员购买方式
+     * @param musicGroupId
+     * @return
+     */
+    List<Map<Long, String>> queryPurchaseTypeMap(String musicGroupId);
 }

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

@@ -44,7 +44,7 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
     List<BasicUserDto> queryGroupStudents(@Param("teacherId") Integer teacherId, @Param("search") String search);
 
     /**
-     * 根据用户编号列表获取用户名称
+     * 根据用户编号列表获取用户realName
      *
      * @param userIds
      * @return
@@ -195,4 +195,11 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @return
      */
     List<Teacher> findTeacherByOrganId(@Param("organId")String organId);
+
+    /**
+     * 获取用户username
+     * @param userIds
+     * @return
+     */
+    List<Map<Integer, String>> queryUsernameByIds(@Param("userIds") List<Integer> userIds);
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/musicalListDetailDto.java

@@ -5,6 +5,8 @@ import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
 import java.math.BigDecimal;
 
 public class musicalListDetailDto {
+    private Long paymentOrderId;
+
     private Integer userId;
 
     private String goodsNames;
@@ -25,6 +27,14 @@ public class musicalListDetailDto {
 
     private BigDecimal orderAmount;
 
+    public Long getPaymentOrderId() {
+        return paymentOrderId;
+    }
+
+    public void setPaymentOrderId(Long paymentOrderId) {
+        this.paymentOrderId = paymentOrderId;
+    }
+
     public String getMusicGroupName() {
         return musicGroupName;
     }

+ 38 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java

@@ -1,22 +1,23 @@
 package com.ym.mec.biz.service.impl;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
-import com.ym.mec.biz.dal.dao.MusicGroupDao;
-import com.ym.mec.biz.dal.dao.OrganizationDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.musicalListDetailDto;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
 import com.ym.mec.biz.service.MusicGroupService;
+import com.ym.mec.util.collection.MapUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import com.ym.mec.biz.dal.dao.MusicGroupPurchaseListDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.service.GoodsService;
 import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
@@ -32,11 +33,17 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
     @Autowired
     private GoodsService goodsService;
     @Autowired
+    private TeacherDao teacherDao;
+    @Autowired
     private MusicGroupDao musicGroupDao;
     @Autowired
     private OrganizationDao organizationDao;
     @Autowired
     private MusicGroupPurchaseListDao musicGroupPurchaseListDao;
+    @Autowired
+    private StudentPaymentOrderDao studentPaymentOrderDao;
+    @Autowired
+    private StudentRegistrationDao studentRegistrationDao;
 
     @Override
     public BaseDAO<Long, StudentPaymentOrderDetail> getDAO() {
@@ -162,6 +169,32 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
 
     @Override
     public List<musicalListDetailDto> getMusicalListDetail(String musicGroupId) {
-        return studentPaymentOrderDetailDao.getMusicalListDetail(musicGroupId);
+        List<musicalListDetailDto> musicalListDetailDtos = studentPaymentOrderDetailDao.getMusicalListDetail(musicGroupId);
+        if(musicalListDetailDtos != null && musicalListDetailDtos.size() > 0){
+            List<Long> paymentOrderNo = musicalListDetailDtos.stream().map(e -> e.getPaymentOrderId()).collect(Collectors.toList());
+            List<Integer> userIds = musicalListDetailDtos.stream().map(e -> e.getUserId()).collect(Collectors.toList());
+            //商品名称
+            MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+            Organization organization = organizationDao.get(musicGroup.getOrganId());
+            Map<Long,String> goodsNameMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsNames(paymentOrderNo));
+            Map<Integer,String> usernameMap = MapUtil.convertIntegerMap(teacherDao.queryUsernameByIds(userIds));
+            Map<Long, BigDecimal> actualAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDao.queryActualAmount(paymentOrderNo));
+            Map<Long, BigDecimal> musicalAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo,"MUSICAL"));
+            Map<Long, BigDecimal> accessoriesAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo,"ACCESSORIES"));
+            Map<Long, BigDecimal> courseAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo,"COURSE"));
+            Map<Long, String> purchaseTypeMap = MapUtil.convertIntegerMap(studentRegistrationDao.queryPurchaseTypeMap(musicGroupId));
+            musicalListDetailDtos.forEach(e->{
+                e.setGoodsNames(goodsNameMap.get(e.getPaymentOrderId()));
+                e.setMusicGroupName(musicGroup.getName());
+                e.setUsername(usernameMap.get(e.getUserId()));
+                e.setOrganName(organization.getName());
+                e.setMusicalAmount(musicalAmountMap.get(e.getPaymentOrderId()));
+                e.setAccessoriesAmount(accessoriesAmountMap.get(e.getPaymentOrderId()));
+                e.setOrderAmount(actualAmountMap.get(e.getPaymentOrderId()));
+                e.setCourseAmount(courseAmountMap.get(e.getPaymentOrderId()));
+                e.setKitGroupPurchaseTypeEnum(KitGroupPurchaseTypeEnum.valueOf(purchaseTypeMap.get(e.getUserId())));
+            });
+        }
+        return musicalListDetailDtos;
     }
 }

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

@@ -113,6 +113,7 @@
         AND spo.type_ = 'APPLY'
     </select>
     <resultMap id="musicalListDetailDtoMap" type="com.ym.mec.biz.dal.dto.musicalListDetailDto">
+        <result property="paymentOrderId" column="payment_order_id_"/>
         <result property="username" column="username_"/>
         <result property="userId" column="user_id_"/>
         <result property="musicGroupName" column="muaic_group_name_"/>
@@ -125,6 +126,26 @@
         <result property="goodsNames" column="goods_names_"/>
     </resultMap>
     <select id="getMusicalListDetail" resultMap="musicalListDetailDtoMap">
-
+        SELECT MAX(spo.id_) payment_order_id_,spo.user_id_  FROM student_payment_order spo
+        WHERE spo.music_group_id_ = #{musicGroupId}
+        GROUP BY spo.user_id_
+    </select>
+    <select id="queryGoodsNames" resultType="java.util.Map">
+        SELECT spod.payment_order_id_ 'key',GROUP_CONCAT(g.name_) 'value'
+        FROM student_payment_order_detail spod
+        LEFT JOIN goods g ON FIND_IN_SET(g.id_,spod.goods_id_list_)
+        WHERE spod.payment_order_id_ IN
+        <foreach collection="paymentOrderNo" open="(" close=")" separator="," item="item">
+            #{item}
+        </foreach>
+        GROUP BY spod.payment_order_id_
+    </select>
+    <select id="queryGoodsPrice" resultType="java.util.Map">
+        SELECT spod.payment_order_id_ 'key' ,SUM(price_) 'value' FROM student_payment_order_detail spod
+        WHERE spod.type_ = #{type} AND spod.payment_order_id_ IN
+        <foreach collection="paymentOrderNo" open="(" close=")" separator="," item="item">
+            #{item}
+        </foreach>
+        GROUP BY spod.payment_order_id_
     </select>
 </mapper>

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

@@ -332,5 +332,12 @@
             AND status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         </if>
     </select>
-
+    <select id="queryActualAmount" resultType="java.util.Map">
+        SELECT spo.actual_amount_ 'value',spo.id_ 'key'
+        FROM student_payment_order spo
+        WHERE spo.id_ IN
+        <foreach collection="paymentOrderNo" open="(" close=")" separator="," item="item">
+            #{item}
+        </foreach>
+    </select>
 </mapper>

+ 5 - 0
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -543,6 +543,11 @@
         WHERE sr.parents_phone_ = #{mobile}
         LIMIT 1
     </select>
+    <select id="queryPurchaseTypeMap" resultType="java.util.Map">
+        SELECT sr.user_id_ 'key',mgsp.kit_group_purchase_type_ 'value' FROM student_registration sr
+        LEFT JOIN music_group_subject_plan mgsp ON sr.actual_subject_id_ = mgsp.subject_id_ AND sr.music_group_id_ = mgsp.music_group_id_
+        WHERE sr.music_group_id_ = #{musicGroupId}
+    </select>
 
     <update id="updateUser">
         UPDATE sys_user SET real_name_ = #{realName},id_card_no_=#{idCardNo} WHERE id_=#{id}

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -568,4 +568,11 @@
             AND FIND_IN_SET(t.organ_id_,#{organId})
         </if>
     </select>
+    <select id="queryUsernameByIds" resultType="java.util.Map" parameterType="list">
+        select id_ `key`,username_ `value` FROM sys_user s
+        WHERE s.id_ IN
+        <foreach collection="userIds" item="item" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+    </select>
 </mapper>

+ 2 - 1
mec-student/src/main/java/com/ym/mec/student/controller/SmsCodeController.java

@@ -5,6 +5,7 @@ import com.google.code.kaptcha.Producer;
 import com.google.code.kaptcha.servlet.KaptchaServlet;
 import com.ym.mec.biz.service.SmsCodeService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.security.SecurityConstants;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -80,7 +81,7 @@ public class SmsCodeController extends BaseController {
     @ApiImplicitParam(name = "phone", value = "手机号", required = true, dataType = "String")
     public void getKaptchaImage(HttpServletResponse response,String phone) throws Exception {
         if(StringUtils.isEmpty(phone)){
-            return;
+            throw new BizException("请输入手机号");
         }
         response.setDateHeader("Expires", 0);
 

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

@@ -42,6 +42,7 @@ public class ExportController extends BaseController {
 
     @ApiOperation(value = "导出乐器采购清单")
     @PostMapping("order/musicalListExport")
+    @PreAuthorize("@pcs.hasPermissions('order/musicalListExport')")
     public void musicalListExport(HttpServletResponse response, String musicGroupId){
         List<Goods> musicalList = studentPaymentOrderDetailService.getMusicalList(musicGroupId);
         if(musicalList == null || musicalList.size() < 1){
@@ -62,6 +63,7 @@ public class ExportController extends BaseController {
 
     @ApiOperation(value = "导出学员采购清单明细")
     @PostMapping("order/musicalListDetailExport")
+    @PreAuthorize("@pcs.hasPermissions('order/musicalListDetailExport')")
     public void musicalListDetailExport(HttpServletResponse response, String musicGroupId){
         List<musicalListDetailDto> musicalList = studentPaymentOrderDetailService.getMusicalListDetail(musicGroupId);
         if(musicalList == null || musicalList.size() < 1){
@@ -103,6 +105,7 @@ public class ExportController extends BaseController {
 
     @ApiOperation(value = "分页导出教师薪酬列表")
     @RequestMapping("courseScheduleTeacherSalary/export")
+    @PreAuthorize("@pcs.hasPermissions('courseScheduleTeacherSalary/export')")
     public void export(CourseScheduleTeacherSalaryQueryInfo queryInfo, HttpServletResponse response) {
         List<TeacherSalaryDto> teacherSalaries = courseScheduleTeacherSalaryService.querySalaries(queryInfo).getRows();
         try {