Преглед на файлове

Merge remote-tracking branch 'origin/dev_v1_1_20220720' into dev_v1_1_20220720

# Conflicts:
#	cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserAccountServiceImpl.java
liweifan преди 3 години
родител
ревизия
06eb97c543

+ 12 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrder.java

@@ -139,11 +139,23 @@ public class OmsOrder implements Serializable {
     @ApiModelProperty(value = "评价时间")
     private Date commentTime;
 
+    @ApiModelProperty("是否能申请售后")
+    private int afterSale;
+
     @ApiModelProperty(value = "修改时间")
     private Date modifyTime;
 
     private static final long serialVersionUID = 1L;
 
+
+    public int getAfterSale() {
+        return afterSale;
+    }
+
+    public void setAfterSale(int afterSale) {
+        this.afterSale = afterSale;
+    }
+
     public String getPlatformType() {
         return platformType;
     }

+ 5 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsOrderExample.java

@@ -2451,6 +2451,11 @@ public class OmsOrderExample {
             return (Criteria) this;
         }
 
+        public Criteria andAfterSaleEqualTo(Integer value) {
+            addCriterion("after_sale =", value, "afterSale");
+            return (Criteria) this;
+        }
+
         public Criteria andConfirmStatusNotEqualTo(Integer value) {
             addCriterion("confirm_status <>", value, "confirmStatus");
             return (Criteria) this;

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

@@ -48,6 +48,7 @@
     <result column="comment_time" jdbcType="TIMESTAMP" property="commentTime" />
     <result column="modify_time" jdbcType="TIMESTAMP" property="modifyTime" />
     <result column="platform_type" jdbcType="TIMESTAMP" property="platformType" />
+    <result column="after_sale"  property="afterSale" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -114,7 +115,7 @@
     integration, growth, promotion_info, bill_type, bill_header, bill_content, bill_receiver_phone, 
     bill_receiver_email, receiver_name, receiver_phone, receiver_post_code, receiver_province, 
     receiver_city, receiver_region, receiver_detail_address, note, confirm_status, delete_status, 
-    use_integration, payment_time, delivery_time, receive_time, comment_time, modify_time,cart_ids,platform_type
+    use_integration, payment_time, delivery_time, receive_time, comment_time, modify_time,cart_ids,platform_type,after_sale
   </sql>
   <select id="selectByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderExample" resultMap="BaseResultMap">
     select
@@ -164,7 +165,7 @@
       receiver_detail_address, note, confirm_status, 
       delete_status, use_integration, payment_time, 
       delivery_time, receive_time, comment_time, 
-      modify_time,cart_ids,platform_type)
+      modify_time,cart_ids,platform_type,after_sale)
     values (#{memberId,jdbcType=BIGINT}, #{couponId,jdbcType=BIGINT}, #{orderSn,jdbcType=VARCHAR}, 
       #{createTime,jdbcType=TIMESTAMP}, #{memberUsername,jdbcType=VARCHAR}, #{totalAmount,jdbcType=DECIMAL}, 
       #{payAmount,jdbcType=DECIMAL}, #{freightAmount,jdbcType=DECIMAL}, #{promotionAmount,jdbcType=DECIMAL}, 
@@ -179,7 +180,7 @@
       #{receiverDetailAddress,jdbcType=VARCHAR}, #{note,jdbcType=VARCHAR}, #{confirmStatus,jdbcType=INTEGER}, 
       #{deleteStatus,jdbcType=INTEGER}, #{useIntegration,jdbcType=INTEGER}, #{paymentTime,jdbcType=TIMESTAMP}, 
       #{deliveryTime,jdbcType=TIMESTAMP}, #{receiveTime,jdbcType=TIMESTAMP}, #{commentTime,jdbcType=TIMESTAMP}, 
-      #{modifyTime,jdbcType=TIMESTAMP},#{cartIds},#{platformType})
+      #{modifyTime,jdbcType=TIMESTAMP},#{cartIds},#{platformType},#{afterSale})
   </insert>
   <insert id="insertSelective" parameterType="com.yonge.cooleshow.mbg.model.OmsOrder">
     <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
@@ -322,6 +323,9 @@
       <if test="platformType != null">
         platform_type,
       </if>
+      <if test="afterSale != null">
+        after_sale,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="memberId != null">
@@ -459,6 +463,9 @@
       <if test="platformType != null">
         #{platformType},
       </if>
+      <if test="afterSale != null">
+        #{afterSale},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.yonge.cooleshow.mbg.model.OmsOrderExample" resultType="java.lang.Long">
@@ -608,6 +615,9 @@
       <if test="record.platformType != null">
         platform_type = #{record.platformType},
       </if>
+      <if test="record.afterSale != null">
+        after_sale = #{record.afterSale},
+      </if>
     </set>
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -660,6 +670,7 @@
       comment_time = #{record.commentTime,jdbcType=TIMESTAMP},
       cart_ids = #{record.cartIds},
       platform_type = #{record.platformType},
+      after_sale = #{record.afterSale},
       modify_time = #{record.modifyTime,jdbcType=TIMESTAMP}
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -803,6 +814,9 @@
       <if test="platformType != null">
         platform_type = #{platformType},
       </if>
+      <if test="afterSale != null">
+        after_sale = #{afterSale},
+      </if>
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
@@ -852,6 +866,7 @@
       comment_time = #{commentTime,jdbcType=TIMESTAMP},
       cart_ids = #{cartIds},
       platform_type = #{platformType},
+      after_sale = #{afterSale},
       modify_time = #{modifyTime,jdbcType=TIMESTAMP}
     where id = #{id,jdbcType=BIGINT}
   </update>

+ 1 - 1
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/config/ResourceServerConfig.java

@@ -27,7 +27,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
             .authorizeRequests().antMatchers("/task/**").hasIpAddress("0.0.0.0/0")
                 .and()
                 .authorizeRequests().antMatchers("/wechat/*","/v2/api-docs", "/code/*","/payment/callback/**",
-                 "/order/paySuccess/test","/order/cancelUserOrder/test")
+                 "/order/paySuccess/test","/order/cancelUserOrder/test","/open/**","/task/**")
             .permitAll().anyRequest().authenticated().and().httpBasic();
     }
 

