Browse Source

Merge branch 'dev_recycle' into test

Mr.qian 1 tháng trước cách đây
mục cha
commit
d5755fec5a

+ 35 - 0
cif-api/src/main/java/com/txz/cif/dto/RecycleInfoDTO.java

@@ -0,0 +1,35 @@
+package com.txz.cif.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * @author: MTD®️
+ * @date: 2026/1/4
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class RecycleInfoDTO {
+    
+    /**
+     * 订单回收比例
+     */
+    private BigDecimal recycleProportion;
+    
+    /**
+     * 成功订单总数
+     */
+    private BigDecimal successTotalOrderNum;
+    
+    /**
+     * 回收数量
+     */
+    private BigDecimal recycleNum;
+}

+ 47 - 39
cif-api/src/main/java/com/txz/cif/dto/UserDTO.java

@@ -1,154 +1,162 @@
 /*
-*
-* UserDTO.java
-* Copyright(C) 2017-2020 fendo公司
-* @date 2022-11-02
-*/
+ *
+ * UserDTO.java
+ * Copyright(C) 2017-2020 fendo公司
+ * @date 2022-11-02
+ */
 package com.txz.cif.dto;
 
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.persistence.Column;
 import java.io.Serializable;
 import java.util.Date;
 
 @Data
 public class UserDTO implements Serializable {
     /**
-     * 
+     *
      */
     private Long id;
-
+    
     /**
      * 登录账号
      */
     private String loginAccount;
-
+    
     /**
      * 用户所属平台 创建用户时定义
      */
     private String appCode;
-
+    
     /**
      * 资金账户(目前只有一个)
      */
     private Long accountId;
-
+    
     /**
      * 单位
      */
     private String unit;
-
+    
     /**
      * 名字
      */
     private String name;
-
+    
     /**
      * 身份证号
      */
     private String identity;
-
+    
     /**
      * 状态 0未启用 1正常 2禁用 3停用 4锁定
      */
     private Byte status;
-
+    
     /**
      * 工作状态 1空闲 2不接诊
      */
     private Byte workStatus;
-
+    
     /**
      * 电话
      */
     private String phoneNo;
-
+    
     /**
      * 邮箱
      */
     private String email;
-
+    
     /**
      * 密码
      */
     private String pwd;
-
+    
     /**
      * 盐
      */
     private String salt;
-
+    
     private Integer vipLevel;
-
+    
     /**
      * 头像
      */
     private String headPic;
-
+    
     /**
      * 居住地址
      */
     private String address;
-
+    
     /**
      * 性别 0未知 1男 2女
      */
     private Byte sex;
-
+    
     /**
      * 所属省份代码
      */
     private String provinceCode;
-
+    
     /**
      * 所属城市码
      */
     private String cityCode;
-
+    
     /**
      * 所属区域代码
      */
     private String areaCode;
-
+    
     /**
      * 创建人
      */
     private String createUser;
-
+    
     /**
      * 更新人
      */
     private String updateUser;
-
+    
     /**
      * 更新时间
      */
     private Date updateTime;
-
+    
     /**
      * 创建时间
      */
     private Date createTime;
-
+    
     /**
      * 版本号
      */
     private String version;
-
+    
     private String signUrl;
-
+    
     private Integer hasWithdraw;
-
+    
     private Integer hasLogin;
-
+    
     private Integer hasOrder;
-
+    
+    /**
+     * 总中奖次数
+     */
+    private Integer totalNumberOfWin;
+    
+    /**
+     * 总回收次数
+     */
+    private Integer totalNumberOfRecycle;
+    
     /**
      * c_user
      */
     private static final long serialVersionUID = 1L;
-
-
+    
+    
 }

+ 2 - 0
cif-api/src/main/java/com/txz/cif/enums/BizTypeEnum.java

