Explorar o código

添加了股东大盘分红实体列以及接口(暂无数据),补充了余额支付后续逻辑,添加了发起支付延时消息,添加了订单超时取消订单逻辑

Pota1ovO %!s(int64=2) %!d(string=hai) anos
pai
achega
657a61932b
Modificáronse 25 ficheiros con 1269 adicións e 13 borrados
  1. 267 0
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/amqp/rabbit/RabbitShopTimeoutQueueMQ.java
  2. 10 1
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/shop/ShopCategoriesVO.java
  3. 95 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mq/RabbitShopQueueListener.java
  4. 35 12
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsShopOrderServiceImpl.java
  5. 2 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/feign/RemoteKxsUserService.java
  6. 108 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/KxsShdScore.java
  7. 115 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/KxsShdTradeAmt.java
  8. 73 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/shareholder/ShareholderGetMyStandardsVO.java
  9. 81 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/shareholder/ShareholderGetShareholderAmountVO.java
  10. 59 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/subGetShareholderUserList/CenterScoreListVO.java
  11. 59 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/subGetShareholderUserList/FirstScoreListVO.java
  12. 59 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/subGetShareholderUserList/HighScoreListVO.java
  13. 12 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/subGetShareholderUserList/ShareholderGetShareholderUserListVO.java
  14. 1 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/KxsUserController.java
  15. 76 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/ShareholderController.java
  16. 17 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsShdScoreMapper.java
  17. 17 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsShdTradeAmtMapper.java
  18. 20 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsShdScoreService.java
  19. 16 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsShdTradeAmtService.java
  20. 1 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserService.java
  21. 67 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsShdScoreServiceImpl.java
  22. 39 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsShdTradeAmtServiceImpl.java
  23. 1 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserServiceImpl.java
  24. 19 0
      kxs-user/kxs-user-biz/src/main/resources/mapper/KxsShdScoreMapper.xml
  25. 20 0
      kxs-user/kxs-user-biz/src/main/resources/mapper/KxsShdTradeAmtMapper.xml

+ 267 - 0
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/amqp/rabbit/RabbitShopTimeoutQueueMQ.java

@@ -0,0 +1,267 @@
+package com.kxs.product.api.amqp.rabbit;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.kxs.common.mq.enums.MQSendTypeEnum;
+import com.kxs.common.mq.model.AbstractMQ;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.core.MessageBuilder;
+import org.springframework.amqp.core.MessageDeliveryMode;
+import org.springframework.amqp.core.MessageProperties;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.UUID;
+
+/**
+ * mq 商城下单过期队列 配置
+ *
+ * @author Pota1ovO
+ * @date 2024-05-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+public class RabbitShopTimeoutQueueMQ extends AbstractMQ {
+
+
+    /**
+     * 订单交易队列
+     */
+    public static final String QUEUE_NAME = "QUEUE_SHOP_TIMEOUT_DIVISION";
+
+    /**
+     * 死队列名称
+     */
+    public static final String DEAD_QUEUE_NAME = "DEAD_QUEUE_SHOP_TIMEOUT_DIVISION";
+
+    /**
+     * 内置msg 消息体定义
+     **/
+    private MsgEntity msgEntity;
+
+    /**
+     *  定义Msg消息载体
+     **/
+    @Data
+    public static class MsgEntity {
+        /**
+         * 主键ID
+         */
+        private Integer id;
+
+
+        /**
+         * 新增时间
+         */
+        private LocalDateTime createTime;
+
+
+        /**
+         * 更新时间
+         */
+        private LocalDateTime updateTime;
+
+
+        /**
+         * 删除标记,0未删除,1已删除
+         */
+        private String delFlag;
+
+
+        /**
+         * 版本
+         */
+        private Integer version;
+
+
+        /**
+         * 订单号
+         */
+        private String orderSn;
+
+
+        /**
+         * 用户ID
+         */
+        private Long userId;
+
+
+        /**
+         * 提货方式 0自提 1邮寄
+         */
+        private Integer getMode;
+
+
+        /**
+         * 支付渠道 0余额 1支付宝 2微信 3盟主储蓄金
+         */
+        private Integer payType;
+
+
+        /**
+         * 支付时间
+         */
+        private LocalDateTime payTime;
+
+
+        /**
+         * 发货时间
+         */
+        private LocalDateTime sendTime;
+
+
+        /**
+         * 备注
+         */
+        private String remark;
+
+
+        /**
+         * 收货人
+         */
+        private String consignee;
+
+
+        /**
+         * 收货电话
+         */
+        private String phone;
+
+
+        /**
+         * 收货地址
+         */
+        private String address;
+
+
+        /**
+         * 快递单号
+         */
+        private String erpSn;
+
+
+        /**
+         * 快递公司
+         */
+        private String erpName;
+
+
+        /**
+         * 状态 0未支付 1已支付 2已发货 3已完成 4已取消
+         */
+        private Integer status;
+
+
+        /**
+         * 退款状态 0未申请 1已申请 2申请通过 3申请驳回
+         */
+        private Integer returnStatus;
+
+        /**
+         * 操作人
+         */
+        private String updateBy;
+
+        /**
+         * 退货原因
+         */
+        private String returnReason;
+
+
+        /**
+         * 申请退款时间
+         */
+        private LocalDateTime returnTime;
+
+
+        /**
+         * 退款金额
+         */
+        private BigDecimal returnPrice;
+
+        /**
+         * 顶级创客ID
+         */
+        private Integer topUserId;
+
+        /**
+         * 订单金额
+         */
+        private BigDecimal totalPrice;
+
+
+        /**
+         * 支付金额
+         */
+        private BigDecimal payPrice;
+
+
+        /**
+         * 交易流水号
+         */
+        private String tradeNo;
+
+
+        /**
+         * 自提仓库ID
+         */
+        private Integer warehouseId;
+
+
+        /**
+         * 订单类型 0商城订单 1分仓额度 2小分仓额度 3小盟主订单 4大盟主订单
+         */
+        private Integer orderType;
+    }
+
+    @Override
+    public String getQueueName() {
+
+        return QUEUE_NAME;
+    }
+
+    @Override
+    public String getDeadQueueName() {
+
+        return DEAD_QUEUE_NAME;
+    }
+
+    @Override
+    public MQSendTypeEnum getMqType() {
+
+        return MQSendTypeEnum.DELAY;
+    }
+
+    @Override
+    public Message toMessage() {
+        String message = JSONObject.toJSONString(msgEntity);
+        // 构建消息体
+        return MessageBuilder.withBody(message.getBytes())
+                .setContentType(MessageProperties.CONTENT_TYPE_TEXT_PLAIN)
+                .setDeliveryMode(MessageDeliveryMode.PERSISTENT)
+                .setMessageId(UUID.randomUUID().toString())
+                .build();
+    }
+
+    /**
+     * 构造发送消息
+     */
+    public static RabbitShopTimeoutQueueMQ build(MsgEntity message){
+
+        return new RabbitShopTimeoutQueueMQ(message);
+    }
+
+    /**
+     * 解析MQ消息, 一般用于接收MQ消息时
+     */
+    public static MsgEntity parse(String msg){
+        return JSON.parseObject(msg, MsgEntity.class);
+    }
+
+}