+ 2 - 1
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/open/OpenShareController.java

@@ -5,6 +5,7 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
+import com.yonge.cooleshow.portal.dto.ShareProductVo;
 import com.yonge.cooleshow.portal.dto.ShareProfitParam;
 import com.yonge.cooleshow.portal.service.PmsPortalProductService;
 import com.yonge.toolset.base.util.StringUtil;
@@ -33,7 +34,7 @@ public class OpenShareController extends BaseController {
     @ApiOperation(value = "老师商品分享分润")
     @PostMapping(value="/productProfit")
     @ResponseBody
-    public CommonResult shareProductProfit(@RequestBody ShareProfitParam param) {
+    public CommonResult<ShareProductVo> shareProductProfit(@RequestBody ShareProfitParam param) {
         SysUser sysUser = sysUserFeignService.queryUserById(param.getUserId());
         if (sysUser == null  || sysUser.getId() == null) {
             return CommonResult.failed("用户信息获取失败");

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

@@ -118,4 +118,12 @@ public interface OmsPortalOrderService {
      */
     @Transactional
     Integer autoReceive();
+
+    /**
+     * 设置分润,不可申请售后
+     *
+     * @return
+     */
+    @Transactional
+    Integer shareProfit();
 }

+ 45 - 4
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -508,10 +508,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         order.setStatus(3);
         order.setConfirmStatus(1);
         order.setReceiveTime(new Date());
-        int i = orderMapper.updateByPrimaryKey(order);
-
-        // 设置平台收入和分润 实际收款
-        setPromoterRecord(detail(orderId), PostStatusEnum.RECORDED);
+        orderMapper.updateByPrimaryKey(order);
 
     }
 
@@ -800,6 +797,50 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
 
     }
 
+    @Override
+    public Integer shareProfit() {
+        OmsOrderSetting omsOrderSetting = orderSettingMapper.selectByPrimaryKey(1L);
+        Integer finishOvertime = omsOrderSetting.getFinishOvertime();
+        LocalDateTime localDateTime = LocalDateTime.now().plusDays(-finishOvertime);
+        OmsOrderExample orderExample = new OmsOrderExample();
+        orderExample.createCriteria().andStatusEqualTo(3).andDeleteStatusEqualTo(0).andConfirmStatusEqualTo(1)
+                .andAfterSaleEqualTo(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.FinishReceiveOrder(omsOrder.getId());
+                                   }, 60L, TimeUnit.SECONDS);
+        }
+        return omsOrders.size();
+    }
+
+    private void FinishReceiveOrder(Long orderId) {
+
+        UmsMember member = memberService.getCurrentMember();
+        OmsOrder order = orderMapper.selectByPrimaryKey(orderId);
+        if (!member.getId().equals(order.getMemberId())) {
+            Asserts.fail("不能确认他人订单!");
+        }
+         if (order.getStatus() != 3) {
+            Asserts.fail("未确认收货!");
+        }
+        order.setStatus(4);
+        order.setAfterSale(1);
+        orderMapper.updateByPrimaryKey(order);
+
+
+        // 设置平台收入和分润 实际收款
+        setPromoterRecord(detail(orderId), PostStatusEnum.RECORDED);
+    }
+
 
     /***
      * 处理回调-支付成功

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

@@ -42,4 +42,14 @@ public class OrderTimeOutCancelTask {
         return HttpResponseResult.succeed();
     }
 
+
+    /**
+     * 收货多少天后分润
+     */
+    @GetMapping("/shareProfit")
+    public HttpResponseResult shareProfit(){
+        Integer count = portalOrderService.shareProfit();
+        LOGGER.info("自动分润:{}",count);
+        return HttpResponseResult.succeed();
+    }
 }

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

