Bläddra i källkod

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

wxd 1 månad sedan
förälder
incheckning
0f2436b328

+ 1 - 0
alien-entity/src/main/java/shop/alien/entity/store/LifeUser.java

@@ -121,4 +121,5 @@ public class LifeUser implements Serializable {
     @ApiModelProperty(value = "绑定他人邀请码")
     @TableField("bind_invite_code")
     private String bindInviteCode;
+
 }

+ 9 - 0
alien-entity/src/main/java/shop/alien/entity/store/LifeUserDynamics.java

@@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -112,4 +113,12 @@ public class LifeUserDynamics {
     @ApiModelProperty(value = "启用状态0-启用,1-禁用")
     @TableField("enable_status")
     private Integer enableStatus;
+
+    @ApiModelProperty(value = "订单GMV (达人发布动态使用的)")
+    @TableField("order_gmv")
+    private BigDecimal orderGmv;
+
+    @ApiModelProperty(value = "业务id")
+    @TableField("business_id")
+    private Integer businessId;
 }

+ 3 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/LifeUserDynamicsVo.java

@@ -68,4 +68,7 @@ public class LifeUserDynamicsVo extends LifeUserDynamics {
 
     @ApiModelProperty(value = "商家名称")
     private String storeName;
+
+    @ApiModelProperty(value = "商家评分")
+    private String scoreAvg;
 }

+ 4 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/LifeUserOrderVo.java

@@ -182,4 +182,8 @@ public class LifeUserOrderVo {
     @ApiModelProperty(value = "修改人ID")
     @TableField("updated_user_id")
     private Integer updatedUserId;
+
+    @ApiModelProperty(value = "用户GMV")
+    @TableField("orderGmv")
+    private Integer orderGmv;
 }

+ 3 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/StoreCommentVo.java

@@ -59,4 +59,7 @@ public class StoreCommentVo extends StoreComment {
 
     @ApiModelProperty(value = "商家or用户(0商家/1用户)")
     private Integer storeUserFlag;
+
+    private String storeUserName;
+    private String storeUserImg;
 }

+ 2 - 0
alien-entity/src/main/java/shop/alien/mapper/LifeUserDynamicsMapper.java

@@ -54,4 +54,6 @@ public interface LifeUserDynamicsMapper extends BaseMapper<LifeUserDynamics> {
 
     List<LifeUserDynamicsVo> getDynamicsDetail(@Param("id") Integer id);
 
+    List<LifeUserDynamicsVo> getExpertDynamicsDetail(@Param("id") Integer id);
+
 }

+ 23 - 0
alien-entity/src/main/resources/mapper/LifeUserDynamicsMapper.xml

@@ -88,4 +88,27 @@
         GROUP by dyna1.id order by dyna1.top_status desc, dyna1.top_time desc
     </select>
 
+    <select id="getExpertDynamicsDetail" resultType="shop.alien.entity.store.vo.LifeUserDynamicsVo">
+        SELECT
+        dy.*,
+        info.score_avg as scoreAvg,
+        info.store_name as storeName,
+        COUNT(comment.id) AS commentCount
+        FROM
+        life_user_dynamics AS dy
+        INNER JOIN life_user_expert_order AS expertOrder
+        ON dy.business_id = expertOrder.id
+        AND expertOrder.delete_flag = 0
+        INNER JOIN store_info AS info
+        ON expertOrder.store_id = info.id
+        AND info.delete_flag = 0
+        LEFT JOIN store_comment AS comment
+        ON comment.store_id = info.id
+        AND comment.delete_flag = 0
+        AND comment.business_type in ( 5 )
+        WHERE
+        dy.id = #{id}
+        AND dy.delete_flag = 0
+    </select>
+
 </mapper>

+ 3 - 2
alien-job/src/main/java/shop/alien/job/store/StoreMembershipCardJob.java

