浏览代码

商城分润

liujunchi 2 年之前
父节点
当前提交
1320615175
共有 23 个文件被更改,包括 552 次插入28 次删除
  1. 17 1
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java
  2. 7 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/MallPortalFeignService.java
  3. 11 0
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java
  4. 114 0
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/entity/MallOrderItemDto.java
  5. 40 5
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderReturnApplyServiceImpl.java
  6. 10 0
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsCartItem.java
  7. 23 0
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrderItem.java
  8. 18 3
      cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/OmsCartItemMapper.xml
  9. 33 3
      cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/OmsOrderItemMapper.xml
  10. 5 0
      cooleshow-mall/mall-portal/pom.xml
  11. 8 1
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsPortalOrderController.java
  12. 7 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderService.java
  13. 3 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsCartItemServiceImpl.java
  14. 83 2
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java
  15. 11 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/task/OrderTimeOutCancelTask.java
  16. 22 0
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/MallAutoReceiveTask.java
  17. 27 3
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserAccountController.java
  18. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AccountBizTypeEnum.java
  19. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/GoodTypeEnum.java
  20. 15 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserAccountService.java
  21. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderService.java
  22. 84 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserAccountServiceImpl.java
  23. 6 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java

+ 17 - 1
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java

@@ -1,13 +1,16 @@
 package com.yonge.cooleshow.api.feign;
 
 import com.yonge.cooleshow.api.feign.fallback.AdminFeignServiceFallback;
-import com.yonge.cooleshow.api.feign.fallback.MallAdminFeignServiceFallback;
 import com.yonge.cooleshow.common.constant.AppConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.entity.MallOrderItemDto;
 import com.yonge.toolset.feign.config.FeignConfiguration;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
 
 /**
  * Description
@@ -45,4 +48,17 @@ public interface AdminFeignService {
     //老师课酬
     @PostMapping(value = "/task/teacherEarning")
     HttpResponseResult<Object> sendTeacherEarning();
+
+
+    /**
+     * 设置商城收入分润
+     */
+    @PostMapping("/mallRecord")
+    public HttpResponseResult<Boolean> mallRecord(@RequestBody List<MallOrderItemDto> shareDto ) ;
+
+    /**
+     * 设置商城收入状态
+     */
+    @PostMapping("/mallRecordState")
+    public HttpResponseResult<Boolean> mallRecordState(@RequestBody  List<MallOrderItemDto> shareDto ) ;
 }

+ 7 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/MallPortalFeignService.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.api.feign;
 
 import com.yonge.cooleshow.api.feign.fallback.MallPortalFeignServiceFallback;
 import com.yonge.cooleshow.common.constant.AppConstant;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.feign.config.FeignConfiguration;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -15,4 +16,10 @@ public interface MallPortalFeignService {
      */
     @GetMapping("/task/cancelTimeOutOrder")
     Object cancelTimeOutOrder();
+
+    /**
+     * 自动收货
+     */
+    @GetMapping("/autoReceive")
+    HttpResponseResult autoReceive();
 }

