Selaa lähdekoodia

Merge branch 'sit' of alien/alien_cloud into store-plantform

wxd 1 kuukausi sitten
vanhempi
commit
3364135055

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

@@ -68,4 +68,8 @@ public class ActivityInviteLog {
     @TableField("delete_flag")
     @TableLogic
     private Integer deleteFlag;
+
+    @ApiModelProperty(value = "发放状态, 0:未发放, 1:已发放")
+    @TableField("distribution_status")
+    private Integer distributionStatus;
 }

+ 1 - 1
alien-entity/src/main/resources/mapper/LifeUserOrderMapper.xml

@@ -95,7 +95,7 @@
         WHEN 6 THEN '退款失败'
         WHEN 7 THEN '已完成'
         END AS order_status_value,
-        luo.quan_id,luo.refund_time total_refund_time,luo.expert_order_id,
+        luo.quan_id,luo.refund_time total_refund_time,luo.expert_order_id,luo.order_appraise,
         tc.*,
         ldc.nominal_value,ldc.type,
         lu.user_phone,lu.user_name,lu.id user_id,

+ 30 - 4
alien-store/src/main/java/shop/alien/store/controller/AliController.java

@@ -10,10 +10,11 @@ import org.springframework.web.multipart.MultipartFile;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.LifeUser;
 import shop.alien.entity.store.StoreAliPayLog;
+import shop.alien.entity.store.StoreInfo;
 import shop.alien.entity.store.StoreUser;
-import shop.alien.store.config.BaseRedisService;
 import shop.alien.store.service.AliService;
 import shop.alien.store.service.LifeUserService;
+import shop.alien.store.service.StoreInfoService;
 import shop.alien.store.service.StoreUserService;
 import shop.alien.store.util.ali.AliApi;
 import shop.alien.store.util.ali.AliSms;
