Kaynağa Gözat

商品销售逻辑更改

zouxuan 4 yıl önce
ebeveyn
işleme
9a3030842f

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -293,4 +293,27 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
      * @return java.lang.Integer
      */
     Integer getFirstEduTeacherId(@Param("userId") Integer userId);
+
+    /**
+     * @describe 获取学员关联的乐团
+     * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+     * @author zouxuan
+     * @date 2020/9/28
+     * @time 13:47
+     * @param studentId:
+     * @return com.ym.mec.biz.dal.entity.MusicGroup
+     */
+    MusicGroup getStuMusic(Integer studentId);
+
+    /**
+     * @describe 获取学员和乐团关联的乐团
+     * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+     * @author zouxuan
+     * @date 2020/9/28
+     * @time 13:54
+     * @param studentId:
+     * @param educationalTeacherId:
+     * @return com.ym.mec.biz.dal.entity.MusicGroup
+     */
+    MusicGroup getStuEduMusic(@Param("studentId") Integer studentId, @Param("educationalTeacherId") Integer educationalTeacherId);
 }

+ 33 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRepairDao.java

@@ -65,4 +65,37 @@ public interface StudentRepairDao extends com.ym.mec.common.dal.BaseDAO<Integer,
      * @return
      */
     BasicUserDto getStudentOrganRepairer(@Param("organId") Integer organId);
+
+    /**
+     * @describe 获取商品购买教务老师关联的学员列表
+     * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+     * @author zouxuan
+     * @date 2020/9/28
+     * @time 11:29
+     * @param params:
+     * @return int
+     */
+    int countEduStudents(Map<String, Object> params);
+
+    /**
+     * @describe 获取商品购买教务老师关联的学员列表
+     * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+     * @author zouxuan
+     * @date 2020/9/28
+     * @time 11:30
+     * @param params:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.BasicUserDto>
+     */
+    List<BasicUserDto> queryEduStudents(Map<String, Object> params);
+
+    /**
+     * @describe 获取学生关联的所有教务老师列表
+     * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+     * @author zouxuan
+     * @date 2020/9/28
+     * @time 13:35
+     * @param studentId:
+     * @return int
+     */
+    List<Integer> countStuEducation(@Param("studentId") Integer studentId);
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentGoodsSell.java

@@ -58,6 +58,17 @@ public class StudentGoodsSell {
 	@ApiModelProperty(value = "创建人编号", required = false)
 	private Integer authorUser;
 
+	@ApiModelProperty(value = "合作单位编号", required = false)
+	private Integer cooperationOrganId;
+
+	public Integer getCooperationOrganId() {
+		return cooperationOrganId;
+	}
+
+	public void setCooperationOrganId(Integer cooperationOrganId) {
+		this.cooperationOrganId = cooperationOrganId;
+	}
+
 	public Integer getAuthorUser() {
 		return authorUser;
 	}

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRepairService.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.StudentRepair;
 import com.ym.mec.biz.dal.page.RepairStudentQueryInfo;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 import java.util.Map;
@@ -99,4 +100,15 @@ public interface StudentRepairService extends BaseService<Integer, StudentRepair
      * @return void
      */
     void goodsSellOrderCallback(StudentPaymentOrder order);
+
+    /**
+     * @describe 获取商品购买教务老师关联的学员列表
+     * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+     * @author zouxuan
+     * @date 2020/9/28
+     * @time 11:27
+     * @param queryInfo:
+     * @return java.lang.Object
+     */
+    PageInfo<BasicUserDto> queryEduStudents(QueryInfo queryInfo);
 }

+ 47 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -16,6 +16,7 @@ import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
@@ -119,6 +120,8 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             if (orderByOrderNo.getBalancePaymentAmount() != null && orderByOrderNo.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
                 sysUserCashAccountService.updateBalance(orderByOrderNo.getUserId(), orderByOrderNo.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "关闭订单");
             }
+            studentGoodsSell = studentGoodsSellDao.findByOrderNo(studentGoodsSell.getOrderNo());
+            studentGoodsSell.setGoodsSellDtos(JSON.parseArray(studentGoodsSell.getGoodsJson(),GoodsSellDto.class));
         }
         Integer studentId = studentGoodsSell.getUserId();
         List<GoodsSellDto> goodsSellDtos = studentGoodsSell.getGoodsSellDtos();