+ 11 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.api.feign.fallback;
 
 import com.yonge.cooleshow.api.feign.AdminFeignService;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.entity.MallOrderItemDto;
 
 /**
  * Description
@@ -29,4 +30,14 @@ public class AdminFeignServiceFallback implements AdminFeignService {
     public HttpResponseResult<Object> sendTeacherEarning() {
         return null;
     }
+
+    @Override
+    public HttpResponseResult<Boolean> mallTeacherRecordState(MallOrderItemDto shareDto) {
+        return null;
+    }
+
+    @Override
+    public HttpResponseResult<Boolean> mallTeacherRecord(MallOrderItemDto shareDto) {
+        return null;
+    }
 }

+ 114 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/entity/MallOrderItemDto.java

@@ -0,0 +1,114 @@
+package com.yonge.cooleshow.common.entity;
+
+import com.yonge.cooleshow.common.enums.PostStatusEnum;
+
+import java.math.BigDecimal;
+
+/**
+ * Description 老师分润
+ *
+ * @author liujunchi
+ * @date 2022-07-25
+ */
+public class MallOrderItemDto {
+
+    // 订单详情id
+    private Long id;
+
+    // 订单id
+    private Long orderId;
+
+    // 订单号
+    private String orderSn;
+
+    // 商品id
+    private Long productId;
+
+
+    private String productName;
+
+    // 分享人id
+    private Long promoterId;
+
+    // 购买金额
+    private BigDecimal realAmount;
+
+    // 购买人id
+    private Long userId;
+
+    // 分润状态
+    private PostStatusEnum status;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Long orderId) {
+        this.orderId = orderId;
+    }
+
+    public String getOrderSn() {
+        return orderSn;
+    }
+
+    public void setOrderSn(String orderSn) {
+        this.orderSn = orderSn;
+    }
+
+    public Long getProductId() {
+        return productId;
+    }
+
+    public void setProductId(Long productId) {
+        this.productId = productId;
+    }
+
+    public String getProductName() {
+        return productName;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
+
+    public Long getPromoterId() {
+        return promoterId;
+    }
+
+    public void setPromoterId(Long promoterId) {
+        this.promoterId = promoterId;
+    }
+
+    public BigDecimal getRealAmount() {
+        return realAmount;
+    }
+
+    public void setRealAmount(BigDecimal realAmount) {
+        this.realAmount = realAmount;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public PostStatusEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(PostStatusEnum status) {
+        this.status = status;
+    }
+}

+ 40 - 5
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderReturnApplyServiceImpl.java

@@ -1,14 +1,17 @@
 package com.yonge.cooleshow.admin.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.github.pagehelper.PageHelper;
 import com.yonge.cooleshow.admin.dao.OmsOrderReturnApplyDao;
-import com.yonge.cooleshow.admin.dto.HomeStatistical;
-import com.yonge.cooleshow.admin.dto.OmsOrderReturnApplyResult;
-import com.yonge.cooleshow.admin.dto.OmsReturnApplyQueryParam;
-import com.yonge.cooleshow.admin.dto.OmsUpdateStatusParam;
+import com.yonge.cooleshow.admin.dto.*;
+import com.yonge.cooleshow.api.feign.AdminFeignService;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.entity.MallOrderItemDto;
+import com.yonge.cooleshow.common.enums.PostStatusEnum;
 import com.yonge.cooleshow.common.service.IdGeneratorService;
 import com.yonge.cooleshow.mall.common.exception.ApiException;
 import com.yonge.cooleshow.mall.common.service.RedisService;
+import com.yonge.cooleshow.mbg.mapper.OmsOrderItemMapper;
 import com.yonge.cooleshow.mbg.model.*;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.cooleshow.mbg.mapper.OmsOrderReturnApplyMapper;
@@ -24,12 +27,13 @@ import com.yonge.toolset.payment.base.model.RefundBill;
 import com.yonge.toolset.payment.core.service.PaymentClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -48,6 +52,11 @@ public class OmsOrderReturnApplyServiceImpl implements OmsOrderReturnApplyServic
     private OmsOrderReturnApplyMapper returnApplyMapper;
 
     @Autowired
+    private OmsOrderItemMapper orderItemMapper;
+
+    @Autowired
+    private AdminFeignService adminFeignService;
+    @Autowired
     private RedisService redisService;
     private String REDIS_KEY_ORDER_ID= "redis.key.orderId";
     private String REDIS_DATABASE = "redis.database";
@@ -113,6 +122,10 @@ public class OmsOrderReturnApplyServiceImpl implements OmsOrderReturnApplyServic
             if (omsOrderReturnApply.getReturnAmount().compareTo(BigDecimal.ZERO) >0) {
                 refundAmount(omsOrderReturnApply);
             }
+
+            // 确认退款 取消平台收入和 分润
+            setRecord(returnApply);
+
         } else if (status.equals(3)) {
             //拒绝退货
             returnApply.setId(id);
@@ -126,6 +139,28 @@ public class OmsOrderReturnApplyServiceImpl implements OmsOrderReturnApplyServic
         return returnApplyMapper.updateByPrimaryKeySelective(returnApply);
     }
 