@@ -26,6 +27,8 @@ import javax.servlet.http.HttpServletResponse;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * @author ssk
@@ -57,6 +60,8 @@ public class AliController {
 
     private final LifeUserService lifeUserService;
 
+    private final StoreInfoService storeInfoService;
+
     @ApiOperation("阿里回调")
     @ApiOperationSupport(order = 1)
     @GetMapping("/notify")
@@ -75,11 +80,32 @@ public class AliController {
     @GetMapping("/getIdInfo")
     public R getIdInfo(@RequestParam("name") String name, @RequestParam("idCard") String idCard, @RequestParam("appType") Integer appType) {
         log.info("AliController.getIdInfo?name={}&idCard={}", name, idCard);
-        int size;
+        int size = 0;
         if (appType == 0) {
-            size = lifeUserService.list(new LambdaQueryWrapper<LifeUser>().eq(LifeUser::getIdCard, idCard).eq(LifeUser::getRealName, name)).size();
+            //根据身份查询未注销的用户
+            size = lifeUserService
+                    .list(new LambdaQueryWrapper<LifeUser>()
+                            .eq(LifeUser::getIdCard, idCard)
+                            .eq(LifeUser::getRealName, name)
+                            .eq(LifeUser::getLogoutFlag, 0))
+                    .size();
         } else {
-            size = storeUserService.list(new LambdaQueryWrapper<StoreUser>().eq(StoreUser::getIdCard, idCard).eq(StoreUser::getName, name)).size();
+            //根据身份查询已入住或审核中的商家
+            List<StoreUser> storeUserList = storeUserService
+                    .list(new LambdaQueryWrapper<StoreUser>()
+                            .eq(StoreUser::getIdCard, idCard)
+                            .eq(StoreUser::getName, name));
+            List<Integer> storeIds = storeUserList.stream()
+                    .map(StoreUser::getStoreId)
+                    .filter(Objects::nonNull)
+                    .collect(Collectors.toList());
+            if (!storeIds.isEmpty()) {
+                size = storeInfoService
+                        .list(new LambdaQueryWrapper<StoreInfo>()
+                                .in(StoreInfo::getId, storeIds)
+                                .notIn(StoreInfo::getStoreApplicationStatus, 2))
+                        .size();
+            }
         }
         if (size > 0) {
             return R.fail("该身份证已实名认证过");

+ 2 - 0
alien-store/src/main/java/shop/alien/store/service/ActivityInviteConfigService.java

@@ -43,4 +43,6 @@ public interface ActivityInviteConfigService extends IService<ActivityInviteConf
 
     String bindInviteCode(Integer invitedUserId, String inviteCode);
 
+    boolean distributionInviteReward(String invitedUserId, int inviteCondition);
+
 }

+ 2 - 2
alien-store/src/main/java/shop/alien/store/service/LifeUserOrderService.java

@@ -1188,7 +1188,7 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
                 buyLimit = Integer.parseInt(lifeGroupBuyMain.getQuotaValue());
                 // 已购数量
                 buyCount = orderCouponMiddleMapper.selectCount(new QueryWrapper<OrderCouponMiddle>().eq("coupon_id", couponId).notIn("status", OrderStatusEnum.CANCEL.getStatus(), OrderStatusEnum.REFUND.getStatus())
-                        .inSql("order_id", "select order_id from life_user_order where user_id = " + userId + " and store_id = " + storeId));
+                        .inSql("order_id", "select id from life_user_order where user_id = " + userId + " and store_id = " + storeId));
             }
             // 库存 inventory_num
             stockQty = lifeGroupBuyMain.getInventoryNum();
@@ -1201,7 +1201,7 @@ public class LifeUserOrderService extends ServiceImpl<LifeUserOrderMapper, LifeU
             buyLimit = Integer.parseInt(lifeCoupon.getPurchaseLimitCode());
             // 已购数量
             buyCount = orderCouponMiddleMapper.selectCount(new QueryWrapper<OrderCouponMiddle>().eq("coupon_id", couponId).notIn("status", OrderStatusEnum.CANCEL.getStatus(), OrderStatusEnum.REFUND.getStatus())
-                    .inSql("order_id", "select order_id from life_user_order where user_id = " + userId + " and store_id = " + storeId));
+                    .inSql("order_id", "select id from life_user_order where user_id = " + userId + " and store_id = " + storeId));
             stockQty = lifeCoupon.getSingleQty();
             endTime = lifeCoupon.getEndDate();
         } else {

+ 70 - 0
alien-store/src/main/java/shop/alien/store/service/impl/ActivityInviteConfigServiceImpl.java

@@ -3,6 +3,7 @@ package shop.alien.store.service.impl;
 import com.alibaba.nacos.common.utils.CollectionUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
@@ -11,6 +12,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import shop.alien.entity.result.R;
 import shop.alien.entity.store.*;
 import shop.alien.entity.store.vo.ActivityInviteConfigVo;
 import shop.alien.entity.store.vo.ActivityInviteInfoVo;
@@ -30,6 +32,8 @@ import java.time.ZoneId;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
@@ -283,6 +287,7 @@ public class ActivityInviteConfigServiceImpl extends ServiceImpl<ActivityInviteC
                    activityInviteLog.setInvitedRewardCoupon(activityInviteConfig.getInvitedRewardCoupon());
                    activityInviteLog.setInvitedRewardPoint(activityInviteConfig.getInvitedRewardPoint());
                    activityInviteLog.setInviteTime(Date.from(Instant.now()));
+                   activityInviteLog.setDistributionStatus(0);
                    activityInviteLogMapper.insert(activityInviteLog);
 
                    if(activityInviteConfig.getInviteRewardType() == 2){
@@ -308,4 +313,69 @@ public class ActivityInviteConfigServiceImpl extends ServiceImpl<ActivityInviteC
         }
         return "参数异常";
     }
