浏览代码

fix musicGroup reg

周箭河 5 年之前
父节点
当前提交
df212464e0

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

@@ -11,6 +11,7 @@ public interface MusicGroupSubjectGoodsGroupDao extends BaseDAO<Long, MusicGroup
 
     /**
      * 批量保存
+     *
      * @param musicGroupSubjectGoodsGroups
      * @return
      */
@@ -18,9 +19,17 @@ public interface MusicGroupSubjectGoodsGroupDao extends BaseDAO<Long, MusicGroup
 
     /**
      * 获取建团申请,声部设置已确认数据
+     *
      * @param musicGroupId
      * @param subId
      * @return
      */
     List<MusicGroupSubjectGoodsGroup> findGoodsGroup(@Param("musicGroupId") Integer musicGroupId, @Param("subId") Integer subId);
+
+    /**
+     * 根据ids获取打包商品
+     *
+     * @return
+     */
+    List<MusicGroupSubjectGoodsGroup> findGoodsGroupByIds(@Param("ids") String ids);
 }

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
 import com.ym.mec.biz.dal.dto.StudentFeeDto;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
@@ -67,8 +68,25 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 根据乐团id和user_id 更新
+     *
      * @param studentRegistration
      * @return
      */
     Integer updateByUserIdAndMusicGroupId(@Param("studentRegistration") StudentRegistration studentRegistration);
+
+    /**
+     * 查询手机是否已注册
+     *
+     * @param musicGroupId
+     * @param parentsPhone
+     * @return
+     */
+    StudentRegistration getByPhoneAndMusicGroupId(@Param("musicGroupId") Integer musicGroupId, @Param("parentsPhone") String parentsPhone);
+
+    /**
+     * 查询用户是否存在
+     * @param phone
+     * @return
+     */
+    Map getSysUserByPhone(String phone);
 }

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterPayDto.java

@@ -19,11 +19,11 @@ public class RegisterPayDto {
         this.registerId = registerId;
     }
 