+    private void setRecord(OmsOrderReturnApply returnApply) {
+        if (returnApply.getOrderItemId() != null) {
+            OmsOrderItem omsOrderItem = orderItemMapper.selectByPrimaryKey(returnApply.getOrderItemId());
+            if (omsOrderItem != null) {
+                MallOrderItemDto teacherShareDto = new MallOrderItemDto();
+                BeanUtils.copyProperties(omsOrderItem, teacherShareDto);
+                teacherShareDto.setRealAmount(omsOrderItem.getRealAmount().multiply(BigDecimal.valueOf(omsOrderItem.getProductQuantity())));
+                teacherShareDto.setProductId(omsOrderItem.getProductId());
+                teacherShareDto.setStatus(PostStatusEnum.CANCEL);
+                List<MallOrderItemDto> list = new ArrayList<>();
+                list.add(teacherShareDto);
+                HttpResponseResult<Boolean> result = adminFeignService.mallRecordState(list);
+
+                if (result.getStatus()) {
+                    log.debug("分润取消写入成功,json: {}", JSON.toJSONString(teacherShareDto));
+                } else {
+                    log.error("分润取消写入失败,json: {}",JSON.toJSONString(teacherShareDto));
+                }
+            }
+        }
+    }
+
     /**
      * 退款处理
      *

+ 10 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsCartItem.java

@@ -16,6 +16,9 @@ public class OmsCartItem implements Serializable {
 
     private Long memberId;
 
+    @ApiModelProperty("推广人id")
+    private Long promoterId;
+
     @ApiModelProperty(value = "购买数量")
     private Integer quantity;
 
@@ -66,6 +69,13 @@ public class OmsCartItem implements Serializable {
     @ApiModelProperty(value = "锁定库存")
     private Integer lockStock = 0 ;
 
+    public Long getPromoterId() {
+        return promoterId;
+    }
+
+    public void setPromoterId(Long promoterId) {
+        this.promoterId = promoterId;
+    }
 
     public Integer getStock() {
         return stock;

+ 23 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrderItem.java

@@ -23,6 +23,12 @@ public class OmsOrderItem implements Serializable {
 
     private String productSn;
 
+    @ApiModelProperty("推广人id")
+    private Long promoterId;
+
+    @ApiModelProperty("分享比例(%)")
+    private String shareProportion;
+
     @ApiModelProperty(value = "销售价格")
     private BigDecimal productPrice;
 
@@ -65,6 +71,23 @@ public class OmsOrderItem implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+
+    public Long getPromoterId() {
+        return promoterId;
+    }
+
+    public void setPromoterId(Long promoterId) {
+        this.promoterId = promoterId;
+    }
+
+    public String getShareProportion() {
+        return shareProportion;
+    }
+
+    public void setShareProportion(String shareProportion) {
+        this.shareProportion = shareProportion;
+    }
+
     public Long getId() {
         return id;
     }

+ 18 - 3
cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/OmsCartItemMapper.xml

@@ -21,6 +21,7 @@
     <result column="product_sn" jdbcType="VARCHAR" property="productSn" />
     <result column="product_attr" jdbcType="VARCHAR" property="productAttr" />
     <result column="hidden_" jdbcType="VARCHAR" property="hidden" />
+    <result column="promoter_id"  property="promoterId" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -83,7 +84,7 @@
   <sql id="Base_Column_List">
     id, product_id, product_sku_id, member_id, quantity, price, product_pic, product_name, 
     product_sub_title, product_sku_code, member_nickname, create_date, modify_date, delete_status, 
-    product_category_id, product_brand, product_sn, product_attr,hidden_
+    product_category_id, product_brand, product_sn, product_attr,hidden_,promoter_id
   </sql>
   <select id="selectByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsCartItemExample" resultMap="BaseResultMap">
     select
@@ -124,13 +125,13 @@
       product_name, product_sub_title, product_sku_code, 
       member_nickname, create_date, modify_date, 
       delete_status, product_category_id, product_brand, 
-      product_sn, product_attr,hidden_)
+      product_sn, product_attr,hidden_,promoter_id)
     values (#{productId,jdbcType=BIGINT}, #{productSkuId,jdbcType=BIGINT}, #{memberId,jdbcType=BIGINT}, 
       #{quantity,jdbcType=INTEGER}, #{price,jdbcType=DECIMAL}, #{productPic,jdbcType=VARCHAR}, 
       #{productName,jdbcType=VARCHAR}, #{productSubTitle,jdbcType=VARCHAR}, #{productSkuCode,jdbcType=VARCHAR}, 
       #{memberNickname,jdbcType=VARCHAR}, #{createDate,jdbcType=TIMESTAMP}, #{modifyDate,jdbcType=TIMESTAMP}, 
       #{deleteStatus,jdbcType=INTEGER}, #{productCategoryId,jdbcType=BIGINT}, #{productBrand,jdbcType=VARCHAR}, 
-      #{productSn,jdbcType=VARCHAR}, #{productAttr,jdbcType=VARCHAR},#{hidden})
+      #{productSn,jdbcType=VARCHAR}, #{productAttr,jdbcType=VARCHAR},#{hidden},#{promoterId})
   </insert>
   <insert id="insertSelective" parameterType="com.yonge.cooleshow.mbg.model.OmsCartItem">
     <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
@@ -192,6 +193,9 @@
       <if test="hidden != null">
         hidden_,
       </if>
+      <if test="promoterId != null">
+        promoter_id,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="productId != null">
@@ -248,6 +252,9 @@
       <if test="hidden != null">
         #{hidden},
       </if>
+      <if test="promoterId != null">
+        #{promoterId},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsCartItemExample" resultType="java.lang.Long">
@@ -316,6 +323,9 @@
       <if test="record.hidden != null">
         hidden_ = #{record.hidden},
       </if>
+      <if test="record.promoterId != null">
+        promoter_id = #{record.promoterId},
+      </if>
     </set>
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -341,6 +351,7 @@
       product_brand = #{record.productBrand,jdbcType=VARCHAR},
       product_sn = #{record.productSn,jdbcType=VARCHAR},
       product_attr = #{record.productAttr,jdbcType=VARCHAR},
+      promoter_id = #{record.promoterId},
       hidden_ = #{record.hidden}
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -403,6 +414,9 @@
       <if test="hidden != null">
         hidden_ = #{hidden},
       </if>
+      <if test="promoterId != null">
+        promoter_id = #{promoterId},
+      </if>
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
@@ -425,6 +439,7 @@
       product_brand = #{productBrand,jdbcType=VARCHAR},
       product_sn = #{productSn,jdbcType=VARCHAR},
       product_attr = #{productAttr,jdbcType=VARCHAR},
+      promoter_id = #{promoterId},
       hidden_ = #{hidden}
     where id = #{id,jdbcType=BIGINT}
   </update>

+ 33 - 3
cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/OmsOrderItemMapper.xml

@@ -24,6 +24,8 @@
     <result column="gift_growth" jdbcType="INTEGER" property="giftGrowth" />
     <result column="product_attr" jdbcType="VARCHAR" property="productAttr" />
     <result column="returnStatus" jdbcType="INTEGER" property="returnStatus" />
+    <result column="promoter_id" jdbcType="INTEGER" property="promoterId" />
+    <result column="share_proportion_" jdbcType="INTEGER" property="shareProportion" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -87,7 +89,7 @@
     id, order_id, order_sn, product_id, product_pic, product_name, product_brand, product_sn, 
     product_price, product_quantity, product_sku_id, product_sku_code, product_category_id, 
     promotion_name, promotion_amount, coupon_amount, integration_amount, real_amount, 
-    gift_integration, gift_growth, product_attr
+    gift_integration, gift_growth, product_attr,promoter_id,share_proportion_
   </sql>
   <select id="selectByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderItemExample" resultMap="BaseResultMap">
     select a.*,if(oora.status is null,-1,oora.status) as returnStatus from  (
@@ -131,14 +133,14 @@
       product_sku_id, product_sku_code, product_category_id, 
       promotion_name, promotion_amount, coupon_amount, 
       integration_amount, real_amount, gift_integration, 
-      gift_growth, product_attr)
+      gift_growth, product_attr,promoter_id,share_proportion_)
     values (#{orderId,jdbcType=BIGINT}, #{orderSn,jdbcType=VARCHAR}, #{productId,jdbcType=BIGINT}, 
       #{productPic,jdbcType=VARCHAR}, #{productName,jdbcType=VARCHAR}, #{productBrand,jdbcType=VARCHAR}, 
       #{productSn,jdbcType=VARCHAR}, #{productPrice,jdbcType=DECIMAL}, #{productQuantity,jdbcType=INTEGER}, 
       #{productSkuId,jdbcType=BIGINT}, #{productSkuCode,jdbcType=VARCHAR}, #{productCategoryId,jdbcType=BIGINT}, 
       #{promotionName,jdbcType=VARCHAR}, #{promotionAmount,jdbcType=DECIMAL}, #{couponAmount,jdbcType=DECIMAL}, 
       #{integrationAmount,jdbcType=DECIMAL}, #{realAmount,jdbcType=DECIMAL}, #{giftIntegration,jdbcType=INTEGER}, 
-      #{giftGrowth,jdbcType=INTEGER}, #{productAttr,jdbcType=VARCHAR})
+      #{giftGrowth,jdbcType=INTEGER}, #{productAttr,jdbcType=VARCHAR},#{promoterId},#{shareProportion})
   </insert>
   <insert id="insertSelective" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderItem">
     <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
@@ -206,6 +208,12 @@
       <if test="productAttr != null">
         product_attr,
       </if>
+      <if test="promoterId != null">
+        promoter_id,
+      </if>
+      <if test="shareProportion != null">
+        share_proportion_,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="orderId != null">
@@ -268,6 +276,12 @@
       <if test="productAttr != null">
         #{productAttr,jdbcType=VARCHAR},
       </if>
+      <if test="promoterId != null">
+        #{promoterId,jdbcType=BIGINT},
+      </if>
+      <if test="shareProportion != null">
+        #{shareProportion,jdbcType=VARCHAR},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderItemExample" resultType="java.lang.Long">
@@ -342,6 +356,12 @@
       <if test="record.productAttr != null">
         product_attr = #{record.productAttr,jdbcType=VARCHAR},
       </if>
+      <if test="record.promoterId != null">
+        promoter_id = #{record.promoterId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.shareProportion != null">
+        share_proportion_ = #{record.shareProportion,jdbcType=VARCHAR},
+      </if>
     </set>
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -369,6 +389,8 @@
       real_amount = #{record.realAmount,jdbcType=DECIMAL},
       gift_integration = #{record.giftIntegration,jdbcType=INTEGER},
       gift_growth = #{record.giftGrowth,jdbcType=INTEGER},
+      promoter_id = #{record.promoterId,jdbcType=INTEGER},
+      share_proportion_ = #{record.shareProportion},
       product_attr = #{record.productAttr,jdbcType=VARCHAR}
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -437,6 +459,12 @@
       <if test="productAttr != null">
         product_attr = #{productAttr,jdbcType=VARCHAR},
       </if>
+      <if test="promoterId != null">
+        promoter_id = #{promoterId,jdbcType=VARCHAR},
+      </if>
+      <if test="shareProportion != null">
+        share_proportion_ = #{shareProportion,jdbcType=VARCHAR},
+      </if>
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
@@ -461,6 +489,8 @@
       real_amount = #{realAmount,jdbcType=DECIMAL},
       gift_integration = #{giftIntegration,jdbcType=INTEGER},
       gift_growth = #{giftGrowth,jdbcType=INTEGER},
+      promoter_id = #{promoterId,jdbcType=INTEGER},
+    share_proportion_ = #{shareProportion},
       product_attr = #{productAttr,jdbcType=VARCHAR}
     where id = #{id,jdbcType=BIGINT}
   </update>

+ 5 - 0
cooleshow-mall/mall-portal/pom.xml

@@ -80,6 +80,11 @@
             <version>1.0</version>
         </dependency>
         <dependency>
+            <groupId>com.yonge.cooleshow</groupId>
+            <artifactId>cooleshow-api</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <dependency>
             <groupId>com.yonge.toolset</groupId>
             <artifactId>toolset-payment</artifactId>
             <version>${project.toolset.version}</version>

+ 8 - 1
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/OmsPortalOrderController.java

@@ -144,7 +144,14 @@ public class OmsPortalOrderController {
     @RequestMapping(value = "/confirmReceiveOrder", method = RequestMethod.POST)
     @ResponseBody
     public CommonResult confirmReceiveOrder(Long orderId) {
-        portalOrderService.confirmReceiveOrder(orderId);
+        OmsOrder omsOrder = portalOrderService.getOrderById(orderId);
+        if (omsOrder == null) {
+            return CommonResult.failed("未找到订单");
+        }
+
+        DistributedLock.of(redissonClient)
+                       .runIfLockCanGet(OrderCacheEnum.LOCK_ORDER_NO_MALL.getRedisKey(omsOrder.getOrderSn())
+                               , () -> portalOrderService.confirmReceiveOrder(orderId), 60L, TimeUnit.SECONDS);
         return CommonResult.success(null);
     }
 

+ 7 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderService.java

@@ -111,4 +111,11 @@ public interface OmsPortalOrderService {
     void closePaymentCallBack(PaymentCallBack data);
 
 
+    /**
+     * 设置自动收货
+     *
+     * @return
+     */
+    @Transactional
+    Integer autoReceive();
 }