@@ -130,13 +133,27 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         }
         studentDao.lockUser(studentId);
         SysUser student = sysUserFeignService.queryUserById(studentId);
+        //如果教务老师为空,代表学员自己创建的订单
         if(studentGoodsSell.getTeacherId() == null){
-            //获取学员第一个教务老师
-            studentGoodsSell.setTeacherId(musicGroupDao.getFirstEduTeacherId(studentGoodsSell.getUserId()));
+            //获取学生关联的所有教务老师列表
+            List<Integer> stuEducation = studentRepairDao.countStuEducation(studentId);
+            if (stuEducation != null && stuEducation.size() == 1){
+                //获取学员乐团关联的教务
+                MusicGroup musicGroup = musicGroupDao.getStuMusic(studentId);
+                studentGoodsSell.setTeacherId(stuEducation.get(0));
+                if(musicGroup != null){
+                    studentGoodsSell.setCooperationOrganId(musicGroup.getCooperationOrganId());
+                }
+            }
+        }else if(studentGoodsSell.getCooperationOrganId() == null){
+            //获取教务老师,学员关联的乐团
+            MusicGroup musicGroup = musicGroupDao.getStuEduMusic(studentId,studentGoodsSell.getTeacherId());
+            if(musicGroup != null){
+                studentGoodsSell.setCooperationOrganId(musicGroup.getCooperationOrganId());
+            }
         }
         List<Integer> goodsIds = goodsSellDtos.stream().map(e -> e.getGoodsId()).collect(Collectors.toList());
 
-//        String[] goodsIds = goodsJson.split(",");
         Map<Integer, BigDecimal> map = getMap("goods", "id_", "market_price_", goodsIds, Integer.class, BigDecimal.class);
         for (GoodsSellDto goodsSellDto : goodsSellDtos) {
             goodsSellDto.setGoodsPrice(map.get(goodsSellDto.getGoodsId()));
@@ -691,6 +708,31 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         }
     }
 