@@ -406,22 +406,26 @@ public class UserAccountServiceImpl extends ServiceImpl<UserAccountDao, UserAcco
     }
 
     public void mallTeacherRecordState(MallOrderItemDto shareDto) {
+
+        // 平台修改收入状态
+        if (shareDto.getStatus().equals(PostStatusEnum.RECORDED)) {
+            platformCashAccountRecordService.mallRecordedRecord(shareDto.getProductSkuId(),shareDto.getOrderSn(),GoodTypeEnum.MALL.getCode());
+
+        } else if (shareDto.getStatus().equals(PostStatusEnum.CANCEL)) {
+            platformCashAccountRecordService.cancelRecord(shareDto.getOrderSn(),GoodTypeEnum.MALL.getCode(),shareDto.getProductSkuId());
+        }
+
+
+        // 修改老师分润
         List<UserAccountRecord> list = userAccountRecordService.lambdaQuery()
-                .eq(UserAccountRecord::getOrderNo, shareDto.getOrderSn())
-                .eq(UserAccountRecord::getBizId, shareDto.getProductSkuId())
-                .list();
+                                                               .eq(UserAccountRecord::getOrderNo, shareDto.getOrderSn())
+                                                               .eq(UserAccountRecord::getBizId, shareDto.getProductSkuId())
+                                                               .list();
         if (CollectionUtils.isEmpty(list)) {
             return;
         }
         for (UserAccountRecord userAccount : list) {
-            this.accountChange(userAccount.getId(), shareDto.getStatus());
-            if (shareDto.getStatus().equals(PostStatusEnum.RECORDED)) {
-
-                platformCashAccountRecordService.mallRecordedRecord(shareDto.getProductSkuId(), shareDto.getOrderSn(), GoodTypeEnum.MALL.getCode());
-
-            } else if (shareDto.getStatus().equals(PostStatusEnum.CANCEL)) {
-                platformCashAccountRecordService.cancelRecord(shareDto.getOrderSn(), GoodTypeEnum.MALL.getCode(), shareDto.getProductSkuId());
-            }
+            this.accountChange(userAccount.getId(),shareDto.getStatus());
         }
     }
 
@@ -459,7 +463,7 @@ public class UserAccountServiceImpl extends ServiceImpl<UserAccountDao, UserAcco
         platformCashAccountRecordService.save(platformCashAccountRecord);
 
         //分润
-        if (null != shareDto.getPromoterId()) {
+        if (null != shareDto.getPromoterId() && !shareDto.getPromoterId().equals(shareDto.getUserId())) {
             //获取分润收益费率
             BigDecimal shareFeeRate = userOrderService.getShareFreeByGoodType(GoodTypeEnum.MALL);
             if (shareFeeRate.compareTo(BigDecimal.ZERO) > 0) {