@@ -1,6 +1,7 @@
 package shop.alien.job.store;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -129,7 +130,7 @@ public class StoreMembershipCardJob {
             if (null != storeUser.getLogoutTime()) {
                 // 获取申请注销时间
                 Date logoutTime = storeUser.getLogoutTime();
-                // 获取申请注销 8 天后的时间
+                // 获取申请注销 8(7+1) 天后的时间 防止实际时间不到7天被删除 所以实际删除时间为申请注销时间往后推8天
                 Calendar calendar = Calendar.getInstance();
                 calendar.setTime(logoutTime);
                 calendar.add(Calendar.DAY_OF_YEAR, 8);
@@ -150,7 +151,7 @@ public class StoreMembershipCardJob {
             if (null != storeInfo.getLogoutTime()) {
                 // 获取申请注销时间
                 Date logoutTime = storeInfo.getLogoutTime();
-                // 获取申请注销 8 天后的时间
+                // 获取申请注销 8(7+1) 天后的时间 防止实际时间不到7天被删除 所以实际删除时间为申请注销时间往后推8天
                 Calendar calendar = Calendar.getInstance();
                 calendar.setTime(logoutTime);
                 calendar.add(Calendar.DAY_OF_YEAR, 8);

+ 22 - 0
alien-store/src/main/java/shop/alien/store/controller/LifeUserDynamicsController.java

@@ -236,4 +236,26 @@ public class LifeUserDynamicsController {
         LifeUserDynamicsVo lifeUserDynamicsVo = lifeUserDynamicsService.getDynamicsDetail(id);
         return R.data(lifeUserDynamicsVo);
     }
+
+    @ApiOperation("达人发布动态详情")
+    @ApiOperationSupport(order = 6)
+    @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "动态ID", dataType = "Integer", paramType = "query", required = true),})
+    @GetMapping("/getExpertDynamicsDetail")
+    public R<LifeUserDynamicsVo> getExpertDynamicsDetail(@RequestParam() Integer id) {
+        log.info("LifeUserDynamicsController.getDynamicsDetail?id={}", id);
+        LifeUserDynamicsVo lifeUserDynamicsVo = lifeUserDynamicsService.getExpertDynamicsDetail(id);
+        return R.data(lifeUserDynamicsVo);
+    }
+
+
+    @ApiOperation("GVM推荐用户完成支付")
+    @ApiOperationSupport(order = 7)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "expertId", value = "达人动态Id", dataType = "Integer", paramType = "query", required = true),
+            @ApiImplicitParam(name = "finalPrice", value = "最终付款金额", dataType = "String", paramType = "query", required = true)})
+    @GetMapping("/getOrderGmvUser")
+    public R getOrderGmvUser(@RequestParam() Integer expertId, @RequestParam() String finalPrice) {
+        log.info("LifeUserDynamicsController.getOrderGmvUser?expertId={}&finalPrice={}", expertId, finalPrice);
+        return R.data(lifeUserDynamicsService.countGvm(expertId, finalPrice));
+    }
 }

+ 53 - 0
alien-store/src/main/java/shop/alien/store/service/LifeUserDynamicsService.java

@@ -13,12 +13,15 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.ObjectUtils;
 import org.springframework.util.StringUtils;
+import shop.alien.entity.result.R;
 import shop.alien.entity.store.*;
 import shop.alien.entity.store.vo.LifePinglunVo;
 import shop.alien.entity.store.vo.LifeUserDynamicsVo;
+import shop.alien.entity.store.vo.LifeUserOrderVo;
 import shop.alien.entity.store.vo.StoreCommentVo;
 import shop.alien.mapper.*;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -53,6 +56,11 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
 
     private final StoreInfoMapper storeInfoMapper;
 
+    private final LifeUserExpertOrderMapper lifeUserExpertOrderMapper;
+
+    private final PromotionPackageService promotionPackageService;
+
+
     public int addLiulanCount(String id) {
         LambdaUpdateWrapper<LifeUserDynamics> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
         lambdaUpdateWrapper.eq(LifeUserDynamics::getId, id);
@@ -60,6 +68,7 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
         return lifeUserDynamicsMapper.update(null, lambdaUpdateWrapper);
     }
 
+
     public int setTopStatus(LifeUserDynamicsVo lifeUserDynamicsVo) {
         if(!StringUtils.isEmpty(lifeUserDynamicsVo.getId()) && !StringUtils.isEmpty(lifeUserDynamicsVo.getTopStatus())){
             LambdaUpdateWrapper<LifeUserDynamics> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
@@ -522,4 +531,48 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
         }
         return lifeUserDynamicsVo;
     }