+ 10 - 1
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/shop/ShopCategoriesVO.java

@@ -43,8 +43,17 @@ public class ShopCategoriesVO implements Serializable {
     @Schema(description = "图标")
     private String iconUrl;
 
+    /**
+     * 分类id
+     */
+    @Schema(description = "图标")
+    private String colId;
 
-
+    /**
+     * 分类id
+     */
+    @Schema(description = "图标")
+    private String isShow;
 
 
 	

+ 95 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mq/RabbitShopQueueListener.java

@@ -0,0 +1,95 @@
+package com.kxs.product.biz.mq;
+
+import com.kxs.product.api.amqp.rabbit.RabbitShopTimeoutQueueMQ;
+import com.kxs.product.api.model.KxsShopOrder;
+import com.kxs.product.biz.constant.enums.KxsShopEnum;
+import com.kxs.product.biz.service.KxsShopOrderService;
+import com.rabbitmq.client.Channel;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.RabbitHandler;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+
+/**
+ * rabbit 队列侦听器 商品下单过期队列
+ *
+ * @author Pota1ovO
+ * @date 2024-05-07
+ */
+@Component
+@Slf4j
+@RequiredArgsConstructor
+public class RabbitShopQueueListener {
+	private final KxsShopOrderService kxsShopOrderService;
+
+	/**
+	 * 监听 商品下单过期 队列的处理器
+	 *
+	 * @param message 消息
+	 */
+	@RabbitListener(queues = RabbitShopTimeoutQueueMQ.QUEUE_NAME, ackMode = "MANUAL")
+	@RabbitHandler
+	public void onMessage(String msg, Message message, Channel channel){
+		log.info("shop消费端Payload: " + RabbitShopTimeoutQueueMQ.parse(msg));
+        try {
+			RabbitShopTimeoutQueueMQ.MsgEntity parse = RabbitShopTimeoutQueueMQ.parse(msg);
+			Integer id = parse.getId();
+			//根据订单号查询该订单是否付款成功,如果仍未付款成功,关闭订单
+			KxsShopOrder byId = kxsShopOrderService.getById(id);
+			if (byId != null && byId.getStatus().equals(KxsShopEnum.ORDER_NO_PAY.getType())){
+				KxsShopOrder kxsShopOrder = new KxsShopOrder();
+				BeanUtils.copyProperties(parse,kxsShopOrder);
+				//取消订单
+				//todo 这里只取消了我们平台的订单,如已发起支付渠道调用,仍需取消支付渠道
+				kxsShopOrderService.cancelOrder(kxsShopOrder);
+			}
+			channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
+        } catch (Exception e) {
+			log.error(e.getMessage(), e);
+			try {
+				channel.basicReject(message.getMessageProperties().getDeliveryTag(), false);
+			} catch (IOException ex) {
+				log.error("进入死信队列失败" + ex.getMessage(), ex);
+			}
+        }
+    }
+
+	/**
+	 * 监听死信 队列的处理器
+	 *
+	 * @param message 消息
+	 */
+	@RabbitListener(queues = RabbitShopTimeoutQueueMQ.DEAD_QUEUE_NAME)
+	@RabbitHandler
+	public void onDeadMessage(String msg, Message message, Channel channel){
+		log.info("死信队列Payload: " + RabbitShopTimeoutQueueMQ.parse(msg));
+        try {
+			RabbitShopTimeoutQueueMQ.MsgEntity parse = RabbitShopTimeoutQueueMQ.parse(msg);
+        } catch (Exception e) {
+			log.error(e.getMessage(), e);
+
+        }
+    }
+
+//	/**
+//	 * 监听死信 队列的处理器
+//	 *
+//	 * @param message 消息
+//	 */
+//	@RabbitListener(queues = RabbitGdActQueueMQ.QUEUE_NAME)
+//	@RabbitHandler
+//	public void onGdMessage(String msg, Message message, Channel channel){
+//		log.info("广电报备队列Payload: " + RabbitGdActQueueMQ.parse(msg));
+//        try {
+//			RabbitGdActQueueMQ.MsgEntity parse = RabbitGdActQueueMQ.parse(msg);
+//        } catch (Exception e) {
+//			log.error(e.getMessage(), e);
+//
+//        }
+//    }
+}

+ 35 - 12
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsShopOrderServiceImpl.java

@@ -11,31 +11,23 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kxs.common.core.constant.CommonConstants;
 import com.kxs.common.core.exception.GlobalCustomerException;
 import com.kxs.common.core.util.R;
-import com.kxs.common.pay.enums.PayConstants;
+import com.kxs.common.mq.handlers.IMQSender;
 import com.kxs.common.pay.enums.PayPlatformEnum;
-import com.kxs.common.pay.enums.PayStatusCommEnum;
 import com.kxs.common.pay.factory.PaymentFactory;
 import com.kxs.common.pay.model.PayRequest;
 import com.kxs.common.pay.model.PayResponse;
 import com.kxs.common.pay.model.YuePayMessage;
 import com.kxs.common.security.util.SecurityUtils;
+import com.kxs.product.api.amqp.rabbit.RabbitShopTimeoutQueueMQ;
 import com.kxs.product.api.dto.kxsapp.shop.GoodsSubmitDTO;
 import com.kxs.product.api.dto.kxsapp.shop.PayOrderDTO;
-import com.kxs.product.api.model.KxsShopGoods;
-import com.kxs.product.api.model.KxsShopGoodsSku;
-import com.kxs.product.api.model.KxsShopOrder;
-import com.kxs.product.api.model.KxsShopOrderInfo;
+import com.kxs.product.api.model.*;
 import com.kxs.product.api.vo.kxsapp.shop.*;
 import com.kxs.product.biz.constant.enums.KxsShopEnum;
 import com.kxs.product.biz.constant.enums.ProductErrorTypeEnum;
-import com.kxs.product.biz.mapper.KxsShopGoodsMapper;
-import com.kxs.product.biz.mapper.KxsShopGoodsSkuMapper;
-import com.kxs.product.biz.mapper.KxsShopOrderInfoMapper;
-import com.kxs.product.biz.mapper.KxsShopOrderMapper;
-import com.kxs.product.biz.service.KxsShopGoodsSkuService;
+import com.kxs.product.biz.mapper.*;
 import com.kxs.product.biz.service.KxsShopOrderService;
 import com.kxs.user.api.feign.RemoteKxsUserService;
-import com.lly835.bestpay.enums.OrderStatusEnum;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -68,6 +60,8 @@ public class KxsShopOrderServiceImpl extends ServiceImpl<KxsShopOrderMapper, Kxs
 
     private final PaymentFactory paymentFactory;
     private final KxsShopGoodsSkuMapper kxsShopGoodsSkuMapper;
+    private final KxsTicketMapper kxsTicketMapper;
+    private final IMQSender mqSender;
     @Override
     @Transactional(rollbackFor = Exception.class)
     public R submitOrder(GoodsSubmitDTO param) {
@@ -127,6 +121,10 @@ public class KxsShopOrderServiceImpl extends ServiceImpl<KxsShopOrderMapper, Kxs
         orderInfo.setOrderId(order.getId());
         orderInfoMapper.insert(orderInfo);
 
+        //发送订单延时取消消息
+        RabbitShopTimeoutQueueMQ.MsgEntity msgEntity = new RabbitShopTimeoutQueueMQ.MsgEntity();
+        BeanUtils.copyProperties(order,msgEntity);
+        mqSender.send(RabbitShopTimeoutQueueMQ.build(msgEntity),60*20);
         return R.ok(order.getId());
 
     }
@@ -214,6 +212,31 @@ public class KxsShopOrderServiceImpl extends ServiceImpl<KxsShopOrderMapper, Kxs
             //修改订单信息
             this.update(lambdaUpdateWrapper);
             //TODO 余额走支付接下来的逻辑
+            //根据订单详情依次处理
+            for (KxsShopOrderInfo kxsShopOrderInfo : kxsShopOrderInfos) {
+                switch(kxsShopOrderInfo.getGoodsId()){
+                    case 10:
+                        //电签兑换券流程
+                        List<KxsTicket> kxsTickets = kxsTicketMapper.selectList(new Page<>(1, 3), Wrappers.<KxsTicket>query().lambda()
+                                .eq(KxsTicket::getUserId, 0)
+                                .eq(KxsTicket::getTicketType, 0)
+                                .eq(KxsTicket::getStatus, 0));
+                        if (kxsTickets.size() < 3){
+                            throw new GlobalCustomerException("劵码库存不足");
+                        }
+                        for (KxsTicket kxsTicket : kxsTickets) {
+                            kxsTicket.setUpdateTime(LocalDateTime.now());
+                            kxsTicket.setStatus(0);
+                            kxsTicket.setUserId(Math.toIntExact(order.getUserId()));
+                            kxsTicket.setTicketAllotPath(kxsTicket.getTicketAllotPath() + order.getUserId() + "," );
+                            kxsTicket.setOrderId(order.getId());
+                            //todo 盟主 合伙人标记
+//                            kxsTicket.setLeaderId();
+//                            kxsTicket.setPartnerId();
+                            kxsTicketMapper.updateById(kxsTicket);
+                        }
+                }
+            }
 
 
         }