-    public String getGoodsGroupId() {
+    public String getGoodsGroupIds() {
         return goodsGroupIds;
     }
 
-    public void setGoodsGroupId(String goodsGroupIds) {
+    public void setGoodsGroupIds(String goodsGroupIds) {
         this.goodsGroupIds = goodsGroupIds;
     }
 

+ 18 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupSubjectGoodsGroup.java

@@ -41,7 +41,11 @@ public class MusicGroupSubjectGoodsGroup {
 	private List<String> goodsName;
 
 	private List<Goods> goodsList;
-	
+
+	//团购减免课程费用
+	private BigDecimal remissionCourseFee;
+
+
 	/**  */
 	private java.util.Date createTime;
 	
@@ -132,11 +136,6 @@ public class MusicGroupSubjectGoodsGroup {
 		this.price = price;
 	}
 
-	@Override
-	public String toString() {
-		return ToStringBuilder.reflectionToString(this);
-	}
-
 	public List<Goods> getGoodsList() {
 		return goodsList;
 	}
@@ -144,4 +143,17 @@ public class MusicGroupSubjectGoodsGroup {
 	public void setGoodsList(List<Goods> goodsList) {
 		this.goodsList = goodsList;
 	}
+
+	public BigDecimal getRemissionCourseFee() {
+		return remissionCourseFee;
+	}
+
+	public void setRemissionCourseFee(BigDecimal remissionCourseFee) {
+		this.remissionCourseFee = remissionCourseFee;
+	}
+
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupSubjectGoodsGroupService.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
 import com.ym.mec.common.service.BaseService;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -15,4 +16,12 @@ public interface MusicGroupSubjectGoodsGroupService extends BaseService<Long, Mu
      */
     List<MusicGroupSubjectGoodsGroup> findGoodsGroup(Integer musicGroupId, Integer subId);
 
+
+    /**
+     * 根据ids获取打包商品
+     *
+     * @return
+     */
+    List<MusicGroupSubjectGoodsGroup> findGoodsGroupByIds(String ids);
+
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java

@@ -75,4 +75,12 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      */
     StudentRegistration addStudent(StudentRegistration studentRegistration);
 
+    /**
+     * 查询手机是否已注册
+     * @param musicGroupId
+     * @param parentsPhone
+     * @return
+     */
+    StudentRegistration getByPhoneAndMusicGroupId(Integer musicGroupId,  String parentsPhone);
+
 }

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectGoodsGroupServiceImpl.java

@@ -26,4 +26,10 @@ public class MusicGroupSubjectGoodsGroupServiceImpl extends BaseServiceImpl<Long
     public List<MusicGroupSubjectGoodsGroup> findGoodsGroup(Integer musicGroupId, Integer subId) {
         return musicGroupSubjectGoodsGroupDao.findGoodsGroup(musicGroupId, subId);
     }
+
+    @Override
+    public List<MusicGroupSubjectGoodsGroup> findGoodsGroupByIds(String ids) {
+
+	    return musicGroupSubjectGoodsGroupDao.findGoodsGroupByIds(ids);
+    }
 }

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

@@ -8,6 +8,8 @@ import java.util.Map;
 
 import javax.annotation.Resource;
 
+import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.entity.Teacher;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -34,7 +36,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Resource
     private StudentRegistrationDao studentRegistrationDao;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private TeacherDao teacherDao;
 
     @Override
     public BaseDAO<Long, StudentRegistration> getDAO() {
@@ -102,9 +104,10 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Transactional(rollbackFor = Exception.class)
     public StudentRegistration addStudent(StudentRegistration studentRegistration) {
         Date date = new Date();
-        SysUser sysUser = sysUserFeignService.getUserByMobile(studentRegistration.getParentsPhone());
-        if (sysUser == null) {
-            sysUser = new SysUser();
+        int userId=0;
+        Map hasUser = studentRegistrationDao.getSysUserByPhone(studentRegistration.getParentsPhone());
+        if (hasUser == null) {
+           SysUser sysUser = new SysUser();
             sysUser.setPhone(studentRegistration.getParentsPhone());
             sysUser.setCreateTime(date);
             sysUser.setUpdateTime(date);
@@ -115,10 +118,18 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             sysUser.setOrganId(studentRegistration.getOrganId());
             sysUser.setRealName(studentRegistration.getName());
             sysUser.setIdCardNo(studentRegistration.getIdCardNo());
-            sysUserFeignService.addUser(sysUser);
+            teacherDao.addSysUser(sysUser);
+            userId = sysUser.getId();
+        }else {
+            int id_ = (int) hasUser.get("id_");
         }
-        studentRegistration.setUserId(sysUser.getId());
+        studentRegistration.setUserId(userId);
         studentRegistrationDao.insert(studentRegistration);
         return studentRegistration;
     }
+
+    @Override
+    public StudentRegistration getByPhoneAndMusicGroupId(Integer musicGroupId, String parentsPhone) {
+        return studentRegistrationDao.getByPhoneAndMusicGroupId(musicGroupId, parentsPhone);
+    }
 }

+ 11 - 3
mec-biz/src/main/resources/config/mybatis/MusicGroupSubjectGoodsGroupMapper.xml

@@ -14,6 +14,7 @@
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
         <result column="price_" property="price"/>
+        <result column="remission_course_fee_" property="remissionCourseFee"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -95,13 +96,20 @@
         FROM music_group_subject_goods_group
     </select>
 
-    <resultMap type="com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup" extends="MusicGroupSubjectGoodsGroup" id="findGoodsGroupMap">
-        <collection property="goodsList" resultMap="com.ym.mec.biz.dal.dao.GoodsDao.Goods" columnPrefix="g_" />
+    <resultMap type="com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup" extends="MusicGroupSubjectGoodsGroup"
+               id="findGoodsGroupMap">
+        <collection property="goodsList" resultMap="com.ym.mec.biz.dal.dao.GoodsDao.Goods" columnPrefix="g_"/>
     </resultMap>
     <select id="findGoodsGroup" resultMap="findGoodsGroupMap">
-        SELECT mgs.*, g.id_ g_id_,g.name_ g_name_,g.market_price_  g_market_price_,g.complement_goods_id_list_ g_complement_goods_id_list_
+        SELECT mgs.*, g.id_ g_id_,g.name_ g_name_,g.market_price_ g_market_price_,g.complement_goods_id_list_
+        g_complement_goods_id_list_
         FROM music_group_subject_goods_group mgs,goods g
         WHERE FIND_IN_SET (g.id_ ,mgs.goods_id_list_)
         AND mgs.music_group_id_ = #{musicGroupId} AND mgs.subject_id_ = #{subId}
     </select>
+
+    <!-- 根据ids获取对应分组商品 -->
+    <select id="findGoodsGroupByIds" resultMap="MusicGroupSubjectGoodsGroup">
+        SELECT * FROM music_group_subject_goods_group WHERE FIND_IN_SET(id_,#{ids})
+    </select>
 </mapper>

+ 13 - 11
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -28,8 +28,6 @@
         <result column="parents_company_" property="parentsCompany"/>
         <result column="payment_status_" property="paymentStatus"
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-        <result column="last_payment_date_" property="lastPaymentDate"/>
-        <result column="next_payment_date_" property="nextPaymentDate"/>
     </resultMap>
 
     <!-- 根据主键查询一条记录 -->
@@ -49,9 +47,9 @@
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.StudentRegistration" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
         INSERT INTO student_registration
-        (parents_phone_,id_,user_id_,name_,music_group_id_,current_grade_,current_class_,subject_id_,is_allow_adjust_,kit_purchase_method_,remark_,create_time_,update_time_,parents_name_,parents_company_,payment_status_,last_payment_date_,next_payment_date_,actual_subject_id_)
+        (parents_phone_,id_,user_id_,name_,music_group_id_,current_grade_,current_class_,subject_id_,is_allow_adjust_,kit_purchase_method_,remark_,create_time_,update_time_,parents_name_,parents_company_,payment_status_,actual_subject_id_)
         VALUES(#{parentsPhone},#{id},#{userId},#{name},#{musicGroupId},#{currentGrade},#{currentClass},#{subjectId},#{isAllowAdjust,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{kitPurchaseMethod,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-        #{remark},now(),now(),#{parentsName},#{parentsCompany},#{paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{lastPaymentDate},#{nextPaymentDate},#{subjectId})
+        #{remark},now(),now(),#{parentsName},#{parentsCompany},#{paymentStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{subjectId})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
@@ -64,15 +62,9 @@
             <if test="subjectId != null">
                 subject_id_ = #{subjectId},
             </if>
-            <if test="nextPaymentDate != null">
-                next_payment_date_ = #{nextPaymentDate},
-            </if>
             <if test="currentGrade != null">
                 current_grade_ = #{currentGrade},
             </if>
-            <if test="lastPaymentDate != null">
-                last_payment_date_ = #{lastPaymentDate},
-            </if>
             <if test="currentClass != null">
                 current_class_ = #{currentClass},
             </if>
@@ -214,6 +206,16 @@
     </select>
 
     <update id="updateByUserIdAndMusicGroupId" parameterType="com.ym.mec.biz.dal.entity.StudentRegistration">
-        UPDATE student_registration SET class_group_id_ = #{classGroupId} WHERE user_id_ = #{userId} AND music_group_id_ = #{musicGroupId}
+        UPDATE student_registration SET class_group_id_ = #{classGroupId} WHERE user_id_ = #{userId} AND music_group_id_
+        = #{musicGroupId}
     </update>
+
+    <!-- 根据乐团编号和手机号查询注册乐团注册信息-->
+    <select id="getByPhoneAndMusicGroupId" resultMap="StudentRegistration">
+        SELECT * FROM student_registration WHERE music_group_id_=#{musicGroupId} AND parents_phone_ = #{parentsPhone}
+    </select>
+
+    <select id="getSysUserByPhone" resultType="map">
+        SELECT * FROM sys_user WHERE phone_ = #{phone}
+    </select>
 </mapper>

+ 62 - 4
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -4,8 +4,13 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.MusicGroupSubjectGoodsAndInfoDto;
 import com.ym.mec.biz.dal.dto.RegisterPayDto;
-import com.ym.mec.biz.service.MusicGroupService;
-import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
+import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.enums.GoodsType;
+import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
@@ -14,12 +19,16 @@ import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
 import javax.xml.soap.Name;
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.LinkedHashMap;
+import java.util.List;
 import java.util.Map;
 
 @RequestMapping("musicGroup")
@@ -27,12 +36,18 @@ import java.util.Map;
 @RestController
 public class MusicGroupController extends BaseController {
 
-    @Autowired
+    @Resource
     private SysUserFeignService sysUserFeignService;
     @Autowired
     private MusicGroupService musicGroupService;
     @Autowired
     private MusicGroupSubjectPlanService musicGroupSubjectPlanService;
+    @Autowired
+    private StudentRegistrationService studentRegistrationService;
+    @Autowired
+    private MusicGroupSubjectGoodsGroupService musicGroupSubjectGoodsGroupService;
+    @Autowired
+    private GoodsService goodsService;
 
     @ApiOperation("获取学生所在乐团列表")
     @GetMapping(value = "/queryUserMusicGroups")
@@ -78,7 +93,50 @@ public class MusicGroupController extends BaseController {
     @ApiOperation(value = "乐团报名支付")
     @GetMapping("/pay")
     @ApiImplicitParams({@ApiImplicitParam(name = "registerPayDto", value = "支付信息", required = true, dataType = "Integer")})
-    public HttpResponseResult pay(RegisterPayDto registerPayDto) {
+    public HttpResponseResult pay(@RequestBody RegisterPayDto registerPayDto) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        StudentRegistration studentRegistration = studentRegistrationService.get(registerPayDto.getRegisterId().longValue());
+        if (!studentRegistration.getUserId().equals(sysUser.getId())) {
+            return failed("报名信息有误,请核查");
+        }
+
+        BigDecimal amount = registerPayDto.getAmount();
+
+        BigDecimal orderAmount = new BigDecimal("0");
+
+        //获取课程价格
+        MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId());
+        orderAmount.add(musicOneSubjectClassPlan.getFee());
+
+
+        //乐器及打包辅件
+        if (registerPayDto.getGoodsGroupIds() != null) {
+            List<MusicGroupSubjectGoodsGroup> goodsGroups = musicGroupSubjectGoodsGroupService.findGoodsGroupByIds(registerPayDto.getGoodsGroupIds());
+            goodsGroups.forEach(goodsGroup -> {
+                //辅件价格
+                if (goodsGroup.getType().equals(GoodsType.ACCESSORIES)) {
+                    orderAmount.add(goodsGroup.getPrice());
+                    return;
+                }
+                if (musicOneSubjectClassPlan.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {//租赁
+                    orderAmount.add(musicOneSubjectClassPlan.getDepositFee());
+                } else if (musicOneSubjectClassPlan.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.GROUP)) {//团购
+                    orderAmount.add(goodsGroup.getPrice()).subtract(goodsGroup.getRemissionCourseFee());
+                }
+            });
+        }
+
+        //单独辅件
+        if (registerPayDto.getGoodsIds() != null) {
+            List<Goods> goodsList = goodsService.findGoodsByIds(registerPayDto.getGoodsIds());
+            goodsList.forEach(goods -> {
+                orderAmount.add(goods.getGroupPurchasePrice());
+            });
+        }
+        if (amount.compareTo(orderAmount) != 0) {
+            return failed("商品价格不符");
+        }
+
         Map<String, Object> rqMap = new LinkedHashMap<String, Object>();
         rqMap.put("merNo", "07654478");
         rqMap.put("version", "v1");

+ 5 - 1
mec-student/src/main/java/com/ym/mec/student/controller/RegisterController.java

@@ -42,8 +42,12 @@ public class RegisterController extends BaseController {
 
     @ApiOperation(value = "新增学生报名信息")
     @PostMapping("/add")
-    public Object add(StudentRegistration studentRegistration) {
+    public Object add(@RequestBody StudentRegistration studentRegistration) {
         MusicGroup musicGroup = musicGroupService.get(studentRegistration.getMusicGroupId().toString());
+        StudentRegistration register = studentRegistrationService.getByPhoneAndMusicGroupId(studentRegistration.getMusicGroupId(), studentRegistration.getParentsPhone());
+        if (register != null) {
+            return failed("该乐团您已注册,请勿重复注册");
+        }
         studentRegistration.setOrganId(musicGroup.getOrganId());
         return succeed(studentRegistrationService.addStudent(studentRegistration));
     }

+ 43 - 2
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yqpay/YqPayUtil.java

@@ -2,8 +2,8 @@ package com.ym.mec.thirdparty.yqpay;
 
 import com.alibaba.fastjson.JSON;
 
-import java.util.LinkedHashMap;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.util.*;
 
 public class YqPayUtil {
 
@@ -46,5 +46,46 @@ public class YqPayUtil {
             return false;
         }
     }
+//
+//    public Map getPayMap() throws Exception {
+////    	order.setAmount(new BigDecimal(2));
+//
+//        String notifyUrl = this.notifyUrl; //异步通知地址
+//        String returnUrl = this.returnHost + "/#/payment?userId=" + order.getUserId();//支付后返回页面
+//
+//        if (school != null) {
+//            returnUrl = this.returnHost + "/#/login?schoolId=" + school.getSchoolId() + "&cityId=" + school.getCityId();//支付后返回页面
+//        }
+//        String payUrl = "https://qyfapi.95epay.com/api/api/hPay/toPayHtml";//支付跳转页
+//        String payChannels = "{\"weChatPay\":true,\"weChatPayMobile\":false,\"aliPay\":true,\"fastpayXy\":true,\"aliPayMobile\":false,\"balancePay\":false}";//支付方式配置
+//
+//        List<Map> tempRoutingList = new ArrayList();
+//        Map<String, Object> routingList = new HashMap<>();
+//        routingList.put("routingMerNo", routingAccount.getSellerNo());//分佣账户
+////      routingList.put("routingFee", order.getAmount()); //分佣金额
+//        routingList.put("routingFee", order.getAmount().subtract((order.getAmount().multiply(new BigDecimal(0.28)).divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_UP))); //分佣金额
+//        tempRoutingList.add(routingList);
+//
+//        /*订单信息*/
+//        String orderBody = "大雅乐盟培训课程";
+//        /*订单标题*/
+//        String orderSubject = "培训订单";
+//
+//        Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
+//        resultMap.put("sellerNo", "0021677"); //收款商户号
+//        resultMap.put("payChannels", payChannels); //支付方式
+//        resultMap.put("orderBody", orderBody); //订单信息
+//        resultMap.put("payAmount", order.getAmount()); //支付金额
+//        resultMap.put("apiPayType", "1"); //*API支付类型1-即时支付,2-担保支付,3-预授权支付*/
+//        resultMap.put("tradeType", "0"); //*交易类型1—充值,0—收款*
+//        resultMap.put("merMerOrderNo", order.getOrderNo()); //商户订单号
+//        resultMap.put("orderSubject", orderSubject); //订单标题
+//        resultMap.put("returnUrl", returnUrl); //前台页面地址
+//        resultMap.put("tempRoutingList", JSON.toJSONString(tempRoutingList));//分账设置
+//        Map rqMap = new YqPayUtil(notifyUrl, resultMap).getRequestMap();
+//        rqMap.put("host", payUrl);
+//        return rqMap;
+//    }
+
 
 }

+ 4 - 0
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/yqpay/payInfo.java

@@ -0,0 +1,4 @@
+package com.ym.mec.thirdparty.yqpay;
+
+public class payInfo {
+}