+
+    public LifeUserDynamicsVo getExpertDynamicsDetail(Integer id) {
+        // 查询动态数据并按类型过滤
+        LifeUserDynamicsVo lifeUserDynamicsVo = new LifeUserDynamicsVo();
+        List<LifeUserDynamicsVo> lifeUserDynamicsVoList = lifeUserDynamicsMapper.getExpertDynamicsDetail(id);
+        if(!CollectionUtils.isEmpty(lifeUserDynamicsVoList)){
+            lifeUserDynamicsVo = lifeUserDynamicsVoList.get(0);
+            String imagePath = lifeUserDynamicsVo.getImagePath();
+            if(!StringUtils.isEmpty(imagePath)){
+                List<String> imagePathList = Arrays.asList(imagePath.split(","));
+                lifeUserDynamicsVo.setImagePathList(imagePathList);
+            }
+            //查询动态表中的 gvm和评论数是否满足当前达人订单规定值 都满足修改订单状态为已完成
+            LifeUserExpertOrder lifeUserExpertOrder = lifeUserExpertOrderMapper.selectOne(new LambdaQueryWrapper<LifeUserExpertOrder>().eq(LifeUserExpertOrder :: getId, lifeUserDynamicsVo.getBusinessId()));
+            if(lifeUserExpertOrder != null && lifeUserExpertOrder.getStatus()!= 2){
+                LifePromotionPackage lifePromotionPackage = promotionPackageService.getById(lifeUserExpertOrder.getPackageId());
+                if(lifeUserDynamicsVo.getOrderGmv().compareTo(lifeUserExpertOrder.getOrderGmv()) >= 0 && lifeUserDynamicsVo.getLiulanCount()>=Integer.parseInt(lifePromotionPackage.getPlayCount())){
+                    lifeUserExpertOrder.setStatus(2);
+                    lifeUserExpertOrderMapper.updateById(lifeUserExpertOrder);
+                }
+            }
+
+        }
+        return lifeUserDynamicsVo;
+    }
+
+    public R countGvm(Integer expertId, String finalPrice){
+        LifeUserDynamics lifeUserDynamics = lifeUserDynamicsMapper.selectOne(new LambdaQueryWrapper<LifeUserDynamics>().eq(LifeUserDynamics :: getId, expertId));
+        if(lifeUserDynamics != null){
+           BigDecimal price = new BigDecimal(finalPrice);
+           lifeUserDynamics.setOrderGmv(lifeUserDynamics.getOrderGmv().add(price));
+           lifeUserDynamicsMapper.updateById(lifeUserDynamics);
+        }
+        LifeUserExpertOrder lifeUserExpertOrder = lifeUserExpertOrderMapper.selectOne(new LambdaQueryWrapper<LifeUserExpertOrder>().eq(LifeUserExpertOrder :: getId, lifeUserDynamics.getBusinessId()));
+        if(lifeUserExpertOrder != null && lifeUserExpertOrder.getStatus() != 2){
+            LifePromotionPackage lifePromotionPackage = promotionPackageService.getById(lifeUserExpertOrder.getPackageId());
+            LifeUserDynamics lifeUserDynamics1 = lifeUserDynamicsMapper.selectOne(new LambdaQueryWrapper<LifeUserDynamics>().eq(LifeUserDynamics :: getId, expertId));
+            if(lifeUserDynamics1.getOrderGmv().compareTo(lifeUserExpertOrder.getOrderGmv()) >= 0 && lifeUserDynamics1.getLiulanCount()>=Integer.parseInt(lifePromotionPackage.getPlayCount())){
+                lifeUserExpertOrder.setStatus(2);
+                lifeUserExpertOrderMapper.updateById(lifeUserExpertOrder);
+            }
+        }
+        return R.success("请求成功");
+    }
 }

+ 31 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreCommentServiceImpl.java

@@ -195,6 +195,9 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
             if (StringUtils.isNotEmpty(records.get(i).getPhoneId())) {
                 if (records.get(i).getPhoneId().contains("store_")) {
                     storeCommentVo.setStoreUserFlag(0);
+                    StoreUser storeUser = storeUserMapper.selectOne(new LambdaQueryWrapper<StoreUser>().eq(StoreUser::getStoreId, records.get(i).getStoreId()));
+                    storeCommentVo.setStoreUserName(storeUser.getName());
+                    storeCommentVo.setStoreUserImg(storeUser.getHeadImg());
                 } else {
                     storeCommentVo.setStoreUserFlag(1);
                 }
@@ -248,8 +251,36 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
 //                        .eq(null != businessId && 6 == businessId, "a.business_id", businessId)
                         .eq("a.delete_flag", 0).eq("a.reply_id", child.getId()).orderByDesc("a.created_time");
                 List<StoreCommentVo> childComment2List = storeCommentMapper.getCommentList(childQueryCommentWrapper);
+
+                //商家用户
+                for (StoreCommentVo commentVo : childComment2List) {
+                    if (StringUtils.isNotEmpty(commentVo.getPhoneId())) {
+                        if (commentVo.getPhoneId().contains("store_")) {
+                            commentVo.setStoreUserFlag(0);
+                            StoreUser storeUser = storeUserMapper.selectOne(new LambdaQueryWrapper<StoreUser>().eq(StoreUser::getStoreId, child.getStoreId()));
+                            commentVo.setStoreUserName(storeUser.getName());
+                            commentVo.setStoreUserImg(storeUser.getHeadImg());
+                        } else {
+                            commentVo.setStoreUserFlag(1);
+                        }
+                    }
+                }
+
                 child.setStoreComment(childComment2List);
                 storeCommentVo.setCommitCount(storeCommentVo.getCommitCount() + childComment2List.size());
+
+                //商家用户
+                if (StringUtils.isNotEmpty(child.getPhoneId())) {
+                    if (child.getPhoneId().contains("store_")) {
+                        child.setStoreUserFlag(0);
+                        StoreUser storeUser = storeUserMapper.selectOne(new LambdaQueryWrapper<StoreUser>().eq(StoreUser::getStoreId, child.getStoreId()));
+                        child.setStoreUserName(storeUser.getName());
+                        child.setStoreUserImg(storeUser.getHeadImg());
+                    } else {
+                        child.setStoreUserFlag(1);
+                    }
+                }
+
             });
             //筛选商家评论
             List<StoreCommentVo> storeCommentList = new ArrayList<>();