+ 3 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsCartItemServiceImpl.java

@@ -87,6 +87,9 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
             cartItemMapper.insert(cartItem);
             return cartItem;
         } else {
+            if (cartItem.getPromoterId() != null) {
+                existCartItem.setPromoterId(cartItem.getPromoterId());
+            }
             if (pmsSkuStock.getStock() - pmsSkuStock.getLockStock() < existCartItem.getQuantity() + cartItem.getQuantity()) {
                 throw new BizException("库存不足");
             }

+ 83 - 2
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -4,6 +4,10 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSON;
 import com.github.pagehelper.PageHelper;
+import com.yonge.cooleshow.api.feign.AdminFeignService;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.entity.MallOrderItemDto;
+import com.yonge.cooleshow.common.enums.PostStatusEnum;
 import com.yonge.cooleshow.common.service.IdGeneratorService;
 import com.yonge.cooleshow.mall.common.api.CommonPage;
 import com.yonge.cooleshow.mall.common.enums.OrderCacheEnum;
@@ -34,6 +38,7 @@ import com.yonge.toolset.payment.util.DistributedLock;
 import org.redisson.api.RedissonClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -41,7 +46,8 @@ import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -108,6 +114,10 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
     @Autowired
     private RedissonClient redissonClient;
 
+
+    @Autowired
+    private AdminFeignService adminFeignService;
+
     @Autowired
     private PortalProductDao productDao;
 
@@ -161,6 +171,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
             orderItem.setPromotionName(cartPromotionItem.getPromotionMessage());
             orderItem.setGiftIntegration(cartPromotionItem.getIntegration());
             orderItem.setGiftGrowth(cartPromotionItem.getGrowth());
+            orderItem.setPromoterId(cartPromotionItem.getPromoterId());
             orderItemList.add(orderItem);
         }
         //判断购物车中商品是否都有库存