@@ -33,6 +33,8 @@ public enum BizTypeEnum {
     
     PROMOTION_COMMISSION(5006, "直推佣金"),
     
+    RECYCLE(5007, "回收"),
+    
     REFUND_RECHARGE(6001, "充值返点"),
     
     WITHDRAWAL_FEE(7001, "提现手续费"),

+ 23 - 5
cif-api/src/main/java/com/txz/cif/service/UserDubboService.java

@@ -8,20 +8,38 @@ import com.txz.cif.dto.UserDTO;
 import java.util.List;
 
 public interface UserDubboService {
-
+    
     /**
      * 验证登录
+     *
      * @param token
+     *
      * @return
      */
     Result<UserDTO> validateLogin(String token);
-
+    
     UserDTO getUser(Long userId);
-
+    
     void updateLastTime(Long userId);
     
     List<UserDTO> getUsersByIds(List<Long> userIds);
-
+    
     ConfigMemberDTO getConfigByLevel(Integer level);
-
+    
+    /**
+     * 添加中奖次数
+     */
+    Boolean addNumberOfWin(Long userId);
+    
+    /**
+     * 添加中奖次数
+     */
+    Boolean addNumberOfWin(Long userId, Integer number);
+    
+    /**
+     * 添加回收次数
+     */
+    Boolean addNumberOfRecycle(Long userId, Integer number);
+    
+    
 }

+ 20 - 3
cif-service/src/main/java/com/txz/cif/dubbo/client/OperatingConfigDubboServiceClient.java

@@ -1,6 +1,7 @@
 package com.txz.cif.dubbo.client;
 
 
+import com.txz.cif.dto.RecycleInfoDTO;
 import com.txz.operating.dto.ConfigDTO;
 import com.txz.operating.result.Result;
 import com.txz.operating.service.OperatingConfigDubboService;
@@ -8,14 +9,30 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.Reference;
 import org.springframework.stereotype.Component;
 
+import java.math.BigDecimal;
+
 @Slf4j
 @Component
 public class OperatingConfigDubboServiceClient {
-
+    
     @Reference
     private OperatingConfigDubboService operatingConfigDubboService;
-
-    public Result<ConfigDTO> getConfigByCode(String code){
+    
+    public Result<ConfigDTO> getConfigByCode(String code) {
         return operatingConfigDubboService.getConfigByCode(code);
     }
+    
+    /**
+     * 获取回收信息
+     */
+    public RecycleInfoDTO getRecycleInfo() {
+        BigDecimal recycleProportion = new BigDecimal(this.getConfigByCode("recycle_proportion").getData().getValueInfo());
+        BigDecimal successTotalOrderNum = new BigDecimal(this.getConfigByCode("success_total_order_num").getData().getValueInfo());
+        BigDecimal recycleNum = new BigDecimal(this.getConfigByCode("recycle_num").getData().getValueInfo());
+        return RecycleInfoDTO.builder()
+                .recycleProportion(recycleProportion)
+                .successTotalOrderNum(successTotalOrderNum)
+                .recycleNum(recycleNum)
+                .build();
+    }
 }

+ 34 - 9
cif-service/src/main/java/com/txz/cif/dubbo/impl/UserDubboServiceImpl.java

@@ -19,11 +19,9 @@ import com.txz.cif.service.UserDubboService;
 import com.txz.cif.service.UserService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
-import org.apache.dubbo.config.annotation.Service;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -36,7 +34,7 @@ public class UserDubboServiceImpl implements UserDubboService {
     
     @Resource
     private UserService userService;
-
+    
     @Resource
     private ConfigMemberService configMemberService;
     
@@ -83,20 +81,47 @@ public class UserDubboServiceImpl implements UserDubboService {
             return new ArrayList<>();
         }
         List<User> users = userService.findByIds(Joiner.on(",").join(userIds));
-        if (CollUtil.isNotEmpty(users)){
-            return users.stream().map(u -> BeanUtil.toBean(u,UserDTO.class)).collect(Collectors.toList());
+        if (CollUtil.isNotEmpty(users)) {
+            return users.stream().map(u -> BeanUtil.toBean(u, UserDTO.class)).collect(Collectors.toList());
         }
         return CollUtil.newArrayList();
     }
-
+    
     @Override
     public ConfigMemberDTO getConfigByLevel(Integer level) {
-        ConfigMember dto =  configMemberService.findBy("level",level);
-        if (dto == null){
+        ConfigMember dto = configMemberService.findBy("level", level);
+        if (dto == null) {
             return null;
         }
         ConfigMemberDTO dto1 = BeanUtil.toBean(dto, ConfigMemberDTO.class);
         return dto1;
     }
-
+    
+    @Override
+    public Boolean addNumberOfWin(Long userId) {
+        return this.addNumberOfWin(userId, 1);
+    }
+    
+    @Override
+    public Boolean addNumberOfWin(Long userId, Integer number) {
+        try {
+            User user = userService.findById(userId);
+            userService.update(User.builder().id(userId).totalNumberOfWin(user.getTotalNumberOfWin() + number).build());
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+    
+    @Override
+    public Boolean addNumberOfRecycle(Long userId, Integer number) {
+        try {
+            User user = userService.findById(userId);
+            userService.update(User.builder().id(userId).totalNumberOfRecycle(user.getTotalNumberOfRecycle() + number).build());
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+    
 }

+ 10 - 0
cif-service/src/main/java/com/txz/cif/model/User.java

@@ -210,6 +210,16 @@ public class User {
     @ApiModelProperty(value = "salt盐")
     private String salt;
     
+    /**
+     * 总中奖次数
+     */
+    private Integer totalNumberOfWin;
+    
+    /**
+     * 总回收次数
+     */
+    private Integer totalNumberOfRecycle;
+    
     
     public UserInfoBO generator() {
         UserInfoBO bo = BeanUtil.toBean(this, UserInfoBO.class);

+ 2 - 0
cif-service/src/main/java/com/txz/cif/service/impl/RedEnvelopeServiceImpl.java

@@ -91,6 +91,8 @@ public class RedEnvelopeServiceImpl extends AbstractService<RedEnvelope> impleme
         } else if (BizTypeEnum.getByKey(param.getBizType()) == BizTypeEnum.PROMOTION_COMMISSION) {
             // 直推红包
             redEnvelopes.addAll(bulidRedEnvelope(param.getUserIds().get(0), param, settleTime));
+        } else if (BizTypeEnum.getByKey(param.getBizType()) == BizTypeEnum.RECYCLE) {
+            redEnvelopes.addAll(bulidRedEnvelope(param.getUserIds().get(0), param, settleTime));
         }
         if (CollUtil.isNotEmpty(redEnvelopes)) {
             save(redEnvelopes);

+ 13 - 0
cif-service/src/main/java/com/txz/cif/web/UserApiController.java

@@ -1,5 +1,6 @@
 package com.txz.cif.web;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -30,6 +31,7 @@ import com.txz.cif.web.para.LoginAccountParameters;
 import com.txz.cif.web.para.MyUserParam;
 import com.txz.cif.web.para.RegisterAccountParameters;
 import com.txz.cif.web.para.UserInfoForm;
+import com.txz.cif.web.vo.RecycleInfoVO;
 import com.txz.operating.dto.ConfigDTO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -485,4 +487,15 @@ public class UserApiController extends AbstractApiController {
     }
     
     
+    /**
+     * 获取回收数据
+     */
+    @GetMapping("getRecycleInfo")
+    public Result<RecycleInfoVO> getRecycleInfo() {
+        RecycleInfoVO recycleInfoVO = BeanUtil.copyProperties(configDubboServiceClient.getRecycleInfo(), RecycleInfoVO.class);
+        
+        return Result.success(recycleInfoVO);
+    }
+    
+    
 }

+ 31 - 0
cif-service/src/main/java/com/txz/cif/web/vo/RecycleInfoVO.java

@@ -0,0 +1,31 @@
+package com.txz.cif.web.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ * @author: MTD®️
+ * @date: 2026/1/4
+ */
+@Data
+public class RecycleInfoVO {
+    
+    /**
+     * 订单回收比例
+     */
+    private BigDecimal recycleProportion;
+    
+    /**
+     * 成功订单总数
+     */
+    private BigDecimal successTotalOrderNum;
+    
+    /**
+     * 回收数量
+     */
+    private BigDecimal recycleNum;
+    
+    
+}

+ 11 - 0
sql/20260107/20260107_recycle.sql

@@ -0,0 +1,11 @@
+ALTER TABLE `cif`.`c_user`
+	ADD COLUMN `total_number_of_win` int NOT NULL DEFAULT 0 COMMENT '总中奖次数' AFTER `has_order`,
+ADD COLUMN `total_number_of_recycle` INT NOT NULL DEFAULT 0 COMMENT '总回收次数' AFTER `total_number_of_win`;
+
+INSERT INTO operating.o_config (id,parent_id,name,code,viwe_type,value_info,seq)
+VALUES (36,NULL,'订单回收比例','recycle_proportion',1,'0.8',1);
+INSERT INTO operating.o_config (id,parent_id,name,code,viwe_type,value_info,seq)
+VALUES (37,NULL,'成功订单总数','success_total_order_num',1,'6',1);
+INSERT INTO operating.o_config (id,parent_id,name,code,viwe_type,value_info,seq)
+VALUES (38,NULL,'回收数量','recycle_num',1,'5',1);
+