Forráskód Böngészése

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan 4 éve
szülő
commit
b0c8fd65eb

+ 133 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SubjectChange.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
 import com.ym.mec.biz.dal.enums.SubjectChangeStatusEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -12,6 +13,9 @@ public class SubjectChange {
     @ApiModelProperty(value="")
     private Integer id;
 
+    @ApiModelProperty(value="合作单位id")
+    private Integer cooperationOrganId;
+
     @ApiModelProperty(value="学生id")
     private Integer studentId;
 
@@ -27,7 +31,10 @@ public class SubjectChange {
     * 原始课程费用
     */
     @ApiModelProperty(value="原始课程费用")
-    private BigDecimal originalCourseFee;
+    private BigDecimal originalCourseFee = BigDecimal.ZERO;
+
+    @ApiModelProperty(value="乐器购买方式")
+    private KitGroupPurchaseTypeEnum kitGroupPurchaseType;
 
     /**
     * 原始乐器编号
@@ -41,7 +48,7 @@ public class SubjectChange {
     * 原始乐器价格
     */
     @ApiModelProperty(value="原始乐器价格")
-    private BigDecimal originalMusicalPrice;
+    private BigDecimal originalMusicalPrice = BigDecimal.ZERO;
 
     /**
     * 辅件ids
@@ -55,13 +62,13 @@ public class SubjectChange {
     * 辅件价格
     */
     @ApiModelProperty(value="辅件价格")
-    private BigDecimal originalAccessoriesPrice;
+    private BigDecimal originalAccessoriesPrice = BigDecimal.ZERO;
 
     /**
     * 替换课程价格
     */
     @ApiModelProperty(value="替换课程价格")
-    private BigDecimal changeCourseFee;
+    private BigDecimal changeCourseFee = BigDecimal.ZERO;
 
     /**
     * 替换乐器
@@ -76,7 +83,7 @@ public class SubjectChange {
     * 替换乐器价格
     */
     @ApiModelProperty(value="替换乐器价格")
-    private BigDecimal changeMusicalPrice;
+    private BigDecimal changeMusicalPrice = BigDecimal.ZERO;
 
     /**
     * 替换辅件
@@ -90,7 +97,7 @@ public class SubjectChange {
     * 替换辅件价格
     */
     @ApiModelProperty(value="替换辅件价格")
-    private BigDecimal changeAccessoriesPrice;
+    private BigDecimal changeAccessoriesPrice = BigDecimal.ZERO;
 
     /**
     * 乐器辅件差额
@@ -105,12 +112,46 @@ public class SubjectChange {
     private BigDecimal courseMargin;
 
     /**
+     * 成本差额
+     */
+    @ApiModelProperty(value="成本差额")
+    private BigDecimal costMargin;
+
+
+    /**
+     * 销售金额(计入销售的金额)
+     */
+    private BigDecimal sellAmount;
+
+    /**
     * 状态
     */
     @ApiModelProperty(value="状态")
     private SubjectChangeStatusEnum status;
 
     /**
+     * 订单id
+     */
+    private Integer orderId;
+
+    /**
+     * 订单编号
+     */
+    private String orderNo;
+
+    /**
+     * 订单流水号
+     */
+    private String transNo;
+
+    /**
+     * 销售时间
+     */
+    @ApiModelProperty(value="销售时间")
+    private Date sellTime;
+
+
+    /**
     * 创建时间
     */
     @ApiModelProperty(value="创建时间")
@@ -124,6 +165,12 @@ public class SubjectChange {
 
     private Integer version;
 
+    @ApiModelProperty(value="原始成本")
+    private BigDecimal originalCost = BigDecimal.ZERO;
+
+    @ApiModelProperty(value="更改后成本")
+    private BigDecimal changeCost = BigDecimal.ZERO;
+
     public Integer getId() {
         return id;
     }
@@ -323,4 +370,84 @@ public class SubjectChange {
     public void setOrganId(Integer organId) {
         this.organId = organId;
     }
+
+    public Integer getCooperationOrganId() {
+        return cooperationOrganId;
+    }
+
+    public void setCooperationOrganId(Integer cooperationOrganId) {
+        this.cooperationOrganId = cooperationOrganId;
+    }
+
+    public BigDecimal getCostMargin() {
+        return costMargin;
+    }
+
+    public void setCostMargin(BigDecimal costMargin) {
+        this.costMargin = costMargin;
+    }
+
+    public BigDecimal getSellAmount() {
+        return sellAmount;
+    }
+
+    public void setSellAmount(BigDecimal sellAmount) {
+        this.sellAmount = sellAmount;
+    }
+
+    public Date getSellTime() {
+        return sellTime;
+    }
+
+    public void setSellTime(Date sellTime) {
+        this.sellTime = sellTime;
+    }
+
+    public Integer getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Integer orderId) {
+        this.orderId = orderId;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public String getTransNo() {
+        return transNo;
+    }
+
+    public void setTransNo(String transNo) {
+        this.transNo = transNo;
+    }
+
+    public KitGroupPurchaseTypeEnum getKitGroupPurchaseType() {
+        return kitGroupPurchaseType;
+    }
+
+    public void setKitGroupPurchaseType(KitGroupPurchaseTypeEnum kitGroupPurchaseType) {
+        this.kitGroupPurchaseType = kitGroupPurchaseType;
+    }
+
+    public BigDecimal getOriginalCost() {
+        return originalCost;
+    }
+
+    public void setOriginalCost(BigDecimal originalCost) {
+        this.originalCost = originalCost;
+    }
+
+    public BigDecimal getChangeCost() {
+        return changeCost;
+    }
+
+    public void setChangeCost(BigDecimal changeCost) {
+        this.changeCost = changeCost;
+    }
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SubjectChangeService.java

@@ -19,4 +19,11 @@ public interface SubjectChangeService extends BaseService<Integer, SubjectChange
      * @return
      */
     Map payChange(Integer id, BigDecimal amount, Boolean isUseBalancePayment) throws Exception;
+
+    /**
+     * 添加声部更换
+     * @param subjectChange
+     * @return
+     */
+    SubjectChange addChange(SubjectChange subjectChange);
 }

+ 9 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java

@@ -62,6 +62,7 @@ import com.ym.mec.util.freemarker.FreemarkerTemplateEngine;
 import com.ym.mec.util.money.MoneyUtil;
 import com.ym.mec.util.pdf.PDFUtil;
 import org.springframework.transaction.annotation.Isolation;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
@@ -945,16 +946,21 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 	public boolean transferProduceContract(Integer userId,String musicGroupId) {
 		SysUser user = studentDao.lockUserReturnInfo(userId);
 
+		if (user == null) {
+			return false;
+		}
+
 		List<SysUserContracts> userContracts = sysUserContractsService.getUserContractWithType(userId, ContractType.PRODUCT);
 		if(!CollectionUtils.isEmpty(userContracts)){
 			return true;
 		}
 
+		if(StringUtils.isBlank(user.getRealName())||StringUtils.isBlank(user.getIdCardNo())){
+			return false;
+		}
+
 		SysUserTsign sysUserTsign = sysUserTsignService.get(userId);
 		if (sysUserTsign == null) {
-			if (user == null) {
-				throw new BizException("用户信息查询失败");
-			}
 			sysUserTsign = register(userId, user.getRealName(), user.getIdCardNo(), user.getPhone());
 		}
 		Date date = new Date();

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

@@ -78,9 +78,7 @@ public class SporadicChargeInfoImpl extends BaseServiceImpl<Integer, SporadicCha
         map.put(userId, userId.toString());
         if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
             try {
-                if(Objects.isNull(info.getUserId())){
-                    contractService.transferProduceContract(userId, null);
-                }
+                contractService.transferProduceContract(userId, null);
             } catch (Exception e) {
                 logger.error("产品协议生成失败", e);
             }

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

@@ -1137,6 +1137,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             if (studentLastChange.getChangeMusical() != null) {
                 StudentPaymentOrderDetail musical = new StudentPaymentOrderDetail();
                 musical.setType(OrderDetailTypeEnum.MUSICAL);
+                musical.setKitGroupPurchaseType(studentLastChange.getKitGroupPurchaseType());
                 musical.setPrice(studentLastChange.getChangeMusicalPrice());
                 musical.setGoodsList(goodsDao.findGoodsByIds(studentLastChange.getChangeMusical().toString()));
                 details.add(musical);

+ 4 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -660,12 +660,10 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         map.put(userId, userId.toString());
 
         if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
-            if(repairInfo.getType()==1){
-                try {
-                    contractService.transferProduceContract(userId, null);
-                } catch (Exception e) {
-                    logger.error("产品协议生成失败", e);
-                }
+            try {
+                contractService.transferProduceContract(userId, null);
+            } catch (Exception e) {
+                logger.error("产品协议生成失败", e);
             }
 
             repairInfo.setPayStatus(2);

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectChangeServiceImpl.java

@@ -158,4 +158,30 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         studentPaymentOrderService.update(studentPaymentOrder);
         return payMap;
     }
+
+    @Override
+    public SubjectChange addChange(SubjectChange subjectChange) {
+        Date nowDate = new Date();
+        subjectChange.setCourseMargin(subjectChange.getChangeCourseFee().subtract(subjectChange.getOriginalCourseFee()));
+        BigDecimal goodsMargin = subjectChange.getChangeMusicalPrice().add(subjectChange.getChangeAccessoriesPrice())
+                .subtract(subjectChange.getOriginalMusicalPrice()).subtract(subjectChange.getOriginalAccessoriesPrice());
+        subjectChange.setGoodsMargin(goodsMargin);
+        subjectChange.setCostMargin(subjectChange.getChangeCost().subtract(subjectChange.getOriginalCost()));
+        //差价 <= 0
+        if (subjectChange.getGoodsMargin().add(subjectChange.getCourseMargin()).compareTo(BigDecimal.ZERO) <= 0) {
+            subjectChange.setStatus(SubjectChangeStatusEnum.SUCCESSED);
+            subjectChange.setSellAmount(BigDecimal.ZERO);
+            subjectChange.setSellTime(nowDate);
+        }
+        //差价小于0退到余额
+        if (subjectChange.getGoodsMargin().add(subjectChange.getCourseMargin()).compareTo(BigDecimal.ZERO) < 0) {
+            subjectChange.setStatus(SubjectChangeStatusEnum.SUCCESSED);
+            subjectChange.setSellAmount(BigDecimal.ZERO);
+            subjectChange.setSellTime(nowDate);
+        }
+        subjectChange.setCreateTime(nowDate);
+        subjectChange.setUpdateTime(nowDate);
+        subjectChangeDao.insert(subjectChange);
+        return subjectChange;
+    }
 }

+ 35 - 15
mec-biz/src/main/resources/config/mybatis/SubjectChangeMapper.xml

@@ -8,12 +8,14 @@
         <result column="student_id_" property="studentId"/>
         <result column="studentName" property="studentName"/>
         <result column="organ_id_" property="organId"/>
+        <result column="cooperation_organ_id_" property="cooperationOrganId"/>
         <result column="music_group_id_" property="musicGroupId"/>
         <result column="original_course_fee_" property="originalCourseFee"/>
         <result column="original_musical_" property="originalMusical"/>
         <result column="original_musical_price_" property="originalMusicalPrice"/>
         <result column="original_accessories_" property="originalAccessories"/>
         <result column="original_accessories_price_" property="originalAccessoriesPrice"/>
+        <result column="kit_group_purchase_type_" property="kitGroupPurchaseType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="change_course_fee_" property="changeCourseFee"/>
         <result column="change_musical_" property="changeMusical"/>
         <result column="change_musical_price_" property="changeMusicalPrice"/>
@@ -21,6 +23,11 @@
         <result column="change_accessories_price_" property="changeAccessoriesPrice"/>
         <result column="goods_margin_" property="goodsMargin"/>
         <result column="course_margin_" property="courseMargin"/>
+        <result column="cost_margin_" property="costMargin"/>
+        <result column="sell_amount_" property="sellAmount"/>
+        <result column="order_id_" property="orderId"/>
+        <result column="order_no_" property="orderNo"/>
+        <result column="trans_no_" property="transNo"/>
         <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time" property="updateTime"/>
@@ -28,11 +35,11 @@
     </resultMap>
     <sql id="Base_Column_List">
         <!--@mbg.generated-->
-        id_,student_id_,organ_id_, music_group_id_,original_course_fee_, original_musical_, original_musical_price_,
+        id_,student_id_,organ_id_,cooperation_organ_id_, music_group_id_,original_course_fee_, original_musical_, original_musical_price_,
         original_accessories_,
-        original_accessories_price_, change_course_fee_, change_musical_, change_musical_price_,
-        change_accessories_, change_accessories_price_, goods_margin_, course_margin_, status_,
-        create_time_, update_time,version_
+        original_accessories_price_,kit_group_purchase_type_, change_course_fee_, change_musical_, change_musical_price_,
+        change_accessories_, change_accessories_price_, goods_margin_, course_margin_,cost_margin_,sell_amount_,order_id_,order_no_,trans_no_, status_,
+        sell_time_,create_time_, update_time,version_
     </sql>
     <select id="get" parameterType="java.lang.Integer" resultMap="SubjectChange">
         <!--@mbg.generated-->
@@ -49,17 +56,15 @@
     <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.SubjectChange"
             useGeneratedKeys="true">
         <!--@mbg.generated-->
-        insert into subject_change (student_id_,organ_id_,music_group_id_,original_course_fee_, original_musical_,
-        original_musical_price_,
-        original_accessories_,
-        original_accessories_price_, change_course_fee_, change_musical_, change_musical_price_,
-        change_accessories_, change_accessories_price_, goods_margin_, course_margin_,
-        status_, create_time_, update_time,version_)
-        values (#{studentId},#{organId},#{musicGroupId},#{originalCourseFee}, #{originalMusical}, #{originalMusicalPrice},
-        #{originalAccessories},
-        #{originalAccessoriesPrice}, #{changeCourseFee}, #{changeMusical}, #{changeMusicalPrice},
-        #{changeAccessories}, #{changeAccessoriesPrice}, #{goodsMargin}, #{courseMargin},
-        #{status}, #{createTime}, #{updateTime},0)
+        insert into subject_change (student_id_,organ_id_,cooperation_organ_id_,music_group_id_,original_course_fee_, original_musical_,
+        original_musical_price_,original_accessories_,original_accessories_price_,kit_group_purchase_type_,
+        change_course_fee_, change_musical_, change_musical_price_,
+        change_accessories_, change_accessories_price_, goods_margin_, course_margin_,cost_margin_,sell_amount_,order_id_,
+        order_no_,trans_no_,status_,sell_time_, create_time_, update_time,version_)
+        values (#{studentId},#{organId},#{cooperationOrganId},#{musicGroupId},#{originalCourseFee}, #{originalMusical}, #{originalMusicalPrice},
+        #{originalAccessories}, #{originalAccessoriesPrice},#{kitGroupPurchaseType},#{changeCourseFee}, #{changeMusical},
+        #{changeMusicalPrice}, #{changeAccessories}, #{changeAccessoriesPrice}, #{goodsMargin}, #{courseMargin},#{costMargin}
+        #{sellAmount},#{orderId},#{orderNo},#{transNo},#{status},#{sellTime}, #{createTime}, #{updateTime},0)
     </insert>
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.SubjectChange">
         <!--@mbg.generated-->
@@ -110,9 +115,24 @@
             <if test="courseMargin != null">
                 course_margin_ = #{courseMargin},
             </if>
+            <if test="costMargin != null">
+                cost_margin_ = #{costMargin},
+            </if>
+            <if test="orderId != null">
+                order_id_ = #{orderId},
+            </if>
+            <if test="orderNo != null">
+                order_no_ = #{orderNo},
+            </if>
+            <if test="transNo != null">
+                trans_no_ = #{transNo},
+            </if>
             <if test="status != null">
                 status_ = #{status},
             </if>
+            <if test="sellTime != null">
+                sell_time_ = #{sellTime},
+            </if>
             <if test="createTime != null">
                 create_time_ = #{createTime},
             </if>

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/SubjectChangeController.java

@@ -60,6 +60,6 @@ public class SubjectChangeController extends BaseController {
     @PostMapping("/add")
     @PreAuthorize("@pcs.hasPermissions('subjectChange/add')")
     public Object add(SubjectChange subjectChange) throws Exception {
-        return succeed(subjectChangeService.insert(subjectChange));
+        return succeed(subjectChangeService.addChange(subjectChange));
     }
 }

+ 42 - 0
mec-web/src/main/java/com/ym/mec/web/controller/education/EduContractsController.java

@@ -0,0 +1,42 @@
+package com.ym.mec.web.controller.education;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.service.ContractService;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Objects;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.09.24
+ */
+@RequestMapping("eduContracts")
+@Api(tags = "协议服务")
+@RestController
+public class EduContractsController extends BaseController {
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private ContractService contractService;
+
+    @ApiOperation("查询产品协议")
+    @GetMapping(value = "queryProduceContract")
+    public Object queryProduceContract(Integer userId, String musicGroupId) {
+        if(Objects.isNull(userId)){
+            SysUser sysUser = sysUserFeignService.queryUserInfo();
+            if (sysUser == null) {
+                return failed("获取用户信息失败");
+            }
+            userId = sysUser.getId();
+        }
+        return succeed(contractService.queryProductContract(userId,musicGroupId));
+    }
+}