+    @Override
+    public PageInfo<BasicUserDto> queryEduStudents(QueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("请登录");
+        }
+        PageInfo<BasicUserDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        params.put("teacherId",sysUser.getId());
+
+        List<BasicUserDto> dataList = null;
+        int count = studentRepairDao.countEduStudents(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = studentRepairDao.queryEduStudents(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
     private void saveSellOrder(String orderNo){
         StudentPaymentOrder orderByOrderNo = studentPaymentOrderService.findOrderByOrderNo(orderNo);
         StudentGoodsSell studentGoodsSell = studentGoodsSellDao.findByOrderNo(orderNo);
@@ -728,6 +770,8 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             sellOrder.setPaymentChannel(orderByOrderNo.getPaymentChannel());
             sellOrder.setMerNo(orderByOrderNo.getMerNos());
             sellOrder.setSellTime(orderByOrderNo.getPayTime());
+            sellOrder.setEduTeacherId(studentGoodsSell.getTeacherId());
+            sellOrder.setCooperationOrganId(studentGoodsSell.getCooperationOrganId());
             sellOrders.add(sellOrder);
         });
         if(sellOrders.size() > 0){

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

@@ -612,4 +612,15 @@
         LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_
         WHERE user_id_ = #{userId} AND mg.status_ != 'CANCELED' AND sr.music_group_status_ != 'QUIT' AND mg.educational_teacher_id_ IS NOT NULL LIMIT 1
     </select>
+    <select id="getStuMusic" resultMap="MusicGroup">
+        SELECT mg.* FROM music_group mg
+        LEFT JOIN student_registration sr ON mg.id_ = sr.music_group_id_
+        WHERE mg.status_ != 'CANCELED' AND sr.music_group_status_ != 'QUIT' AND sr.user_id_ = #{studentId} LIMIT 1
+    </select>
+    <select id="getStuEduMusic" resultMap="MusicGroup">
+        SELECT mg.* FROM music_group mg
+        LEFT JOIN student_registration sr ON mg.id_ = sr.music_group_id_
+        WHERE mg.status_ != 'CANCELED' AND sr.music_group_status_ != 'QUIT'
+        AND sr.user_id_ = #{studentId} AND mg.educational_teacher_id_ = #{educationalTeacherId} LIMIT 1
+    </select>
 </mapper>

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

@@ -141,13 +141,13 @@
         insert into sell_order (organ_id_, cooperation_organ_id_, trans_no_,order_id_, order_no_, expect_amount_,
         actual_amount_,
         balance_amount_, type_, goods_id_,goods_name_, sell_cost_, sell_cost2_, num_, user_id_, payment_channel_,
-        mer_no_, sell_time_, create_ime_, update_time_)
+        mer_no_, sell_time_,edu_teacher_id_, create_ime_, update_time_)
         VALUE
         <foreach collection="sellOrders" separator="," item="sellOrder">
             (#{sellOrder.organId},#{sellOrder.cooperationOrganId},#{sellOrder.transNo},#{sellOrder.orderId},#{sellOrder.orderNo},
             #{sellOrder.expectAmount},#{sellOrder.actualAmount},#{sellOrder.balanceAmount},#{sellOrder.type},#{sellOrder.goodsId},
             #{sellOrder.goodsName},#{sellOrder.sellCost},#{sellOrder.sellCost2},#{sellOrder.num},#{sellOrder.userId},
-            #{sellOrder.paymentChannel},#{sellOrder.merNo},#{sellOrder.sellTime},NOW(),NOW())
+            #{sellOrder.paymentChannel},#{sellOrder.merNo},#{sellOrder.sellTime},#{sellOrder.eduTeacherId},NOW(),NOW())
         </foreach>
     </insert>
 

+ 9 - 3
mec-biz/src/main/resources/config/mybatis/StudentGoodsSellMapper.xml

@@ -17,6 +17,7 @@
 		<result column="username_" property="userName" />
 		<result column="organ_id_" property="organId" />
 		<result column="author_user_" property="authorUser" />
+		<result column="cooperation_organ_id_" property="cooperationOrganId" />
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 	</resultMap>
@@ -32,16 +33,21 @@
 	<select id="findAll" resultMap="StudentGoodsSell">
 		SELECT * FROM student_goods_sell ORDER BY id_
 	</select>
-	
+
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.StudentGoodsSell" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO student_goods_sell (user_id_,teacher_id_,goods_json_,total_amount_,market_amount_,create_time_,update_time_,order_no_,organ_id_,author_user_)
-		VALUES(#{userId},#{teacherId},#{goodsJson},#{totalAmount},#{marketAmount},NOW(),NOW(),#{orderNo},#{organId},#{authorUser})
+		INSERT INTO student_goods_sell (user_id_,teacher_id_,goods_json_,total_amount_,market_amount_,
+		create_time_,update_time_,order_no_,organ_id_,author_user_,cooperation_organ_id_)
+		VALUES(#{userId},#{teacherId},#{goodsJson},#{totalAmount},#{marketAmount},
+		NOW(),NOW(),#{orderNo},#{organId},#{authorUser},#{cooperationOrganId})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.StudentGoodsSell">
 		UPDATE student_goods_sell <set>
+		<if test="cooperationOrganId != null">
+			cooperation_organ_id_ = #{cooperationOrganId},
+		</if>
 		<if test="authorUser != null">
 			author_user_ = #{authorUser},
 		</if>

+ 50 - 0
mec-biz/src/main/resources/config/mybatis/StudentRepairMapper.xml

@@ -267,4 +267,54 @@
         ORDER BY RAND()
         LIMIT 1
     </select>
+    <select id="countEduStudents" resultType="java.lang.Integer">
+        SELECT COUNT(DISTINCT su.id_) FROM (
+        SELECT sr.user_id_ FROM music_group mg
+        LEFT JOIN student_registration sr ON mg.id_ = sr.music_group_id_
+        WHERE mg.status_ != 'CANCELED' AND sr.music_group_status_ != 'QUIT' AND mg.educational_teacher_id_ = #{teacherId}
+        UNION
+        SELECT cssp.user_id_ FROM vip_group vg
+        LEFT JOIN course_schedule_student_payment cssp ON vg.id_ = cssp.music_group_id_
+        WHERE cssp.group_type_ = 'VIP' AND vg.educational_teacher_id_ = #{teacherId}
+        UNION
+        SELECT cssp.user_id_ FROM practice_group pg
+        LEFT JOIN course_schedule_student_payment cssp ON pg.id_ = cssp.music_group_id_
+        WHERE cssp.group_type_ = 'PRACTICE' AND pg.educational_teacher_id_ = #{teacherId}) sid
+        LEFT JOIN sys_user su ON su.id_ = sid.user_id_
+        <if test="search != null and search != ''">
+            WHERE su.id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%')
+        </if>
+    </select>
+    <select id="queryEduStudents" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
+        SELECT su.username_, su.id_ user_id_, su.avatar_ head_url_,su.phone_ FROM (
+        SELECT sr.user_id_ FROM music_group mg
+        LEFT JOIN student_registration sr ON mg.id_ = sr.music_group_id_
+        WHERE mg.status_ != 'CANCELED' AND sr.music_group_status_ != 'QUIT' AND mg.educational_teacher_id_ = #{teacherId}
+        UNION
+        SELECT cssp.user_id_ FROM vip_group vg
+        LEFT JOIN course_schedule_student_payment cssp ON vg.id_ = cssp.music_group_id_
+        WHERE cssp.group_type_ = 'VIP' AND vg.educational_teacher_id_ = #{teacherId}
+        UNION
+        SELECT cssp.user_id_ FROM practice_group pg
+        LEFT JOIN course_schedule_student_payment cssp ON pg.id_ = cssp.music_group_id_
+        WHERE cssp.group_type_ = 'PRACTICE' AND pg.educational_teacher_id_ = #{teacherId}) sid
+        LEFT JOIN sys_user su ON su.id_ = sid.user_id_
+        <if test="search != null and search != ''">
+            WHERE su.id_ = #{search} OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%')
+        </if>
+    </select>
+    <select id="countStuEducation" resultType="java.lang.Integer">
+        SELECT DISTINCT sid.educational_teacher_id_ FROM (
+        SELECT mg.educational_teacher_id_ FROM music_group mg
+        LEFT JOIN student_registration sr ON mg.id_ = sr.music_group_id_
+        WHERE mg.status_ != 'CANCELED' AND sr.music_group_status_ != 'QUIT' AND sr.user_id_ = #{studentId}
+        UNION
+        SELECT vg.educational_teacher_id_ FROM vip_group vg
+        LEFT JOIN course_schedule_student_payment cssp ON vg.id_ = cssp.music_group_id_
+        WHERE cssp.group_type_ = 'VIP' AND cssp.user_id_ = #{studentId}
+        UNION
+        SELECT pg.educational_teacher_id_ FROM practice_group pg
+        LEFT JOIN course_schedule_student_payment cssp ON pg.id_ = cssp.music_group_id_
+        WHERE cssp.group_type_ = 'PRACTICE' AND cssp.user_id_ = #{studentId}) sid
+    </select>
 </mapper>

+ 8 - 7
mec-web/src/main/java/com/ym/mec/web/controller/education/EduRepairController.java

@@ -5,10 +5,7 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
-import com.ym.mec.biz.dal.entity.Employee;
-import com.ym.mec.biz.dal.entity.StudentGoodsSell;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.StudentRepair;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
@@ -21,13 +18,13 @@ import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
-
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -40,7 +37,6 @@ public class EduRepairController extends BaseController {
 
     @Autowired
     private SysUserFeignService sysUserFeignService;
-
     @Autowired
     private EmployeeDao employeeDao;
     @Autowired
@@ -63,7 +59,6 @@ public class EduRepairController extends BaseController {
         if (sysUser == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-
         Employee employee = employeeDao.get(sysUser.getId());
         if (Objects.isNull(employee)) {
             return failed(HttpStatus.NOT_ACCEPTABLE, "员工信息不存在");
@@ -73,6 +68,12 @@ public class EduRepairController extends BaseController {
         return succeed(studentRepairService.getStudents(queryInfo));
     }
 
+    @ApiOperation("获取商品购买教务老师关联的学员列表")
+    @GetMapping(value = "/queryEduStudents")
+    public HttpResponseResult<PageInfo<BasicUserDto>> queryEduStudents(QueryInfo queryInfo) {
+        return succeed(studentRepairService.queryEduStudents(queryInfo));
+    }
+
     @ApiOperation("添加商品销售订单")
     @PostMapping(value = "/addGoodsSellOrder")
     public HttpResponseResult addGoodsSellOrder(@RequestBody StudentGoodsSell studentGoodsSell) throws Exception {