@@ -320,9 +331,48 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         // 减商品库存
         updateProductStock(orderDetail);
 
+        // 查询订单
+        OmsOrderDetail detail = detail(orderId);
+
+        // 设置平台收入和分润
+
+        setPromoterRecord(detail,PostStatusEnum.WAIT);
+
+
         return count;
     }
 
+    private void setPromoterRecord(OmsOrderDetail detail,PostStatusEnum status) {
+
+        List<OmsOrderItem> orderItemList = detail.getOrderItemList();
+
+        orderItemList = orderItemList.stream().filter(omsOrderItem -> omsOrderItem.getPromoterId() != null).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(orderItemList) ) {
+            return;
+        }
+
+        List<MallOrderItemDto> list = new ArrayList<>();
+        for (OmsOrderItem omsOrderItem : orderItemList) {
+            MallOrderItemDto teacherShareDto = new MallOrderItemDto();
+            BeanUtils.copyProperties(omsOrderItem,teacherShareDto);
+            teacherShareDto.setRealAmount(omsOrderItem.getRealAmount().multiply(BigDecimal.valueOf(omsOrderItem.getProductQuantity())));
+            teacherShareDto.setStatus(status);
+            teacherShareDto.setUserId(detail.getMemberId());
+            list.add(teacherShareDto);
+        }
+        HttpResponseResult<Boolean> result;
+        if (status.equals(PostStatusEnum.WAIT)) {
+            result = adminFeignService.mallRecord(list);
+        } else {
+            result = adminFeignService.mallRecordState(list);
+        }
+        if (result.getStatus()) {
+            LOG.debug("分润记录写入成功,json: {}",JSON.toJSONString(list));
+        } else {
+            LOG.error("分润记录写入失败,json: {}",JSON.toJSONString(list));
+        }
+    }
+
     /**
      * 减商品库存
      */