+ 2 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/feign/RemoteKxsUserService.java

@@ -155,4 +155,6 @@ public interface RemoteKxsUserService {
 	 */
 	@GetExchange("/app/checkPayPwd")
 	R<Boolean> checkPayPwd(@RequestParam("payPwd") String payPwd);
+
+
 }

+ 108 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/KxsShdScore.java

@@ -0,0 +1,108 @@
+package com.kxs.user.api.model;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 股东大盘分红用户积分表(KxsShdScore)表实体类
+ *
+ * @author 系统
+ * @since 2024-05-07 09:11:27
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class KxsShdScore extends Model<KxsShdScore> implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    
+    
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+
+    /**
+     * 新增时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Schema(description = "新增时间")
+    private LocalDateTime createTime;
+
+
+    /**
+     * 更新时间
+     */
+    @TableField(fill = FieldFill.UPDATE)
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+
+    /**
+     * 删除标记,0未删除,1已删除
+     */
+    @Schema(description = "删除标记,0未删除,1已删除")
+    private String delFlag;
+
+
+    /**
+     * 版本
+     */
+    @Schema(description = "版本")
+    private Integer version;
+
+
+    /**
+     * 用户名
+     */
+    @Schema(description = "用户名")
+    private String username;
+
+
+    /**
+     * 用户编号
+     */
+    @Schema(description = "用户编号")
+    private String userCode;
+
+
+    /**
+     * 初级股东积分
+     */
+    @Schema(description = "初级股东积分")
+    private Integer firstScore;
+
+
+    /**
+     * 中级股东积分
+     */
+    @Schema(description = "中级股东积分")
+    private Integer centerScore;
+
+
+    /**
+     * 高级股东积分
+     */
+    @Schema(description = "高级股东积分")
+    private Integer highScore;
+
+
+
+
+}
+

