Selaa lähdekoodia

Merge remote-tracking branch 'origin/master'

lyx 2 kuukautta sitten
vanhempi
commit
2bf8afa1fe

+ 8 - 0
alien-entity/src/main/java/shop/alien/entity/second/SecondTradeRecord.java

@@ -135,6 +135,14 @@ public class SecondTradeRecord extends Model<SecondTradeRecord> {
     @TableField("cancel_reason_supplement")
     private String cancelReasonSupplement;
 
+    @ApiModelProperty(value = "失效状态(平台端统计用)  0-未失效  1-已失效")
+    @TableField("failure_flag")
+    private String failureFlag;
+
+    @ApiModelProperty(value = "失效原因")
+    @TableField("failure_reason")
+    private String failureReason;
+
     @ApiModelProperty(value = "删除标记  0:未删除  1:已删除")
     @TableField("delete_flag")
     @TableLogic

+ 3 - 0
alien-entity/src/main/java/shop/alien/entity/second/vo/SecondTradeRecordVo.java

@@ -39,6 +39,9 @@ public class SecondTradeRecordVo extends SecondTradeRecord {
     @ApiModelProperty(value = "商品标题")
     private String title;
 
+    @ApiModelProperty(value = "用户id")
+    private Integer userId;
+
     @TableField(exist = false)
     @ApiModelProperty(value = "用户电话")
     private String userPhone;

+ 32 - 1
alien-entity/src/main/java/shop/alien/mapper/second/SecondTradeRecordMapper.java

@@ -1,6 +1,7 @@
 package shop.alien.mapper.second;
 
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -13,6 +14,7 @@ import shop.alien.entity.second.SecondTradeRecord;
 import shop.alien.entity.second.vo.SecondTradeRecordVo;
 import shop.alien.entity.store.vo.LifeFansVo;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -36,9 +38,12 @@ public interface SecondTradeRecordMapper extends BaseMapper<SecondTradeRecord> {
 
     @Select("select trade.id, trade.trade_no, trade.goods_id, goods.title, goods.home_image, goods.price, trade.transaction_amount, trade.trade_status, " +
             "trade.transaction_time, trade.seller_id, trade.transaction_latitude_longitude, trade.transaction_latitude_longitude_address, " +
-            "trade.transaction_location, trade.created_user_id, if (now() >= trade.transaction_time, 1, 0) timeOutFlag " +
+            "trade.transaction_location, trade.created_user_id, trade.failure_flag, trade.failure_reason, if (now() >= trade.transaction_time, 1, 0) timeOutFlag, " +
+            "buyer.user_name buyerName, buyer.user_phone buyerPhone, seller.user_name sellerName, seller.user_phone sellerPhone " +
             "from second_trade_record trade " +
             "left join second_goods_record goods on goods.id = trade.goods_record_id " +
+            "left join life_user buyer on buyer.id = trade.buyer_id " +
+            "left join life_user seller on seller.id = trade.seller_id  " +
             "${ew.customSqlSegment} ")
     IPage<SecondTradeRecordVo> getTradeRecordPage(IPage<SecondTradeRecord> page, @Param(Constants.WRAPPER) QueryWrapper<SecondTradeRecord> wrapper);
 
@@ -48,4 +53,30 @@ public interface SecondTradeRecordMapper extends BaseMapper<SecondTradeRecord> {
             "left join life_user seller on seller.id = trade.seller_id " +
             "where trade.id = #{id}")
     SecondTradeRecordVo getTradeRecordById(@Param("id") Integer id);
+
+    @Select("with record as ( " +
+            "    select buyer_id userId, count(1) num, 'buyer' flag " +
+            "    from second_trade_record " +
+            "    where delete_flag = 0 and trade_status = 4 and failure_flag = 0 " +
+            "    and transaction_time >= #{beginTime} and transaction_time <= #{endTime} " +
+            "    group by buyer_id " +
+            "    union all " +
+            "    select seller_id userId, count(1) num, 'seller' flag " +
+            "    from second_trade_record " +
+            "    where delete_flag = 0 and trade_status = 4 and failure_flag = 0 " +
+            "    and transaction_time >= #{beginTime} and transaction_time <= #{endTime} " +
+            "    group by seller_id " +
+            ") " +
+            "select a.*, ifnull(b.num, 0) buyer, ifnull(c.num, 0) seller, user.user_name userName, concat('user_', user.user_phone) phoneId " +
+            "from ( " +
+            "    select userId, sum(num) num " +
+            "    from record " +
+            "    group by userId " +
+            ") a " +
+            "left join record b on a.userId = b.userId and b.flag = 'buyer' " +
+            "left join record c on a.userId = c.userId and c.flag = 'seller' " +
+            "join life_user user on user.id = a.userId and user.delete_flag = 0 " +
+            "order by a.num desc " +
+            "limit 20 ")
+    List<JSONObject> getRankingList(@Param("beginTime") String beginTime, @Param("endTime") String endTime);
 }

+ 29 - 2
alien-second/src/main/java/shop/alien/second/platform/PlatformSecondTradeController.java

@@ -1,5 +1,6 @@
 package shop.alien.second.platform;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import io.swagger.annotations.*;
 import lombok.RequiredArgsConstructor;
@@ -9,6 +10,7 @@ import shop.alien.entity.result.R;
 import shop.alien.entity.second.vo.SecondTradeRecordVo;
 import shop.alien.second.service.PlatformSecondTradeService;
 
+import java.util.Date;
 import java.util.List;
 
 @Slf4j
@@ -22,7 +24,7 @@ public class PlatformSecondTradeController {
 
     private final PlatformSecondTradeService secondTradeRecordService;
 
-    @ApiOperation("交易列表")
+    @ApiOperation("交易列表(分页)")
     @ApiOperationSupport(order = 1)
     @PostMapping("/getTradeRecordPage")
     public R<IPage<SecondTradeRecordVo>> getTradeRecordPage(@RequestBody SecondTradeRecordVo vo) throws Exception {
@@ -30,12 +32,37 @@ public class PlatformSecondTradeController {
         return R.data(secondTradeRecordService.getTradeRecordPage(vo));
     }
 
-    @ApiOperation("交易详情")
+    @ApiOperation("交易列表(不分页)")
     @ApiOperationSupport(order = 2)
+    @GetMapping("/getTradeRecordList")
+    public R<List<SecondTradeRecordVo>> getTradeRecordList(Integer userId, String beginTime, String endTime) throws Exception {
+        log.info("PlatformSecondTradeController.getTradeRecordList?userId={},beginTime={},endTime={}", userId, beginTime, endTime);
+        return R.data(secondTradeRecordService.getTradeRecordList(userId, beginTime, endTime));
+    }
+
+    @ApiOperation("交易详情")
+    @ApiOperationSupport(order = 3)
     @GetMapping("/getTradeRecordById")
     public R<SecondTradeRecordVo> getTradeRecordById(Integer id) throws Exception {
         log.info("PlatformSecondTradeController.getTradeRecordById?id={}",id);
         return R.data(secondTradeRecordService.getTradeRecordById(id));
     }
 
+    @ApiOperation("排行榜")
+    @ApiOperationSupport(order = 4)
+    @GetMapping("/getRankingList")
+    public R<List<JSONObject>> getRankingList(String beginTime, String endTime) throws Exception {
+        log.info("PlatformSecondTradeController.getRankingList");
+        return R.data(secondTradeRecordService.getRankingList(beginTime, endTime));
+    }
+
+    @ApiOperation("交易失效")
+    @ApiOperationSupport(order = 5)
+    @GetMapping("/setTradeFailure")
+    public R<Boolean> setTradeFailure(Integer tradeId, String failureReason) throws Exception {
+        log.info("PlatformSecondTradeController.setTradeFailure?tradeId={},failureReason={}", tradeId, failureReason);
+        secondTradeRecordService.setTradeFailure(tradeId, failureReason);
+        return R.success("操作成功");
+    }
+
 }

+ 8 - 0
alien-second/src/main/java/shop/alien/second/service/PlatformSecondTradeService.java

@@ -7,12 +7,20 @@ import org.springframework.context.annotation.Lazy;
 import shop.alien.entity.second.SecondTradeRecord;
 import shop.alien.entity.second.vo.SecondTradeRecordVo;
 
+import java.util.Date;
 import java.util.List;
 
 public interface PlatformSecondTradeService extends IService<SecondTradeRecord> {
 
     IPage<SecondTradeRecordVo> getTradeRecordPage(SecondTradeRecordVo vo) throws Exception;
 
+    List<SecondTradeRecordVo> getTradeRecordList(Integer userId, String beginTime, String endTime) throws Exception;
+
     SecondTradeRecordVo getTradeRecordById(Integer id) throws Exception;
+
     List<JSONObject> getOperationJsonList(Integer tradeId) throws Exception;
+
+    List<JSONObject> getRankingList(String beginTime, String endTime) throws Exception;
+
+    void setTradeFailure(Integer tradeId, String failureReason) throws Exception;
 }

+ 53 - 4
alien-second/src/main/java/shop/alien/second/service/impl/PlatformSecondTradeServiceImpl.java

@@ -1,8 +1,10 @@
 package shop.alien.second.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson2.JSONObject;
 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 com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -20,12 +22,11 @@ import shop.alien.mapper.second.SecondTradeRecordMapper;
 import shop.alien.second.service.PlatformSecondTradeService;
 import shop.alien.second.service.SecondGoodsService;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -58,6 +59,28 @@ public class PlatformSecondTradeServiceImpl extends ServiceImpl<SecondTradeRecor
     }
 
     @Override
+    public List<SecondTradeRecordVo> getTradeRecordList(Integer userId, String beginTime, String endTime) throws Exception {
+        try {
+            Page<SecondTradeRecord> page = new Page<>(1, 1000000);
+            QueryWrapper<SecondTradeRecord> wrapper = new QueryWrapper<>();
+            wrapper.eq("trade.delete_flag", 0);
+            wrapper.eq("trade.trade_status", 4);
+            wrapper.ge("trade.transaction_time", StringUtils.isEmpty(beginTime) ? "1970-01-01 00:00:00" : beginTime);
+            wrapper.le("trade.transaction_time", StringUtils.isEmpty(endTime) ? "9999-12-31 23:59:59" : endTime);
+            wrapper.apply(" (trade.buyer_id = " + userId + " or trade.seller_id = " + userId + ") ");
+            wrapper.orderByDesc("trade.created_time");
+            List<SecondTradeRecordVo> voList = secondTradeRecordMapper.getTradeRecordPage(page, wrapper).getRecords();
+            for (SecondTradeRecordVo item : voList) {
+                item.setOperationJsonList(getOperationJsonList(item.getId()));
+            }
+            return voList;
+        } catch (Exception e) {
+            log.error("PlatformSecondTradeServiceImpl.getTradeRecordList(): Error Msg={}", e.getMessage());
+            throw new Exception(e);
+        }
+    }
+
+    @Override
     public SecondTradeRecordVo getTradeRecordById(Integer id) throws Exception {
         try {
             // 交易信息
@@ -254,4 +277,30 @@ public class PlatformSecondTradeServiceImpl extends ServiceImpl<SecondTradeRecor
         }
     }
 
+    @Override
+    public List<JSONObject> getRankingList(String beginTime, String endTime) throws Exception {
+        try {
+            if (StringUtils.isBlank(beginTime)) beginTime = "1970-01-01 00:00:00";
+            if (StringUtils.isBlank(endTime)) endTime = "9999-12-31 23:59:59";
+            return secondTradeRecordMapper.getRankingList(beginTime, endTime);
+        } catch (Exception e) {
+            log.error("PlatformSecondTradeServiceImpl.getRankingList Error Msg={}", e.getMessage());
+            throw new Exception(e);
+        }
+    }
+
+    @Override
+    public void setTradeFailure(Integer tradeId, String failureReason) throws Exception {
+        try {
+            LambdaUpdateWrapper<SecondTradeRecord> wrapper = new LambdaUpdateWrapper<>();
+            wrapper.eq(SecondTradeRecord::getId, tradeId);
+            wrapper.set(SecondTradeRecord::getFailureFlag, 1);
+            wrapper.set(SecondTradeRecord::getFailureReason, failureReason);
+            secondTradeRecordMapper.update(null, wrapper);
+        } catch (Exception e) {
+            log.error("PlatformSecondTradeServiceImpl.setTradeFailure Error Msg={}", e.getMessage());
+            throw new Exception(e);
+        }
+    }
+
 }

+ 9 - 9
alien-store/src/main/java/shop/alien/store/service/impl/LifeDiscountCouponServiceImpl.java

@@ -676,7 +676,7 @@ public class LifeDiscountCouponServiceImpl extends ServiceImpl<LifeDiscountCoupo
         for (LifeDiscountCouponUser lifeDiscountCouponUser : lifeDiscountCouponUserIPage.getRecords()) {
             LifeDiscountCoupon lifeDiscountCouponOne = lifeDiscountCoupons.stream().filter(lifeDiscountCoupon -> lifeDiscountCoupon.getId().equals(lifeDiscountCouponUser.getCouponId())).collect(Collectors.toList()).get(0);
             StoreInfo storeInfoOne = null;
-            if (!storeInfoList.isEmpty()) {
+            if (!storeInfoList.isEmpty() && !StringUtils.isEmpty(lifeDiscountCouponOne.getStoreId())) {
                 storeInfoOne = storeInfoList.stream().filter(storeInfo -> storeInfo.getId().toString().equals(lifeDiscountCouponOne.getStoreId())).collect(Collectors.toList()).get(0);
             }
             LifeDiscountCouponVo lifeDiscountCouponVo = new LifeDiscountCouponVo();
@@ -770,7 +770,7 @@ public class LifeDiscountCouponServiceImpl extends ServiceImpl<LifeDiscountCoupo
                         lifeDiscountCouponVo.setStatus(Integer.parseInt(DiscountCouponEnum.HAVE_NOT_STARTED.getValue()));
                     } else if (lifeDiscountCoupon.getGetStatus() == null || lifeDiscountCoupon.getGetStatus().toString().equals(DiscountCouponEnum.NO_GET.getValue())) {
                         lifeDiscountCouponVo.setStatus(Integer.parseInt(DiscountCouponEnum.SUSPEND_GET.getValue()));
-                    }  else if (endResult > 0) {
+                    } else if (endResult > 0) {
                         lifeDiscountCouponVo.setStatus(Integer.parseInt(DiscountCouponEnum.FINISHED.getValue()));
                     } else if (startResult >= 0 && endResult <= 0) {
                         lifeDiscountCouponVo.setStatus(Integer.parseInt(DiscountCouponEnum.UNDER_WAY.getValue()));
@@ -1095,13 +1095,13 @@ public class LifeDiscountCouponServiceImpl extends ServiceImpl<LifeDiscountCoupo
     @Override
     public boolean addPlatformCoupon(LifeDiscountCoupon lifeDiscountCoupon) {
         lifeDiscountCoupon.setStartDate(LocalDate.now());
-        if (null == lifeDiscountCoupon.getExpirationDate()) {
+        if (null == lifeDiscountCoupon.getSpecifiedDay()) {
             return false;
         }
-        lifeDiscountCoupon.setEndDate(LocalDate.now().plusDays(lifeDiscountCoupon.getExpirationDate()));
+        lifeDiscountCoupon.setEndDate(LocalDate.now().plusDays(Long.parseLong(lifeDiscountCoupon.getSpecifiedDay())));
         lifeDiscountCoupon.setType(3);
         lifeDiscountCoupon.setGetStatus(1);
-        lifeDiscountCoupon.setMinimumSpendingAmount(BigDecimal.ZERO);
+//        lifeDiscountCoupon.setMinimumSpendingAmount(BigDecimal.ZERO);
         return this.save(lifeDiscountCoupon);
     }
 
@@ -1132,7 +1132,7 @@ public class LifeDiscountCouponServiceImpl extends ServiceImpl<LifeDiscountCoupo
             lifeDiscountCouponUser.setUserId(userId);
             lifeDiscountCouponUser.setCouponId(couponId);
             lifeDiscountCouponUser.setReceiveTime(new Date());
-            lifeDiscountCouponUser.setExpirationTime(LocalDate.now().plusDays(lifeDiscountCoupon.getExpirationDate()));
+            lifeDiscountCouponUser.setExpirationTime(LocalDate.now().plusDays(Long.parseLong(lifeDiscountCoupon.getSpecifiedDay())));
             lifeDiscountCouponUser.setStatus(0);
             lifeDiscountCouponUser.setDeleteFlag(0);
             lifeDiscountCouponUser.setCreatedTime(new Date());
@@ -1190,14 +1190,14 @@ public class LifeDiscountCouponServiceImpl extends ServiceImpl<LifeDiscountCoupo
     @Override
     public List<LifeDiscountCoupon> getPlatformCoupon(Integer couponId, Integer couponType) {
         LambdaQueryWrapper<LifeDiscountCoupon> lifeDiscountCouponLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        if(couponId != null){
+        if (couponId != null) {
             lifeDiscountCouponLambdaQueryWrapper.eq(LifeDiscountCoupon::getId, couponId);
         }
-        if(couponType != null){
+        if (couponType != null) {
             lifeDiscountCouponLambdaQueryWrapper.eq(LifeDiscountCoupon::getType, couponType);
         }
         lifeDiscountCouponLambdaQueryWrapper.eq(LifeDiscountCoupon::getDeleteFlag, 0);
-        lifeDiscountCouponLambdaQueryWrapper.eq(LifeDiscountCoupon::getGetStatus,1);
+        lifeDiscountCouponLambdaQueryWrapper.eq(LifeDiscountCoupon::getGetStatus, 1);
         return lifeDiscountCouponMapper.selectList(lifeDiscountCouponLambdaQueryWrapper);
     }
 }

+ 5 - 2
alien-store/src/main/java/shop/alien/store/service/impl/StoreCustomerServiceServiceImpl.java

@@ -87,8 +87,11 @@ public class StoreCustomerServiceServiceImpl extends ServiceImpl<StoreCustomerSe
     @Override
     public List<AiIntelligentAssistant> saveAiIntelligentAssistant(List<AiIntelligentAssistant> aiIntelligentAssistants) {
         for (AiIntelligentAssistant aiIntelligentAssistant : aiIntelligentAssistants) {
-            aiIntelligentAssistant.setCreatedTime(new Date());
-            aiIntelligentAssistant.setUpdatedTime(new Date());
+            aiIntelligentAssistant.setDeleteFlag(0);
+            if (aiIntelligentAssistant.getType() != 0) {
+                aiIntelligentAssistant.setCreatedTime(new Date());
+                aiIntelligentAssistant.setUpdatedTime(new Date());
+            }
         }
         aiIntelligentAssistantMapper.insertList(aiIntelligentAssistants);
         return aiIntelligentAssistants;

+ 11 - 8
alien-store/src/main/java/shop/alien/store/service/impl/StoreUserServiceImpl.java

@@ -104,15 +104,18 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
         lambdaQueryWrapper.eq(StoreUser::getPhone, phone);
         StoreUser user = this.getOne(lambdaQueryWrapper);
         StoreUserVo storeUserVo = new StoreUserVo();
-        if (user.getStatus() == -1) {
-            LocalDateTime localDateTime = user.getLogoutTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
-            LocalDateTime future = localDateTime.plusDays(7);
-            LocalDateTime now = LocalDateTime.now();
-            Duration duration = Duration.between(now, future);
-            long correct = duration.toMillis();
-            storeUserVo.setCountdown(correct);
+        if(user != null){
+            if (user.getStatus() == -1) {
+                LocalDateTime localDateTime = user.getLogoutTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+                LocalDateTime future = localDateTime.plusDays(7);
+                LocalDateTime now = LocalDateTime.now();
+                Duration duration = Duration.between(now, future);
+                long correct = duration.toMillis();
+                storeUserVo.setCountdown(correct);
+            }
+        }else {
+            return new StoreUserVo();
         }
-        if (null == user) return new StoreUserVo();
         BeanUtils.copyProperties(user, storeUserVo);
         storeUserVo.setMoneyStr(new BigDecimal(storeUserVo.getMoney()).divide(new BigDecimal(100), 2, RoundingMode.DOWN).toString());
         return storeUserVo;