@@ -446,11 +496,17 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         }
         if (order.getStatus() != 2) {
             Asserts.fail("该订单还未发货!");
+        }else if (order.getStatus() == 3) {
+            Asserts.fail("已确认收货!");
         }
         order.setStatus(3);
         order.setConfirmStatus(1);
         order.setReceiveTime(new Date());
-        orderMapper.updateByPrimaryKey(order);
+        int i = orderMapper.updateByPrimaryKey(order);
+
+        // 设置平台收入和分润 实际收款
+        setPromoterRecord(detail(orderId), PostStatusEnum.RECORDED);
+
     }
 
     @Override
@@ -713,6 +769,31 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         }
     }
 
+    @Override
+    public Integer autoReceive() {
+        OmsOrderSetting omsOrderSetting = orderSettingMapper.selectByPrimaryKey(1L);
+        Integer confirmOvertime = omsOrderSetting.getConfirmOvertime();
+        LocalDateTime localDateTime = LocalDateTime.now().plusDays(-confirmOvertime);
+        OmsOrderExample orderExample = new OmsOrderExample();
+        orderExample.createCriteria().andStatusEqualTo(2).andDeleteStatusEqualTo(0).andConfirmStatusEqualTo(0)
+                .andDeliveryTimeLessThanOrEqualTo(Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()));
+
+        List<OmsOrder> omsOrders = orderMapper.selectByExample(orderExample);
+        if (CollectionUtils.isEmpty(omsOrders)) {
+            return 0;
+        }
+        for (OmsOrder omsOrder : omsOrders) {
+
+            DistributedLock.of(redissonClient)
+                           .runIfLockCanGet(OrderCacheEnum.LOCK_ORDER_NO_MALL.getRedisKey(omsOrder.getOrderSn())
+                                   , () -> {
+                                       this.confirmReceiveOrder(omsOrder.getId());
+                                   }, 60L, TimeUnit.SECONDS);
+        }
+        return omsOrders.size();
+
+    }
+
 
     /***
      * 处理回调-支付成功

+ 11 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/task/OrderTimeOutCancelTask.java

@@ -31,4 +31,15 @@ public class OrderTimeOutCancelTask {
         LOGGER.info("取消订单,并根据sku编号释放锁定库存,取消订单数量:{}",count);
         return HttpResponseResult.succeed();
     }
+
+    /**
+     * 发货多少天后自动收货
+     */
+    @GetMapping("/autoReceive")
+    public HttpResponseResult autoReceive(){
+        Integer count = portalOrderService.autoReceive();
+        LOGGER.info("自动收货:{}",count);
+        return HttpResponseResult.succeed();
+    }
+
 }

+ 22 - 0
cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/MallAutoReceiveTask.java

@@ -0,0 +1,22 @@
+package com.yonge.cooleshow.task.jobs;
+
+import com.yonge.cooleshow.api.feign.MallPortalFeignService;
+import com.yonge.cooleshow.task.core.BaseTask;
+import com.yonge.cooleshow.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 自动收货
+ */
+@Service
+public class MallAutoReceiveTask extends BaseTask {
+
+    @Autowired
+    private MallPortalFeignService mallPortalFeignService;
+
+    @Override
+    public void execute() throws TaskException {
+        Object o = mallPortalFeignService.autoReceive();
+    }
+}

+ 27 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UserAccountController.java

@@ -1,14 +1,17 @@
 package com.yonge.cooleshow.admin.controller;
 
+import com.yonge.cooleshow.biz.dal.service.UserAccountService;
+import com.yonge.cooleshow.biz.dal.vo.UserAccountVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import io.swagger.annotations.*;
+import com.yonge.cooleshow.common.entity.MallOrderItemDto;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
-import com.yonge.cooleshow.biz.dal.vo.UserAccountVo;
-import com.yonge.cooleshow.biz.dal.service.UserAccountService;
+import java.util.List;
 
 @RestController
 @RequestMapping("/userAccount")
@@ -27,4 +30,25 @@ public class UserAccountController extends BaseController {
     public HttpResponseResult<UserAccountVo> detail(@PathVariable("id") Long id) {
     	return succeed(userAccountService.detail(id));
 	}
+
+
+    /**
+     * 设置商城收入分润
+     */
+    @PostMapping("/mallRecord")
+    public HttpResponseResult<Boolean> mallRecord(@RequestBody List<MallOrderItemDto> shareDto ) {
+        return succeed(userAccountService.saveMallAccountRecord(shareDto));
+    }
+
+
+
+    /**
+     * 设置商城收入状态
+     */
+    @PostMapping("/mallRecordState")
+    public HttpResponseResult<Boolean> mallRecordState(@RequestBody List<MallOrderItemDto> shareDto ) {
+        userAccountService.mallTeacherRecordState(shareDto);
+        return succeed();
+    }
+
 }