+ 115 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/KxsShdTradeAmt.java

@@ -0,0 +1,115 @@
+package com.kxs.user.api.model;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 股东大盘分红交易表(KxsShdTradeAmt)表实体类
+ *
+ * @author 系统
+ * @since 2024-05-07 09:11:27
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class KxsShdTradeAmt extends Model<KxsShdTradeAmt> implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    
+    
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+
+    /**
+     * 新增时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Schema(description = "新增时间")
+    private LocalDateTime createTime;
+
+
+    /**
+     * 更新时间
+     */
+    @TableField(fill = FieldFill.UPDATE)
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+
+    /**
+     * 删除标记,0未删除,1已删除
+     */
+    @Schema(description = "删除标记,0未删除,1已删除")
+    private String delFlag;
+
+
+    /**
+     * 版本
+     */
+    @Schema(description = "版本")
+    private Integer version;
+
+
+    /**
+     * 总交易额
+     */
+    @Schema(description = "总交易额")
+    private BigDecimal tradeAmt;
+
+
+    /**
+     * 交易月份
+     */
+    @Schema(description = "交易月份")
+    private String tradeMonth;
+
+
+    /**
+     * 总奖金池
+     */
+    @Schema(description = "总奖金池")
+    private BigDecimal bonusPool;
+
+
+    /**
+     * 初级奖金池
+     */
+    @Schema(description = "初级奖金池")
+    private BigDecimal firstBonus;
+
+
+    /**
+     * 中级股东奖金池
+     */
+    @Schema(description = "中级股东奖金池")
+    private BigDecimal centerBonus;
+
+
+    /**
+     * 高级股东奖金池
+     */
+    @Schema(description = "高级股东奖金池")
+    private BigDecimal highBonus;
+
+
+
+
+}
+