+
+    public boolean distributionInviteReward(String invitedUserId, int inviteCondition){
+
+        LambdaQueryWrapper<ActivityInviteLog> activityInviteLogLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        activityInviteLogLambdaQueryWrapper.eq(ActivityInviteLog::getInvitedUserId, invitedUserId);
+        activityInviteLogLambdaQueryWrapper.eq(ActivityInviteLog::getDeleteFlag, 0);
+        activityInviteLogLambdaQueryWrapper.eq(ActivityInviteLog::getDistributionStatus, 0);
+
+        // 未发放的邀请记录
+        List<ActivityInviteLog> activityInviteLogList = activityInviteLogMapper.selectList(activityInviteLogLambdaQueryWrapper);
+        if(CollectionUtils.isEmpty(activityInviteLogList)){
+            return false;
+        }
+
+        List<Integer> logIdList = activityInviteLogList.stream()
+                .map(ActivityInviteLog::getId)
+                .collect(Collectors.toList());
+        if(CollectionUtils.isEmpty(logIdList)){
+            return false;
+        }
+
+        // 邀请记录对应的活动
+        List<Integer> activityIdList = activityInviteLogList.stream()
+                .map(ActivityInviteLog::getActivityId)
+                .collect(Collectors.toList());
+        if(CollectionUtils.isEmpty(activityIdList)){
+            return false;
+        }
+        List<ActivityInviteConfig> activityInviteConfigList =  activityInviteConfigMapper.selectBatchIds(activityIdList);
+        if(CollectionUtils.isEmpty(activityInviteConfigList)){
+            return false;
+        }
+
+        Map<Integer, Integer> inviteConditionMap = activityInviteConfigList.stream()
+                .collect(Collectors.toMap(
+                        ActivityInviteConfig::getId,
+                        ActivityInviteConfig::getInviteCondition
+                ));
+
+        for(ActivityInviteLog activityInviteLog : activityInviteLogList){
+            Integer activityId = activityInviteLog.getActivityId();
+            if(inviteConditionMap.containsKey(activityId)){
+                Integer inviteConditionValue = inviteConditionMap.get(activityId);
+                if(inviteConditionValue != null && !inviteConditionValue.equals(inviteCondition)){
+                    continue;
+                }
+               if(activityInviteLog.getInviteRewardType() == 2){
+                   userPointService.addPoint(activityInviteLog.getInviteUserId(), activityInviteLog.getInviteRewardPoint());
+               } else if(activityInviteLog.getInviteRewardType() == 1 && activityInviteLog.getInviteRewardCoupon() > 0){
+                   lifeDiscountCouponService.issuePlatformCoupon(Collections.singletonList(activityInviteLog.getInviteUserId()), activityInviteLog.getInviteRewardCoupon());
+               }
+               if(activityInviteLog.getInvitedRewardType() == 2){
+                   userPointService.addPoint(activityInviteLog.getInvitedUserId(), activityInviteLog.getInvitedRewardPoint());
+               } else if (activityInviteLog.getInvitedRewardType() == 1 && activityInviteLog.getInvitedRewardCoupon() > 0) {
+                   lifeDiscountCouponService.issuePlatformCoupon(Collections.singletonList(activityInviteLog.getInvitedUserId()), activityInviteLog.getInvitedRewardCoupon());
+               }
+
+            }
+        }
+        LambdaUpdateWrapper<ActivityInviteLog> activityInviteLogLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+        activityInviteLogLambdaUpdateWrapper.in(ActivityInviteLog::getId, logIdList);
+        activityInviteLogLambdaUpdateWrapper.set(ActivityInviteLog::getDistributionStatus, 1);
+        activityInviteLogMapper.update(null, activityInviteLogLambdaUpdateWrapper);
+        return true;
+    }
 }

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

@@ -663,10 +663,10 @@ public class StoreCommentServiceImpl extends ServiceImpl<StoreCommentMapper, Sto
             double serviceScore = (total == 0 ? 0 : storeInfoScoreVo.getServiceScore() / total);
             StoreInfo storeInfo = new StoreInfo();
             storeInfo.setId(storeId);
-            storeInfo.setScoreAvg(scoreAvg);
-            storeInfo.setTasteScore(tasteScore);
-            storeInfo.setEnScore(enScore);
-            storeInfo.setServiceScore(serviceScore);
+            storeInfo.setScoreAvg(new BigDecimal(scoreAvg).setScale(2, RoundingMode.HALF_UP).doubleValue());
+            storeInfo.setTasteScore(new BigDecimal(tasteScore).setScale(2, RoundingMode.HALF_UP).doubleValue());
+            storeInfo.setEnScore(new BigDecimal(enScore).setScale(2, RoundingMode.HALF_UP).doubleValue());
+            storeInfo.setServiceScore(new BigDecimal(serviceScore).setScale(2, RoundingMode.HALF_UP).doubleValue());
             storeInfoMapper.updateById(storeInfo);
             StoreUser storeUser = storeUserMapper.selectOne(new LambdaQueryWrapper<StoreUser>().eq(StoreUser::getStoreId, storeInfo.getId()).eq(StoreUser::getDeleteFlag, 0));