+ 1 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AccountBizTypeEnum.java

@@ -14,6 +14,7 @@ public enum AccountBizTypeEnum implements BaseEnum<String, AccountBizTypeEnum> {
     LIVE("直播课", InOrOutEnum.IN),
     VIDEO("视频课", InOrOutEnum.IN),
     MUSIC("乐谱", InOrOutEnum.IN),
+    MALL("商城购买", InOrOutEnum.IN),
     WITHDRAWAL("结算", InOrOutEnum.OUT),
 
     LIVE_SHARE("直播课分润", InOrOutEnum.IN),

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/GoodTypeEnum.java

@@ -15,7 +15,8 @@ public enum GoodTypeEnum implements BaseEnum<String, GoodTypeEnum> {
     LIVE("直播课购买"),
     VIDEO("视频课购买"),
     MUSIC("单曲点播"),
-    PINAO_ROOM("琴房时长");
+    PINAO_ROOM("琴房时长"),
+    MALL("商城");
     @EnumValue
     private String code;
     private String msg;

+ 15 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserAccountService.java

@@ -10,6 +10,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.UserAccountSearch;
 import com.yonge.cooleshow.biz.dal.entity.UserAccount;
 import com.yonge.cooleshow.biz.dal.vo.res.AccountTotal;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.entity.MallOrderItemDto;
 import com.yonge.cooleshow.common.enums.PostStatusEnum;
 
 import java.util.List;
@@ -77,4 +78,18 @@ public interface UserAccountService extends IService<UserAccount>  {
      * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<com.yonge.cooleshow.biz.dal.vo.res.AccountTotal>
      */
     HttpResponseResult<AccountTotal> accountTotal(TotalReq totalReq);
+
+
+    /**
+     * 设置老师分润状态
+     *
+     * @param shareDto 老师状态
+     * @return
+     */
+    void mallTeacherRecordState(List<MallOrderItemDto> shareDto);
+    /**
+     * 记录平台收入和用户分润收入
+     * @return
+     */
+    boolean saveMallAccountRecord(List<MallOrderItemDto> shareDto);
 }

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderService.java

@@ -7,6 +7,7 @@ import com.yonge.cooleshow.biz.dal.dto.req.OrderPayReq;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderRefundReq;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.entity.UserOrder;
+import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch;
@@ -14,8 +15,10 @@ import com.yonge.cooleshow.biz.dal.vo.res.OrderPayRes;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.payment.base.model.callback.PaymentCallBack;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -166,4 +169,6 @@ public interface UserOrderService extends IService<UserOrder> {
      */
     void orderSuccess(UserOrderVo detail, PaymentCallBack data);
 
+
+    public BigDecimal getShareFreeByGoodType(GoodTypeEnum goodType);
 }

+ 84 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserAccountServiceImpl.java

@@ -7,40 +7,36 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dto.UserAccountRecordDto;
 import com.yonge.cooleshow.biz.dal.dto.req.TotalReq;
+import com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord;
 import com.yonge.cooleshow.biz.dal.entity.UserAccountRecord;
 import com.yonge.cooleshow.biz.dal.entity.UserOrder;
 import com.yonge.cooleshow.biz.dal.enums.AccountBizTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
-import com.yonge.cooleshow.biz.dal.service.UserOrderService;
+import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.vo.UserAccountRecordVo;
-import com.yonge.cooleshow.biz.dal.vo.res.OrderPayRes;
+import com.yonge.cooleshow.common.entity.MallOrderItemDto;
 import com.yonge.cooleshow.common.enums.CacheNameEnum;
-import com.yonge.cooleshow.biz.dal.enums.FrozenTypeEnum;
-import com.yonge.cooleshow.biz.dal.service.UserAccountRecordService;
 import com.yonge.cooleshow.biz.dal.vo.res.AccountTotal;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.enums.PostStatusEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.payment.util.DistributedLock;
 import com.yonge.toolset.utils.collection.ListUtil;
-import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.yonge.cooleshow.biz.dal.entity.UserAccount;
 import com.yonge.cooleshow.biz.dal.vo.UserAccountVo;
 import com.yonge.cooleshow.biz.dal.dto.search.UserAccountSearch;
 import com.yonge.cooleshow.biz.dal.dao.UserAccountDao;
-import com.yonge.cooleshow.biz.dal.service.UserAccountService;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
-import java.util.concurrent.*;
 import java.util.stream.Collectors;
 
 
@@ -55,6 +51,14 @@ public class UserAccountServiceImpl extends ServiceImpl<UserAccountDao, UserAcco
     @Autowired
     private UserOrderService orderService;
 
+    @Autowired
+    private PlatformCashAccountRecordService platformCashAccountRecordService;
+
+    @Autowired
+    private UserOrderService userOrderService;
+
+    @Autowired
+    private SysConfigService sysConfigService;
     @Override
     public UserAccountVo detail(Long id) {
         UserAccountVo detail = baseMapper.detail(id);
@@ -386,4 +390,76 @@ public class UserAccountServiceImpl extends ServiceImpl<UserAccountDao, UserAcco
         return true;
     }
 
+    @Override
+    public void mallTeacherRecordState(List<MallOrderItemDto> shareDto) {
+        if (CollectionUtils.isEmpty(shareDto)) {
+            return ;
+        }
+        for (MallOrderItemDto mallOrderItemDto : shareDto) {
+            mallTeacherRecordState(mallOrderItemDto);
+        }
+    }
+
+    public void mallTeacherRecordState(MallOrderItemDto shareDto) {
+        List<UserAccountRecord> list = userAccountRecordService.lambdaQuery()
+                                                               .eq(UserAccountRecord::getOrderNo, shareDto.getOrderSn())
+                                                               .eq(UserAccountRecord::getBizId, shareDto.getProductId())
+                                                               .list();
+        if (CollectionUtils.isEmpty(list)) {
+            return;
+        }
+        for (UserAccountRecord userAccount : list) {
+            this.accountChange(userAccount.getId(),shareDto.getStatus());
+        }
+    }
+
+
+    /**
+     * 记录平台收入和用户分润收入
+     * @return
+     */
+    @Override
+    public boolean saveMallAccountRecord(List<MallOrderItemDto> shareDto) {
+        if (CollectionUtils.isEmpty(shareDto)) {
+            return false;
+        }
+        for (MallOrderItemDto mallOrderItemDto : shareDto) {
+            saveMallAccountRecord(mallOrderItemDto);
+        }
+        return true;
+    }
+
+    public void saveMallAccountRecord(MallOrderItemDto shareDto) {
+        BigDecimal expectPrice = shareDto.getRealAmount();
+        if (expectPrice.compareTo(BigDecimal.ZERO) <= 0) {
+            return;
+        }
+        //平台收入
+        PlatformCashAccountRecord platformCashAccountRecord = new PlatformCashAccountRecord(shareDto.getUserId(), expectPrice,
+                          InOrOutEnum.IN, PostStatusEnum.WAIT, AccountBizTypeEnum.MALL, shareDto.getProductId(), shareDto.getOrderSn());
+
+        platformCashAccountRecordService.save(platformCashAccountRecord);
+
+        //分润
+        if (null != shareDto.getPromoterId()) {
+            //获取分润收益费率
+            BigDecimal shareFeeRate = userOrderService.getShareFreeByGoodType(GoodTypeEnum.MALL);
+            if (shareFeeRate.compareTo(BigDecimal.ZERO) > 0) {
+                //入老师账户
+                BigDecimal shareFee = expectPrice.multiply(shareFeeRate).setScale(2, RoundingMode.HALF_UP);
+                AccountBizTypeEnum bizTypeEnum = AccountBizTypeEnum.MALL_SHARE;
+                //插入分润老师账户变更记录-分润老师预收
+                HttpResponseResult<UserAccountRecord> recomRecordRes = this.accountRecord(
+                        new UserAccountRecordDto(shareDto.getPromoterId(), PostStatusEnum.WAIT, shareFee, InOrOutEnum.IN,
+                                                 bizTypeEnum, shareDto.getProductId(), shareDto.getProductName(), shareDto.getOrderSn()));
+                if(recomRecordRes.getStatus()){
+                    //插入平台预支
+                    platformCashAccountRecord = new PlatformCashAccountRecord(shareDto.getPromoterId(), shareFee,
+                            InOrOutEnum.OUT, PostStatusEnum.WAIT, AccountBizTypeEnum.MALL_SHARE, shareDto.getProductId(), shareDto.getOrderSn());
+                    platformCashAccountRecordService.save(platformCashAccountRecord);
+                }
+            }
+        }
+    }
+
 }

+ 6 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java

@@ -852,7 +852,8 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
      * @param goodType
      * @return
      */
-    private BigDecimal getShareFreeByGoodType(GoodTypeEnum goodType) {
+    @Autowired
+    public BigDecimal getShareFreeByGoodType(GoodTypeEnum goodType) {
         if (GoodTypeEnum.VIP.equals(goodType)) {
             return new BigDecimal(sysConfigService.findConfigValue(SysConfigConstant.VIP_SHARE_FEE))
                     .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
@@ -869,6 +870,10 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             return new BigDecimal(sysConfigService.findConfigValue(SysConfigConstant.MUSIC_SHARE_FEE))
                     .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
         }
+        if (GoodTypeEnum.MALL.equals(goodType)) {
+            return new BigDecimal(sysConfigService.findConfigValue(SysConfigConstant.MALL_SHARE_FEE))
+                    .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+        }
         return BigDecimal.ZERO;
     }