+ 73 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/shareholder/ShareholderGetMyStandardsVO.java

@@ -0,0 +1,73 @@
+package com.kxs.user.api.vo.kxsapp.shareholder;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 股东大盘分红-获取达标统计vo
+ *
+ * @author 系统
+ * @date 2024-05-07 11:42:34
+ */
+@Data
+@Schema(description = "股东大盘分红-获取达标统计返回实体")
+public class ShareholderGetMyStandardsVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 初级股东积分
+     */
+    @Schema(description = "初级股东积分")
+    private Integer firstScore;
+
+
+    /**
+     * 中级股东积分
+     */
+    @Schema(description = "中级股东积分")
+    private Integer centerScore;
+
+
+    /**
+     * 高级股东积分
+     */
+    @Schema(description = "高级股东积分")
+    private Integer highScore;
+
+
+    /**
+     * 全国初级股东积分
+     */
+    @Schema(description = "全国初级股东积分")
+    private Object firstScoreAll;
+
+
+    /**
+     * 全国中级股东积分
+     */
+    @Schema(description = "全国中级股东积分")
+    private Object centerScoreAll;
+
+
+    /**
+     * 全国高级股东积分
+     */
+    @Schema(description = "全国高级股东积分")
+    private Object highScoreAll;
+
+
+
+
+
+	
+
+}

+ 81 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/shareholder/ShareholderGetShareholderAmountVO.java

@@ -0,0 +1,81 @@
+package com.kxs.user.api.vo.kxsapp.shareholder;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 股东大盘分红-获取分红奖池统计vo
+ *
+ * @author 系统
+ * @date 2024-05-07 11:42:34
+ */
+@Data
+@Schema(description = "股东大盘分红-获取分红奖池统计返回实体")
+public class ShareholderGetShareholderAmountVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    private Integer id;
+
+
+    /**
+     * 总交易额
+     */
+    @Schema(description = "总交易额")
+    private BigDecimal tradeAmt;
+
+
+    /**
+     * 交易月份
+     */
+    @Schema(description = "交易月份")
+    private String tradeMonth;
+
+
+    /**
+     * 总奖金池
+     */
+    @Schema(description = "总奖金池")
+    private BigDecimal bonusPool;
+
+
+    /**
+     * 初级奖金池
+     */
+    @Schema(description = "初级奖金池")
+    private BigDecimal firstBonus;
+
+
+    /**
+     * 中级股东奖金池
+     */
+    @Schema(description = "中级股东奖金池")
+    private BigDecimal centerBonus;
+
+
+    /**
+     * 高级股东奖金池
+     */
+    @Schema(description = "高级股东奖金池")
+    private BigDecimal highBonus;
+
+
+
+
+
+	
+
+}

+ 59 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/subGetShareholderUserList/CenterScoreListVO.java

@@ -0,0 +1,59 @@
+package com.kxs.user.api.vo.kxsapp.subGetShareholderUserList;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 股东大盘分红-获取达标股东信息股东大盘分红用户积分表vo
+ *
+ * @author 系统
+ * @date 2024-05-07 11:42:34
+ */
+@Data
+@Schema(description = "股东大盘分红-获取达标股东信息股东大盘分红用户积分表返回实体")
+public class CenterScoreListVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    private Integer id;
+
+
+    /**
+     * 用户名
+     */
+    @Schema(description = "用户名")
+    private String username;
+
+
+    /**
+     * 用户编号
+     */
+    @Schema(description = "用户编号")
+    private String userCode;
+
+
+    /**
+     * 中级股东积分
+     */
+    @Schema(description = "中级股东积分")
+    private Integer centerScore;
+
+
+
+
+
+	
+
+}

+ 59 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/subGetShareholderUserList/FirstScoreListVO.java

@@ -0,0 +1,59 @@
+package com.kxs.user.api.vo.kxsapp.subGetShareholderUserList;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 股东大盘分红-获取达标股东信息股东大盘分红用户积分表vo
+ *
+ * @author 系统
+ * @date 2024-05-07 11:42:34
+ */
+@Data
+@Schema(description = "股东大盘分红-获取达标股东信息股东大盘分红用户积分表返回实体")
+public class FirstScoreListVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    private Integer id;
+
+
+    /**
+     * 用户名
+     */
+    @Schema(description = "用户名")
+    private String username;
+
+
+    /**
+     * 用户编号
+     */
+    @Schema(description = "用户编号")
+    private String userCode;
+
+
+    /**
+     * 初级股东积分
+     */
+    @Schema(description = "初级股东积分")
+    private Integer firstScore;
+
+
+
+
+
+	
+
+}

+ 59 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/subGetShareholderUserList/HighScoreListVO.java

@@ -0,0 +1,59 @@
+package com.kxs.user.api.vo.kxsapp.subGetShareholderUserList;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 股东大盘分红-获取达标股东信息股东大盘分红用户积分表vo
+ *
+ * @author 系统
+ * @date 2024-05-07 11:42:35
+ */
+@Data
+@Schema(description = "股东大盘分红-获取达标股东信息股东大盘分红用户积分表返回实体")
+public class HighScoreListVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    private Integer id;
+
+
+    /**
+     * 用户名
+     */
+    @Schema(description = "用户名")
+    private String username;
+
+
+    /**
+     * 用户编号
+     */
+    @Schema(description = "用户编号")
+    private String userCode;
+
+
+    /**
+     * 高级股东积分
+     */
+    @Schema(description = "高级股东积分")
+    private Integer highScore;
+
+
+
+
+
+	
+
+}

+ 12 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/subGetShareholderUserList/ShareholderGetShareholderUserListVO.java

@@ -0,0 +1,12 @@
+package com.kxs.user.api.vo.kxsapp.subGetShareholderUserList;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ShareholderGetShareholderUserListVO {
+    private List<HighScoreListVO> highScoreList;
+    private List<FirstScoreListVO> firstScoreList;
+    private List<CenterScoreListVO> centerScoreList;
+}

+ 1 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/KxsUserController.java

@@ -84,6 +84,7 @@ public class KxsUserController {
         return R.ok(kxsUserService.getById(userId));
     }
 
+
     /**
      * 根据id获取用户银行卡和实名信息
      * 内部调用

+ 76 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/ShareholderController.java

@@ -0,0 +1,76 @@
+package com.kxs.user.biz.controller.kxsapp;
+
+import com.kxs.common.core.util.R;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.user.api.vo.kxsapp.shareholder.ShareholderGetMyStandardsVO;
+import com.kxs.user.api.vo.kxsapp.shareholder.ShareholderGetShareholderAmountVO;
+import com.kxs.user.api.vo.kxsapp.subGetShareholderUserList.ShareholderGetShareholderUserListVO;
+import org.springdoc.core.annotations.ParameterObject;
+
+import com.kxs.user.biz.service.KxsShdTradeAmtService;
+import com.kxs.user.biz.service.KxsShdScoreService;
+
+import org.springframework.web.bind.annotation.*;
+
+import lombok.RequiredArgsConstructor;
+
+/**
+ * 用户相关(Shareholder)控制层
+ *
+ * @author 系统
+ * @since 2024-05-07 11:42:35
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("shareholder")
+public class ShareholderController {
+
+    /**
+     * 服务对象
+     */
+    private final KxsShdTradeAmtService kxsShdTradeAmtService;
+    private final KxsShdScoreService kxsShdScoreService;
+
+
+
+    /**
+     * 股东大盘分红-获取分红奖池统计
+     *
+     * @param tradeMonth 交易月份
+     * @return 股东大盘分红-获取分红奖池统计
+     */
+    @GetMapping("/getShareholderAmount")
+    public R getShareholderAmount(@RequestParam("tradeMonth") String tradeMonth) {
+        return R.ok(kxsShdTradeAmtService.getShareholderAmount(tradeMonth));
+    }
+
+
+    /**
+     * 股东大盘分红-获取达标统计
+     *
+     * @param month 主键
+     * @return 股东大盘分红-获取达标统计
+     */
+    @GetMapping("/getMyStandards")
+    public R getMyStandards(@RequestParam("month") String month) {
+        return R.ok(kxsShdScoreService.getMyStandards(month));
+    }
+
+
+    /**
+     * 股东大盘分红-获取达标股东信息
+     *
+     * @param page 分页对象
+     * @return 股东大盘分红-获取达标股东信息
+     */
+    @GetMapping("/getShareholderUserList")
+    public R getShareholderUserList(@ParameterObject Page<ShareholderGetShareholderUserListVO> page,@RequestParam("month") String month) {
+        return R.ok(kxsShdScoreService.getShareholderUserList(page,month));
+    }
+
+
+
+
+
+}
+

+ 17 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsShdScoreMapper.java

@@ -0,0 +1,17 @@
+package com.kxs.user.biz.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.user.api.model.KxsShdScore;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 股东大盘分红用户积分表(KxsShdScore)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-05-07 09:11:27
+ */
+@Mapper
+public interface KxsShdScoreMapper extends BaseMapper<KxsShdScore> {
+
+}
+

+ 17 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsShdTradeAmtMapper.java

@@ -0,0 +1,17 @@
+package com.kxs.user.biz.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.user.api.model.KxsShdTradeAmt;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 股东大盘分红交易表(KxsShdTradeAmt)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-05-07 09:11:27
+ */
+@Mapper
+public interface KxsShdTradeAmtMapper extends BaseMapper<KxsShdTradeAmt> {
+
+}
+

+ 20 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsShdScoreService.java

@@ -0,0 +1,20 @@
+package com.kxs.user.biz.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.user.api.model.KxsShdScore;
+import com.kxs.user.api.vo.kxsapp.subGetShareholderUserList.ShareholderGetShareholderUserListVO;
+
+/**
+ * 股东大盘分红用户积分表(KxsShdScore)表服务接口
+ *
+ * @author 系统
+ * @since 2024-05-07 09:11:27
+ */
+public interface KxsShdScoreService extends IService<KxsShdScore> {
+
+    Object getMyStandards(String month);
+
+    Object getShareholderUserList(Page<ShareholderGetShareholderUserListVO> page, String month);
+}
+

+ 16 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsShdTradeAmtService.java

@@ -0,0 +1,16 @@
+package com.kxs.user.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.user.api.model.KxsShdTradeAmt;
+
+/**
+ * 股东大盘分红交易表(KxsShdTradeAmt)表服务接口
+ *
+ * @author 系统
+ * @since 2024-05-07 09:11:27
+ */
+public interface KxsShdTradeAmtService extends IService<KxsShdTradeAmt> {
+
+    Object getShareholderAmount(String tradeMonth);
+}
+

+ 1 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserService.java

@@ -210,5 +210,6 @@ public interface KxsUserService extends IService<KxsUser> {
      * @return {@link R}
      */
     R forgetPayPwd(ForgetPayPwdDTO param);
+
 }
 

+ 67 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsShdScoreServiceImpl.java

@@ -0,0 +1,67 @@
+package com.kxs.user.biz.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.user.api.vo.kxsapp.shareholder.ShareholderGetMyStandardsVO;
+import com.kxs.user.api.vo.kxsapp.subGetShareholderUserList.CenterScoreListVO;
+import com.kxs.user.api.vo.kxsapp.subGetShareholderUserList.FirstScoreListVO;
+import com.kxs.user.api.vo.kxsapp.subGetShareholderUserList.HighScoreListVO;
+import com.kxs.user.api.vo.kxsapp.subGetShareholderUserList.ShareholderGetShareholderUserListVO;
+import com.kxs.user.biz.mapper.KxsShdScoreMapper;
+import com.kxs.user.api.model.KxsShdScore;
+import com.kxs.user.biz.service.KxsShdScoreService;
+import org.springframework.stereotype.Service;
+
+import java.sql.Array;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 股东大盘分红用户积分表(KxsShdScore)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-05-07 09:11:27
+ */
+@Service("kxsShdScoreService")
+public class KxsShdScoreServiceImpl extends ServiceImpl<KxsShdScoreMapper, KxsShdScore> implements KxsShdScoreService {
+
+    @Override
+    public Object getMyStandards(String month) {
+        //假数据
+
+        ShareholderGetMyStandardsVO shareholderGetMyStandardsVO = new ShareholderGetMyStandardsVO();
+
+        shareholderGetMyStandardsVO.setFirstScore(1);
+        shareholderGetMyStandardsVO.setCenterScore(2);
+        shareholderGetMyStandardsVO.setHighScore(3);
+        shareholderGetMyStandardsVO.setFirstScoreAll(4);
+        shareholderGetMyStandardsVO.setCenterScoreAll(5);
+        shareholderGetMyStandardsVO.setHighScoreAll(6);
+
+        return shareholderGetMyStandardsVO;
+    }
+
+    @Override
+    public Object getShareholderUserList(Page<ShareholderGetShareholderUserListVO> page, String month) {
+        //假数据
+        ShareholderGetShareholderUserListVO shareholderGetShareholderUserListVO = new ShareholderGetShareholderUserListVO();
+        ArrayList<HighScoreListVO> highScoreListVOS = new ArrayList<>();
+        HighScoreListVO highScoreListVO = new HighScoreListVO();
+        highScoreListVOS.add(highScoreListVO);
+
+        ArrayList<FirstScoreListVO> firstScoreListVOS = new ArrayList<>();
+        FirstScoreListVO firstScoreListVO = new FirstScoreListVO();
+        firstScoreListVOS.add(firstScoreListVO);
+
+        ArrayList<CenterScoreListVO> centerScoreListVOS = new ArrayList<>();
+        CenterScoreListVO centerScoreListVO = new CenterScoreListVO();
+        centerScoreListVOS.add(centerScoreListVO);
+        shareholderGetShareholderUserListVO.setHighScoreList(highScoreListVOS);
+        shareholderGetShareholderUserListVO.setFirstScoreList(firstScoreListVOS);
+        shareholderGetShareholderUserListVO.setCenterScoreList(centerScoreListVOS);
+
+
+        return shareholderGetShareholderUserListVO;
+    }
+}
+

+ 39 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsShdTradeAmtServiceImpl.java

@@ -0,0 +1,39 @@
+package com.kxs.user.biz.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.common.core.util.AssertUtil;
+import com.kxs.user.api.vo.kxsapp.shareholder.ShareholderGetShareholderAmountVO;
+import com.kxs.user.biz.mapper.KxsShdTradeAmtMapper;
+import com.kxs.user.api.model.KxsShdTradeAmt;
+import com.kxs.user.biz.service.KxsShdTradeAmtService;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+
+/**
+ * 股东大盘分红交易表(KxsShdTradeAmt)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-05-07 09:11:27
+ */
+@Service("kxsShdTradeAmtService")
+public class KxsShdTradeAmtServiceImpl extends ServiceImpl<KxsShdTradeAmtMapper, KxsShdTradeAmt> implements KxsShdTradeAmtService {
+
+    @Override
+    public Object getShareholderAmount(String tradeMonth) {
+        //格式校验
+        AssertUtil.isYyyyMM(tradeMonth);
+        //构造假数据返回
+        ShareholderGetShareholderAmountVO shareholderGetShareholderAmountVO = new ShareholderGetShareholderAmountVO();
+        shareholderGetShareholderAmountVO.setId(0);
+        String[] split = tradeMonth.split("-");
+        shareholderGetShareholderAmountVO.setTradeAmt(new BigDecimal(split[0]+"00"));
+        shareholderGetShareholderAmountVO.setTradeMonth(tradeMonth);
+        shareholderGetShareholderAmountVO.setBonusPool(new BigDecimal(split[0]+"1"));
+        shareholderGetShareholderAmountVO.setFirstBonus(new BigDecimal(split[0]+"2"));
+        shareholderGetShareholderAmountVO.setCenterBonus(new BigDecimal(split[0]+"3"));
+        shareholderGetShareholderAmountVO.setHighBonus(new BigDecimal(split[0]+"4"));
+        return shareholderGetShareholderAmountVO;
+    }
+}
+

+ 1 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserServiceImpl.java

@@ -382,6 +382,7 @@ public class KxsUserServiceImpl extends ServiceImpl<KxsUserMapper, KxsUser> impl
         return R.ok();
     }
 
+
     @Override
     public R updatePwd(UserUpdatePwdDTO param) {
 

+ 19 - 0
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsShdScoreMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.kxs.user.biz.mapper.KxsShdScoreMapper">
+
+    <resultMap type="com.kxs.user.api.model.KxsShdScore" id="KxsShdScoreMap">
+        <result column="id" property="id" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="del_flag" property="delFlag" />
+        <result column="version" property="version" />
+        <result column="username" property="username" />
+        <result column="user_code" property="userCode" />
+        <result column="first_score" property="firstScore" />
+        <result column="center_score" property="centerScore" />
+        <result column="high_score" property="highScore" />
+
+    </resultMap>
+
+</mapper>

+ 20 - 0
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsShdTradeAmtMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.kxs.user.biz.mapper.KxsShdTradeAmtMapper">
+
+    <resultMap type="com.kxs.user.api.model.KxsShdTradeAmt" id="KxsShdTradeAmtMap">
+        <result column="id" property="id" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="del_flag" property="delFlag" />
+        <result column="version" property="version" />
+        <result column="trade_amt" property="tradeAmt" />
+        <result column="trade_month" property="tradeMonth" />
+        <result column="bonus_pool" property="bonusPool" />
+        <result column="first_bonus" property="firstBonus" />
+        <result column="center_bonus" property="centerBonus" />
+        <result column="high_bonus" property="highBonus" />
+
+    </resultMap>
+
+</mapper>