Преглед изворни кода

Merge branch 'develop_batch_20240624_创客信息' into develop-yangdebao

# Conflicts:
#	kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserMapper.java
#	kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserService.java
杨德宝 пре 2 година
родитељ
комит
3e2b8e95f2
47 измењених фајлова са 2318 додато и 55 уклоњено
  1. 88 0
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/admin/so/SysSoPageDTO.java
  2. 47 0
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/admin/so/SysSoOrderDetailVO.java
  3. 61 0
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/admin/so/SysSoPageVO.java
  4. 62 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/admin/SysShopOrderController.java
  5. 11 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsShopOrderMapper.java
  6. 19 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsShopOrderService.java
  7. 89 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsShopOrderServiceImpl.java
  8. 48 26
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsShopOrderMapper.xml
  9. 20 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/RestPwdDTO.java
  10. 53 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/SysUserLogoutListDTO.java
  11. 46 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/SysUserPageDTO.java
  12. 32 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/SysUserUnRealUserPageDTO.java
  13. 39 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/SysUserUserAccountListDTO.java
  14. 39 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/SysUserWhereListDTO.java
  15. 22 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/UserSearchDTO.java
  16. 46 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/userAdvance/SysUserAdvancePageDTO.java
  17. 32 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/userLevel/SysUserLevelPageDTO.java
  18. 46 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/userWithdrawal/SysUserWithdrawalPageDTO.java
  19. 25 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/feign/RemoteKxsUserService.java
  20. 34 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/user/SysFeignUserDetailVO.java
  21. 24 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/user/SysTopUserVO.java
  22. 81 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/user/SysUserPageVO.java
  23. 80 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/user/SysUserUserAccountListVO.java
  24. 54 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/userAdvance/SysUserAdvancePageVO.java
  25. 47 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/userLevel/SysUserLevelPageVO.java
  26. 48 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/userWithdrawal/SysUserWithdrawalPageVO.java
  27. 49 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/admin/SysUserAdvanceController.java
  28. 243 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/admin/SysUserController.java
  29. 49 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/admin/SysUserLevelController.java
  30. 45 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/admin/SysUserWithdrawalController.java
  31. 13 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserAdvanceMapper.java
  32. 16 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserLevelLogMapper.java
  33. 43 1
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserMapper.java
  34. 13 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserWithdrawalMapper.java
  35. 13 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserAdvanceService.java
  36. 13 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserLevelLogService.java
  37. 83 2
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserService.java
  38. 12 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserWithdrawalService.java
  39. 13 5
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserAdvanceServiceImpl.java
  40. 13 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserLevelLogServiceImpl.java
  41. 231 7
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserServiceImpl.java
  42. 11 14
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserWithdrawalServiceImpl.java
  43. 29 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/util/TopUserIdUtil.java
  44. 32 0
      kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserAdvanceMapper.xml
  45. 20 0
      kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserLevelLogMapper.xml
  46. 151 0
      kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserMapper.xml
  47. 33 0
      kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserWithdrawalMapper.xml

+ 88 - 0
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/admin/so/SysSoPageDTO.java

@@ -0,0 +1,88 @@
+package com.kxs.product.api.dto.admin.so;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 商城订单-列表-dto
+ *
+ * @author 系统
+ * @date 2024-06-26 17:09:21
+ */
+@Data
+public class SysSoPageDTO {
+
+    /**
+     * 订单号
+     */
+    @Schema(description = "订单号")
+    private String orderSn;
+
+
+    /**
+     * 支付渠道 0余额 1支付宝 2微信 3盟主储蓄金
+     */
+    @Schema(description = "支付渠道 0余额 1支付宝 2微信 3盟主储蓄金")
+    private Integer payType;
+
+
+    /**
+     * 状态 0未支付 1已支付 2已发货 3已完成 4已取消
+     */
+    @Schema(description = "状态 0未支付 1已支付 2已发货 3已完成 4已取消")
+    private Integer status;
+
+
+    /**
+     * 创客编号
+     */
+    @Schema(description = "创客编号")
+    private String userCode;
+
+
+    /**
+     * 创客名字
+     */
+    @Schema(description = "创客名字")
+    private String username;
+
+
+    /**
+     * 产品类型
+     */
+    @Schema(description = "产品类型")
+    private String goodsId;
+
+
+    /**
+     * 下单时间区间['','']
+     */
+    @Schema(description = "下单时间区间['','']")
+    private String[] orderTime;
+
+
+    /**
+     * 支付时间区间['','']
+     */
+    @Schema(description = "支付时间区间['','']")
+    private String[] payTime;
+
+
+    /**
+     * 发货时间区间['','']
+     */
+    @Schema(description = "发货时间区间['','']")
+    private String[] sendTime;
+
+    /**
+     * 用户id集合
+     */
+    private List<Integer> userIds;
+
+
+
+
+}

+ 47 - 0
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/admin/so/SysSoOrderDetailVO.java

@@ -0,0 +1,47 @@
+package com.kxs.product.api.vo.admin.so;
+
+
+import com.kxs.product.api.model.KxsShopGoods;
+import com.kxs.product.api.model.KxsShopOrderInfo;
+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-06-26 17:09:22
+ */
+@Data
+@Schema(description = "商城订单-详情返回实体")
+public class SysSoOrderDetailVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 订单详情
+     */
+    @Schema(description = "订单详情")
+    private KxsShopOrderInfo orderInfo;
+
+
+    /**
+     * 订单商品详情
+     */
+    @Schema(description = "订单商品详情")
+    private KxsShopGoods orderProductInfo;
+
+
+
+
+
+	
+
+}

+ 61 - 0
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/admin/so/SysSoPageVO.java

@@ -0,0 +1,61 @@
+package com.kxs.product.api.vo.admin.so;
+
+
+import com.kxs.product.api.model.KxsShopOrder;
+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-06-26 17:09:22
+ */
+@Data
+@Schema(description = "商城订单-列表返回实体")
+public class SysSoPageVO extends KxsShopOrder implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+
+    /**
+     * 创客名称
+     */
+    @Schema(description = "创客名称")
+    private Object username;
+
+
+    /**
+     * 创客编号
+     */
+    @Schema(description = "创客编号")
+    private Object userCode;
+
+
+    /**
+     * 顶级创客名称
+     */
+    @Schema(description = "顶级创客名称")
+    private Object topUsername;
+
+
+    /**
+     * 顶级创客编号
+     */
+    @Schema(description = "顶级创客编号")
+    private Object topUserCode;
+
+
+
+
+
+	
+
+}

+ 62 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/admin/SysShopOrderController.java

@@ -0,0 +1,62 @@
+package com.kxs.product.biz.controller.admin;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.common.core.util.R;
+import com.kxs.product.api.dto.admin.so.SysSoPageDTO;
+import com.kxs.product.api.vo.admin.so.SysSoPageVO;
+import com.kxs.product.biz.service.KxsShopOrderService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 商城订单(SysSo)控制层
+ *
+ * @author 系统
+ * @since 2024-06-26 17:09:22
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("sysShopOrder")
+public class SysShopOrderController {
+
+    /**
+     * 服务对象
+     */
+    private final KxsShopOrderService kxsShopOrderService;
+
+
+
+    /**
+     * 商城订单-列表
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 商城订单-列表
+     */
+    @GetMapping("/page")
+    public R page(Page<SysSoPageVO> page, SysSoPageDTO param) {
+        kxsShopOrderService.shopOrderPage(page, param);
+        return R.ok(page);
+    }
+
+
+    /**
+     * 商城订单-详情
+     *
+     * @param id 主键ID
+     * @return 商城订单-详情
+     */
+    @GetMapping("/{orderDetail}")
+    public R orderDetail(@PathVariable("orderDetail") Integer id) {
+        return R.ok(kxsShopOrderService.getOrderDetailById(id));
+    }
+
+
+
+
+
+}
+

+ 11 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsShopOrderMapper.java

@@ -1,7 +1,10 @@
 package com.kxs.product.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.product.api.dto.admin.so.SysSoPageDTO;
 import com.kxs.product.api.model.KxsShopOrder;
+import com.kxs.product.api.vo.admin.so.SysSoPageVO;
 import com.kxs.product.api.vo.kxsapp.shop.ShopOrderGoodsUserVO;
 import com.kxs.product.api.vo.kxsapp.shop.ShopOrderListVO;
 import org.apache.ibatis.annotations.Mapper;
@@ -45,5 +48,13 @@ public interface KxsShopOrderMapper extends BaseMapper<KxsShopOrder> {
      * @return {@link List}<{@link KxsShopOrder}>
      */
     List<KxsShopOrder> verifyUserTicketCountAndShopAndAct(@Param("userId") Long userId, @Param("shopIds")List<Long> shopIds);
+
+    /**
+     * 订单分页查询
+     * @param page
+     * @param sysSoPageDTO
+     * @return
+     */
+    List<SysSoPageVO> shopOrderPage(Page page,  @Param("query") SysSoPageDTO sysSoPageDTO);
 }
 

+ 19 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsShopOrderService.java

@@ -4,9 +4,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.kxs.common.core.util.R;
+import com.kxs.product.api.dto.admin.so.SysSoPageDTO;
 import com.kxs.product.api.dto.kxsapp.shop.PayOrderDTO;
 import com.kxs.product.api.model.KxsShopOrder;
 import com.kxs.product.api.dto.kxsapp.shop.GoodsSubmitDTO;
+import com.kxs.product.api.vo.admin.so.SysSoOrderDetailVO;
+import com.kxs.product.api.vo.admin.so.SysSoPageVO;
 import com.kxs.product.api.vo.kxsapp.shop.ShopOrderCountVO;
 import com.kxs.product.api.vo.kxsapp.shop.ShopOrderDetailVO;
 import com.kxs.product.api.vo.kxsapp.shop.ShopOrderGoodsUserVO;
@@ -93,5 +96,21 @@ public interface KxsShopOrderService extends IService<KxsShopOrder> {
      * @param outTradeNo 订单编号
      */
     void payBack(String outTradeNo);
+
+    /**
+     * 商城订单分页查询
+     * @param page
+     * @param sysSoPageDTO
+     * @return
+     */
+    List<SysSoPageVO> shopOrderPage(Page page, SysSoPageDTO sysSoPageDTO);
+
+
+    /**
+     * 通过订单id查询订单详情信息
+     * @param orderId
+     * @return
+     */
+    SysSoOrderDetailVO getOrderDetailById(Integer orderId);
 }
 

+ 89 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsShopOrderServiceImpl.java

@@ -1,9 +1,11 @@
 package com.kxs.product.biz.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.IdUtil;
 import com.alipay.api.AlipayApiException;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -19,9 +21,12 @@ 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.admin.so.SysSoPageDTO;
 import com.kxs.product.api.dto.kxsapp.shop.GoodsSubmitDTO;
 import com.kxs.product.api.dto.kxsapp.shop.PayOrderDTO;
 import com.kxs.product.api.model.*;
+import com.kxs.product.api.vo.admin.so.SysSoOrderDetailVO;
+import com.kxs.product.api.vo.admin.so.SysSoPageVO;
 import com.kxs.product.api.vo.kxsapp.shop.*;
 import com.kxs.product.biz.constant.enums.KxsShopEnum;
 import com.kxs.product.biz.constant.enums.ProductErrorTypeEnum;
@@ -32,7 +37,9 @@ import com.kxs.product.biz.service.KxsTicketService;
 import com.kxs.store.api.feign.RemoteKxsStoreService;
 import com.kxs.store.api.model.KxsWarehouseLimit;
 import com.kxs.system.api.util.ParamResolver;
+import com.kxs.user.api.dto.admin.user.UserSearchDTO;
 import com.kxs.user.api.feign.RemoteKxsUserService;
+import com.kxs.user.api.vo.admin.user.SysFeignUserDetailVO;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -42,7 +49,9 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Collectors;
@@ -312,6 +321,86 @@ public class KxsShopOrderServiceImpl extends ServiceImpl<KxsShopOrderMapper, Kxs
 
     }
 
+    @Override
+    public List<SysSoPageVO> shopOrderPage(Page page, SysSoPageDTO sysSoPageDTO) {
+
+        //如果有用户名称或用户编号的搜索条件,先去查用户,再根据用户id搜索订单
+        String userCode = sysSoPageDTO.getUserCode();
+        String username = sysSoPageDTO.getUsername();
+        List<Integer> searchUserIds = sysSoPageDTO.getUserIds();
+        if(StringUtils.isNotBlank(userCode) || StringUtils.isNotBlank(username)){
+            UserSearchDTO userSearchDTO = new UserSearchDTO();
+            userSearchDTO.setUsername(username);
+            userSearchDTO.setUserCode(userCode);
+            List<Integer> userIds = getUserIdsSearch(userSearchDTO);
+            if(CollectionUtil.isNotEmpty(userIds)){
+                if(searchUserIds == null){
+                    searchUserIds = new ArrayList<>();
+                }
+                searchUserIds.addAll(userIds);
+            }else{
+                return new ArrayList<>();
+            }
+        }
+        //设置用户userIds
+        sysSoPageDTO.setUserIds(searchUserIds);
+        List<SysSoPageVO> list = baseMapper.shopOrderPage(page, sysSoPageDTO);
+
+        //封装创客信息和顶级创客信息
+        packageTopUser(list);
+        if(page != null){
+            page.setRecords(list);
+        }
+        return list;
+    }
+
+    private void packageTopUser(List<SysSoPageVO> list){
+        if(CollectionUtil.isNotEmpty(list)){
+            List<Integer> userIds = list.stream().map(o -> o.getUserId().intValue()).collect(Collectors.toList());
+            R<Map<Integer, SysFeignUserDetailVO>> mapR = remoteKxsUserService.topUserList(userIds, SecurityConstants.FROM_IN);
+            if (mapR.getStatus() == 1) {
+                Map<Integer, SysFeignUserDetailVO> topUserMap = mapR.getData();
+                for(SysSoPageVO sysSoPageVO:list){
+                    Integer userId = sysSoPageVO.getUserId().intValue();
+                    if(topUserMap.containsKey(userId)){
+                        SysFeignUserDetailVO sysFeignUserDetailVO = topUserMap.get(userId);
+                        sysSoPageVO.setUserCode(sysFeignUserDetailVO.getUserCode());
+                        sysSoPageVO.setUsername(sysFeignUserDetailVO.getUsername());
+                        sysSoPageVO.setTopUserCode(sysFeignUserDetailVO.getTopUserCode());
+                        sysSoPageVO.setTopUsername(sysFeignUserDetailVO.getTopUsername());
+                    }
+                }
+            }
+        }
+
+    }
+
+    /**
+     * 通过条件获取用户id数据
+     * @return
+     */
+    private List<Integer> getUserIdsSearch(UserSearchDTO userSearchDTO){
+            R<List<Integer>> rList = remoteKxsUserService.searchUserList(userSearchDTO, SecurityConstants.FROM_IN);
+            if (rList.getStatus() != 1) {
+                throw new GlobalCustomerException("用户服务请求异常");
+            }else{
+                return rList.getData();
+            }
+    }
+
+    @Override
+    public SysSoOrderDetailVO getOrderDetailById(Integer orderId) {
+        List<KxsShopOrderInfo> kxsShopOrderInfos = orderInfoMapper.selectList(Wrappers.<KxsShopOrderInfo>lambdaQuery().eq(KxsShopOrderInfo::getOrderId, orderId));
+        SysSoOrderDetailVO sysSoOrderDetailVO = new SysSoOrderDetailVO();
+        if(CollectionUtil.isNotEmpty(kxsShopOrderInfos)){
+            KxsShopOrderInfo kxsShopOrderInfo = kxsShopOrderInfos.get(0);
+            sysSoOrderDetailVO.setOrderInfo(kxsShopOrderInfo);
+            KxsShopGoods kxsShopGoods = kxsShopGoodsMapper.selectById(kxsShopOrderInfo.getGoodsId());
+            sysSoOrderDetailVO.setOrderProductInfo(kxsShopGoods);
+        }
+        return sysSoOrderDetailVO;
+    }
+
     /**
      * 添加临时额度
      *

+ 48 - 26
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsShopOrderMapper.xml

@@ -51,6 +51,8 @@
         </collection>
     </resultMap>
 
+    <resultMap id="WebKxsShopOrderMap" extends="KxsShopOrderMap" type="com.kxs.product.api.vo.admin.so.SysSoPageVO"></resultMap>
+
     <select id="getByPage" resultMap="KxsShopOrderPageMap">
         SELECT a.id, a.create_time, a.order_sn, a.status, a.return_status, a.total_price, a.pay_price, a.warehouse_id, a.order_type,
                t.number, t.goods_price, t.pic_url, t.goods_name, t.specifications
@@ -95,32 +97,52 @@
     </select>
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    <select id="shopOrderPage" resultMap="WebKxsShopOrderMap">
+        SELECT
+            kso.*
+        FROM
+            kxs_shop_order kso
+        <where>
+            and kso.del_flag = 0
+            <if test="query.orderSn != null and query.orderSn != ''">
+                <bind name="orderSnLike" value="'%'+query.orderSn+'%'"/>
+                AND kso.order_sn LIKE #{orderSnLike}
+            </if>
+            <if test="query.payType != null">
+                and kso.pay_type = #{query.payType}
+            </if>
+            <if test="query.status != null">
+                and kso.status = #{query.status}
+            </if>
+            <if test="query.goodsId != null and query.goodsId != ''">
+                and kso.goods_id = #{query.goodsId}
+            </if>
+            <if test="query.userIds != null and query.userIds.size()>0">
+                and kso.user_id in
+                <foreach collection="query.userIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="query.orderTime != null and query.orderTime.length > 1">
+                and (
+                DATE_FORMAT(create_time,'%Y-%m-%d') >= DATE_FORMAT(#{query.orderTime.[0]},'%Y-%m-%d') and
+                DATE_FORMAT(#{query.orderTime.[1]},'%Y-%m-%d')  >= DATE_FORMAT(create_time,'%Y-%m-%d')
+                )
+            </if>
+            <if test="query.payTime != null and query.payTime.length > 1">
+                and (
+                DATE_FORMAT(pay_time,'%Y-%m-%d') >= DATE_FORMAT(#{query.payTime.[0]},'%Y-%m-%d') and
+                DATE_FORMAT(#{query.payTime.[1]},'%Y-%m-%d')  >= DATE_FORMAT(pay_time,'%Y-%m-%d')
+                )
+            </if>
+            <if test="query.sendTime != null and query.sendTime.length > 1">
+                and (
+                DATE_FORMAT(send_time,'%Y-%m-%d') >= DATE_FORMAT(#{query.sendTime.[0]},'%Y-%m-%d') and
+                DATE_FORMAT(#{query.sendTime.[1]},'%Y-%m-%d')  >= DATE_FORMAT(send_time,'%Y-%m-%d')
+                )
+            </if>
+        </where>
+    </select>
 
 
 

+ 20 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/RestPwdDTO.java

@@ -0,0 +1,20 @@
+package com.kxs.user.api.dto.admin.user;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+
+/**
+ * 重置密码-dto
+ * @author debao.yang
+ * @createTime 2024-06-24 16:40
+ */
+@Data
+public class RestPwdDTO {
+
+    @NotBlank(message = "用户id不能为空")
+    @Schema(description = "用户id")
+    private String userId;
+
+    private String password;
+}

+ 53 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/SysUserLogoutListDTO.java

@@ -0,0 +1,53 @@
+package com.kxs.user.api.dto.admin.user;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+/**
+ * 已注销创客-dto
+ *
+ * @author 系统
+ * @date 2024-06-24 09:30:01
+ */
+@Data
+public class SysUserLogoutListDTO {
+
+    /**
+     * 用户名
+     */
+    @Schema(description = "用户名")
+    private String username;
+
+
+    /**
+     * 手机号
+     */
+    @Schema(description = "手机号")
+    private String phone;
+
+
+    /**
+     * 邀请码
+     */
+    @Schema(description = "邀请码")
+    private String userCode;
+
+
+    /**
+     * 身份证号
+     */
+    @Schema(description = "身份证号")
+    private Object idCard;
+
+
+    /**
+     * 时间区间['time','time']
+     */
+    @Schema(description = "时间区间['time','time']")
+    private Object updateTime;
+
+
+
+
+}

+ 46 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/SysUserPageDTO.java

@@ -0,0 +1,46 @@
+package com.kxs.user.api.dto.admin.user;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+/**
+ * 创客信息-列表-dto
+ *
+ * @author 系统
+ * @date 2024-06-24 09:30:02
+ */
+@Data
+public class SysUserPageDTO {
+
+    /**
+     * 用户名
+     */
+    @Schema(description = "用户名")
+    private String username;
+
+
+    /**
+     * 手机号
+     */
+    @Schema(description = "手机号")
+    private String phone;
+
+
+    /**
+     * 邀请码
+     */
+    @Schema(description = "邀请码")
+    private String userCode;
+
+
+    /**
+     * 身份证号
+     */
+    @Schema(description = "身份证号")
+    private Object idCard;
+
+
+
+
+}

+ 32 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/SysUserUnRealUserPageDTO.java

@@ -0,0 +1,32 @@
+package com.kxs.user.api.dto.admin.user;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+/**
+ * 未实名开放列表-dto
+ *
+ * @author 系统
+ * @date 2024-06-24 09:30:02
+ */
+@Data
+public class SysUserUnRealUserPageDTO {
+
+    /**
+     * 创客姓名
+     */
+    @Schema(description = "创客姓名")
+    private String username;
+
+
+    /**
+     * 创客编号
+     */
+    @Schema(description = "创客编号")
+    private String userCode;
+
+
+
+
+}

+ 39 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/SysUserUserAccountListDTO.java

@@ -0,0 +1,39 @@
+package com.kxs.user.api.dto.admin.user;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+/**
+ * 创客账户信息-dto
+ *
+ * @author 系统
+ * @date 2024-06-24 09:30:01
+ */
+@Data
+public class SysUserUserAccountListDTO {
+
+    /**
+     * 用户名
+     */
+    @Schema(description = "用户名")
+    private String username;
+
+
+    /**
+     * 手机号
+     */
+    @Schema(description = "手机号")
+    private String phone;
+
+
+    /**
+     * 邀请码
+     */
+    @Schema(description = "邀请码")
+    private String userCode;
+
+
+
+
+}

+ 39 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/SysUserWhereListDTO.java

@@ -0,0 +1,39 @@
+package com.kxs.user.api.dto.admin.user;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+
+
+/**
+ * 创客信息-上下级创客-dto
+ *
+ * @author 系统
+ * @date 2024-06-24 09:30:01
+ */
+@Data
+public class SysUserWhereListDTO {
+
+    /**
+     * 创客ID
+     */
+    @NotBlank(message = "创客ID不能为空")
+    @Schema(description = "创客ID")
+    private String userId;
+
+
+    /**
+     * 0上级创客 1下级直属创客
+     */
+    @Schema(description = "0上级创客 1下级直属创客")
+    private Object queryType;
+
+    /**
+     * 父id
+     */
+    private Integer pid;
+
+
+
+
+}

+ 22 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/UserSearchDTO.java

@@ -0,0 +1,22 @@
+package com.kxs.user.api.dto.admin.user;
+
+import lombok.Data;
+
+/**
+ * @author debao.yang
+ * @createTime 2024-06-27 11:10
+ */
+@Data
+public class UserSearchDTO {
+
+
+    /**
+     * 用户名称
+     */
+    private String username;
+
+    /**
+     * 用户编号
+     */
+    private String userCode;
+}

+ 46 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/userAdvance/SysUserAdvancePageDTO.java

@@ -0,0 +1,46 @@
+package com.kxs.user.api.dto.admin.userAdvance;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+/**
+ * 创客预扣款-dto
+ *
+ * @author 系统
+ * @date 2024-06-24 09:30:02
+ */
+@Data
+public class SysUserAdvancePageDTO {
+
+    /**
+     * 预扣款类型 普通预扣款=1  分期预扣款=2 机具过期预扣款=124
+     */
+    @Schema(description = "预扣款类型 普通预扣款=1  分期预扣款=2 机具过期预扣款=124")
+    private Integer advanceType;
+
+
+    /**
+     * 扣款标识 0未扣 1已扣 2撤销|已返还 3暂停扣款
+     */
+    @Schema(description = "扣款标识 0未扣 1已扣 2撤销|已返还 3暂停扣款")
+    private Integer status;
+
+
+    /**
+     * 创客编号
+     */
+    @Schema(description = "创客编号")
+    private Object userCode;
+
+
+    /**
+     * 创客姓名
+     */
+    @Schema(description = "创客姓名")
+    private Object username;
+
+
+
+
+}

+ 32 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/userLevel/SysUserLevelPageDTO.java

@@ -0,0 +1,32 @@
+package com.kxs.user.api.dto.admin.userLevel;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+/**
+ * 预设职级-列表-dto
+ *
+ * @author 系统
+ * @date 2024-06-24 09:30:02
+ */
+@Data
+public class SysUserLevelPageDTO {
+
+    /**
+     * 创客编码
+     */
+    @Schema(description = "创客编码")
+    private String userCode;
+
+
+    /**
+     * 结束时间区间['','']
+     */
+    @Schema(description = "结束时间区间['','']")
+    private Object endTime;
+
+
+
+
+}

+ 46 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/userWithdrawal/SysUserWithdrawalPageDTO.java

@@ -0,0 +1,46 @@
+package com.kxs.user.api.dto.admin.userWithdrawal;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+/**
+ * 创客提现管理-dto
+ *
+ * @author 系统
+ * @date 2024-06-24 09:30:02
+ */
+@Data
+public class SysUserWithdrawalPageDTO {
+
+    /**
+     * 申请单号
+     */
+    @Schema(description = "申请单号")
+    private String applyNo;
+
+
+    /**
+     * 创客编号
+     */
+    @Schema(description = "创客编号")
+    private Object userCode;
+
+
+    /**
+     * 创客姓名
+     */
+    @Schema(description = "创客姓名")
+    private Object username;
+
+
+    /**
+     * 提现时间区间['','']
+     */
+    @Schema(description = "提现时间区间['','']")
+    private Object createTime;
+
+
+
+
+}

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

@@ -3,8 +3,12 @@ package com.kxs.user.api.feign;
 
 import com.kxs.common.core.constant.SecurityConstants;
 import com.kxs.common.core.util.R;
+import com.kxs.user.api.dto.admin.user.UserSearchDTO;
 import com.kxs.user.api.dto.kxsapp.IntegralStatDTO;
 import com.kxs.user.api.model.*;
+import com.kxs.user.api.vo.admin.user.SysFeignUserDetailVO;
+import com.kxs.user.api.vo.admin.user.SysTopUserVO;
+import com.kxs.user.api.vo.admin.user.SysUserPageVO;
 import com.kxs.user.api.vo.kxsapp.user.RealUserInfoVO;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestHeader;
@@ -14,6 +18,7 @@ import org.springframework.web.service.annotation.GetExchange;
 import org.springframework.web.service.annotation.PostExchange;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author Lxq
@@ -190,4 +195,24 @@ public interface RemoteKxsUserService {
 	@GetExchange("/shareholder/prizePoolSynchronization")
 	void prizePoolSynchronization(@RequestParam(value = "para", required = false) String para, @RequestHeader(SecurityConstants.FROM) String from);
 
+
+	/**
+	 * 查询用户id集合(最多100条)
+	 * @param userSearchDTO
+	 * @param from
+	 * @return
+	 */
+	@PostExchange("/sysUser/search/list")
+	R<List<Integer>> searchUserList(@RequestBody UserSearchDTO userSearchDTO, @RequestHeader(SecurityConstants.FROM) String from);
+
+
+	/**
+	 * 通过用户id集合查询
+	 * @param userIds
+	 * @param from
+	 * @return
+	 */
+	@PostExchange("/sysUser/topUser/list")
+	R<Map<Integer, SysFeignUserDetailVO>> topUserList(@RequestBody List<Integer> userIds, @RequestHeader(SecurityConstants.FROM) String from);
+
 }

+ 34 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/user/SysFeignUserDetailVO.java

@@ -0,0 +1,34 @@
+package com.kxs.user.api.vo.admin.user;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 远程调用返回的用户信息
+ * @author debao.yang
+ * @createTime 2024-06-27 15:48
+ */
+@Data
+public class SysFeignUserDetailVO {
+
+
+    /**
+     * 用户名
+     */
+    private String username;
+    /**
+     * 邀请码
+     */
+    private String userCode;
+
+    /**
+     * 顶级创客姓名
+     */
+    private Object topUsername;
+
+
+    /**
+     * 顶级创客编号
+     */
+    private Object topUserCode;
+}

+ 24 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/user/SysTopUserVO.java

@@ -0,0 +1,24 @@
+package com.kxs.user.api.vo.admin.user;
+
+import com.kxs.user.api.model.KxsUser;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 顶级创客信息
+ * @author debao.yang
+ * @createTime 2024-06-27 14:33
+ */
+@Data
+public class SysTopUserVO{
+    /**
+     * 顶级创客姓名
+     */
+    private Object topUsername;
+
+
+    /**
+     * 顶级创客编号
+     */
+    private Object topUserCode;
+}

+ 81 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/user/SysUserPageVO.java

@@ -0,0 +1,81 @@
+package com.kxs.user.api.vo.admin.user;
+
+
+import com.kxs.user.api.model.KxsUser;
+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-06-24 09:30:02
+ */
+@Data
+@Schema(description = "创客信息-列表返回实体")
+public class SysUserPageVO extends KxsUser implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 实名时间
+     */
+    @Schema(description = "实名时间")
+    private Object realTime;
+
+
+    /**
+     * 上级创客姓名
+     */
+    @Schema(description = "上级创客姓名")
+    private Object pUsername;
+
+
+    /**
+     * 上级创客编码
+     */
+    @Schema(description = "上级创客编码")
+    private Object pUserCode;
+
+
+    /**
+     * 顶级创客姓名
+     */
+    @Schema(description = "顶级创客姓名")
+    private Object topUsername;
+
+
+    /**
+     * 顶级创客编号
+     */
+    @Schema(description = "顶级创客编号")
+    private Object topUserCode;
+
+
+    /**
+     * 是否盟主 1是
+     */
+    @Schema(description = "是否盟主 1是")
+    private Object isLeader;
+
+
+    /**
+     * 是否合伙人 1是
+     */
+    @Schema(description = "是否合伙人 1是")
+    private Object isPartner;
+
+
+
+
+
+	
+
+}

+ 80 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/user/SysUserUserAccountListVO.java

@@ -0,0 +1,80 @@
+package com.kxs.user.api.vo.admin.user;
+
+
+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-06-24 09:30:02
+ */
+@Data
+@Schema(description = "创客账户信息返回实体")
+public class SysUserUserAccountListVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 更新时间
+     */
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+
+    /**
+     * 用户名
+     */
+    @Schema(description = "用户名")
+    private String username;
+
+
+    /**
+     * 手机号
+     */
+    @Schema(description = "手机号")
+    private String phone;
+
+
+    /**
+     * 邀请码
+     */
+    @Schema(description = "邀请码")
+    private String userCode;
+
+
+    /**
+     * 备注信息
+     */
+    @Schema(description = "备注信息")
+    private String remark;
+
+
+    /**
+     * 账户余额
+     */
+    @Schema(description = "账户余额")
+    private Object amount;
+
+
+    /**
+     * 0锁定 1正常
+     */
+    @Schema(description = "0锁定 1正常")
+    private Object status;
+
+
+
+
+
+	
+
+}

+ 54 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/userAdvance/SysUserAdvancePageVO.java

@@ -0,0 +1,54 @@
+package com.kxs.user.api.vo.admin.userAdvance;
+
+
+import com.kxs.user.api.model.KxsUserAdvance;
+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-06-24 09:30:02
+ */
+@Data
+@Schema(description = "创客预扣款返回实体")
+public class SysUserAdvancePageVO extends KxsUserAdvance implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 创客编号
+     */
+    @Schema(description = "创客编号")
+    private Object userCode;
+
+
+    /**
+     * 创客姓名
+     */
+    @Schema(description = "创客姓名")
+    private Object username;
+
+
+    /**
+     * 创客电话
+     */
+    @Schema(description = "创客电话")
+    private Object phone;
+
+
+
+
+
+	
+
+}

+ 47 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/userLevel/SysUserLevelPageVO.java

@@ -0,0 +1,47 @@
+package com.kxs.user.api.vo.admin.userLevel;
+
+
+import com.kxs.user.api.model.KxsUserLevelLog;
+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-06-24 09:30:02
+ */
+@Data
+@Schema(description = "预设职级-列表返回实体")
+public class SysUserLevelPageVO extends KxsUserLevelLog implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+
+    /**
+     * 创客编码
+     */
+    @Schema(description = "创客编码")
+    private Object userCode;
+
+
+    /**
+     * 创客姓名
+     */
+    @Schema(description = "创客姓名")
+    private Object username;
+
+
+
+
+
+	
+
+}

+ 48 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/userWithdrawal/SysUserWithdrawalPageVO.java

@@ -0,0 +1,48 @@
+package com.kxs.user.api.vo.admin.userWithdrawal;
+
+
+import com.kxs.user.api.model.KxsUserWithdrawal;
+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-06-24 09:30:02
+ */
+@Data
+@Schema(description = "创客提现管理返回实体")
+public class SysUserWithdrawalPageVO extends KxsUserWithdrawal implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 创客编号
+     */
+    @Schema(description = "创客编号")
+    private Object userCode;
+
+
+    /**
+     * 创客姓名
+     */
+    @Schema(description = "创客姓名")
+    private Object username;
+
+
+    /**
+     * 身份证号
+     */
+    @Schema(description = "身份证号")
+    private Object idCard;
+
+
+}

+ 49 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/admin/SysUserAdvanceController.java

@@ -0,0 +1,49 @@
+package com.kxs.user.biz.controller.admin;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.common.core.util.R;
+import com.kxs.user.api.dto.admin.userAdvance.SysUserAdvancePageDTO;
+import com.kxs.user.api.vo.admin.userAdvance.SysUserAdvancePageVO;
+import com.kxs.user.biz.service.KxsUserAdvanceService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 创客信息管理(SysUserAdvance)控制层
+ *
+ * @author 系统
+ * @since 2024-06-24 09:30:02
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("sysUserAdvance")
+public class SysUserAdvanceController {
+
+    /**
+     * 服务对象
+     */
+    private final KxsUserAdvanceService kxsUserAdvanceService;
+
+
+
+    /**
+     * 创客预扣款
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 创客预扣款
+     */
+    @GetMapping("/page")
+    public R userAdvancePage(Page<SysUserAdvancePageVO> page, SysUserAdvancePageDTO param) {
+        kxsUserAdvanceService.userAdvancePage(page, param);
+        return R.ok(page);
+    }
+
+
+
+
+
+}
+

+ 243 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/admin/SysUserController.java

@@ -0,0 +1,243 @@
+package com.kxs.user.biz.controller.admin;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.common.core.constant.SecurityConstants;
+import com.kxs.common.core.constant.enums.UserStatusEnum;
+import com.kxs.common.core.util.R;
+import com.kxs.common.security.annotation.Inner;
+import com.kxs.user.api.dto.admin.user.RestPwdDTO;
+import com.kxs.user.api.dto.admin.user.SysUserLogoutListDTO;
+import com.kxs.user.api.dto.admin.user.SysUserPageDTO;
+import com.kxs.user.api.dto.admin.user.SysUserUnRealUserPageDTO;
+import com.kxs.user.api.dto.admin.user.SysUserUserAccountListDTO;
+import com.kxs.user.api.dto.admin.user.SysUserWhereListDTO;
+import com.kxs.user.api.dto.admin.user.UserSearchDTO;
+import com.kxs.user.api.model.KxsUser;
+import com.kxs.user.api.vo.admin.user.SysTopUserVO;
+import com.kxs.user.api.vo.admin.user.SysUserPageVO;
+import com.kxs.user.api.vo.admin.user.SysUserUserAccountListVO;
+import com.kxs.user.biz.constant.enums.UserRealStatusEnum;
+import com.kxs.user.biz.service.KxsUserReRealService;
+import com.kxs.user.biz.service.KxsUserService;
+import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
+import org.springdoc.core.annotations.ParameterObject;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 创客信息管理(SysUser)控制层
+ *
+ * @author 系统
+ * @since 2024-06-24 09:30:02
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("sysUser")
+public class SysUserController {
+
+    /**
+     * 服务对象
+     */
+    private final KxsUserService kxsUserService;
+    private final KxsUserReRealService kxsUserReRealService;
+
+
+
+    /**
+     * 创客信息-上下级创客
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 创客信息-上下级创客
+     */
+    @GetMapping("/whereList")
+    public R whereList(Page<SysUserPageVO> page, @Valid SysUserWhereListDTO param) {
+        kxsUserService.getUserWhereList(page, param);
+        return R.ok(page);
+    }
+
+
+    /**
+     * 已注销创客
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 已注销创客
+     */
+    @GetMapping("/logoutList")
+    public R logoutList(Page<KxsUser> page, SysUserLogoutListDTO param) {
+        kxsUserService.getLogoutListPage(page, param);
+        return R.ok(page);
+    }
+
+
+    /**
+     * 创客账户信息
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 创客账户信息
+     */
+    @GetMapping("/userAccountList")
+    public R userAccountList(Page<SysUserUserAccountListVO> page, SysUserUserAccountListDTO param) {
+        kxsUserService.userAccountPage(page, param);
+        return R.ok(page);
+    }
+
+
+    /**
+     * 未实名开放列表
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 未实名开放列表
+     */
+    @GetMapping("/unRealUserPage")
+    public R unRealUserPage(Page<KxsUser> page, SysUserUnRealUserPageDTO param) {
+        return R.ok(kxsUserService.page(page, Wrappers.<KxsUser>lambdaQuery()
+                .eq(KxsUser::getRealStatus, UserRealStatusEnum.NO.getType())
+                .like(StrUtil.isNotEmpty(param.getUsername()),KxsUser::getUsername,param.getUsername())
+                .eq(StrUtil.isNotEmpty(param.getUserCode()), KxsUser::getUserCode, param.getUserCode())));
+    }
+
+
+    /**
+     * 创客信息-列表
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 创客信息-列表
+     */
+    @GetMapping("/page")
+    public R page(Page<SysUserPageVO> page, @ParameterObject SysUserPageDTO param) {
+        kxsUserService.getUserPage(page, param);
+        return R.ok(page);
+    }
+
+
+    /**
+     * 创客信息-注销
+     *
+     * @param userId 创客ID结合
+     * @return 创客信息-注销
+     */
+    @DeleteMapping("/logout/{userId}")
+    public R logout(@PathVariable("userId") String userId) {
+        kxsUserService.updateStatusByUserId(userId, UserStatusEnum.REMOVE);
+        return R.ok();
+    }
+
+    /**
+     * 创客信息-注销(批量)
+     *
+     * @param userIdList 创客ID结合
+     * @return 创客信息-注销
+     */
+    @DeleteMapping("/logout/batch")
+    public R batchLogout(@RequestParam("userIdList") List<String> userIdList) {
+        kxsUserService.updateStatusByUserIds(userIdList,UserStatusEnum.REMOVE);
+        return R.ok();
+    }
+
+
+    /**
+     * 创客信息-重置密码
+     *
+     * @param param 实体对象
+     * @return 创客信息-重置密码
+     */
+    @PutMapping("/restPwd")
+    public R restPwd(@RequestBody RestPwdDTO param) {
+        kxsUserService.restPwd(param);
+        return R.ok();
+    }
+
+
+    /**
+     * 创客信息-锁定
+     *
+     * @param userId 创客ID结合
+     * @return 创客信息-锁定
+     */
+    @DeleteMapping("/lockUser/{userId}")
+    public R lockUser(@PathVariable("userId") String userId) {
+        kxsUserService.updateStatusByUserId(userId,UserStatusEnum.LOCKED);
+        return R.ok();
+    }
+
+    /**
+     * 创客信息-锁定(批量操作)
+     *
+     * @param userIdList 创客ID结合
+     * @return 创客信息-锁定
+     */
+    @DeleteMapping("/lockUser/batch")
+    public R batchLockUser(@RequestParam("userIdList") List<String> userIdList) {
+        kxsUserService.updateStatusByUserIds(userIdList,UserStatusEnum.LOCKED);
+        return R.ok();
+    }
+
+
+//    /**
+//     * 创客信息-交易额查询
+//     *
+//     * @param userCode 邀请码
+//     * @return 创客信息-交易额查询
+//     */
+//    @GetMapping("/{userTradeAmt}")
+//    public R userTradeAmt(@RequestParam("userCode") String userCode) {
+//        return R.ok(kxsUserService.getByUserCode(userCode));
+//    }
+//
+//
+//    /**
+//     * 创客信息-直属创客交易额
+//     *
+//     * @param page 分页对象
+//     * @param param 查询实体
+//     * @return 创客信息-直属创客交易额
+//     */
+//    @GetMapping("/teamTradeAmt")
+//    public R teamTradeAmt(Page<SysUserTeamTradeAmtVO> page, SysUserTeamTradeAmtDTO param) {
+//        return R.ok(kxsUserService.page(page, new QueryWrapper<>(param)));
+//    }
+
+    /**
+     * 通过搜索条件查询用户数据
+     * @param userSearchDTO
+     * @return
+     */
+    @Inner
+    @PostMapping("/search/list")
+    public R searchUserList(@RequestBody UserSearchDTO userSearchDTO) {
+        return R.ok(kxsUserService.searchUserList(userSearchDTO));
+    }
+
+    /**
+     * 通过用户id查询用户数据
+     * @param userIds
+     * @return Map<Integer,SysFeignUserDetailVO>
+     */
+    @Inner
+    @PostMapping("/topUser/list")
+    public R topUserList(@RequestBody List<Integer> userIds){
+        return R.ok(kxsUserService.topUserList(userIds));
+    }
+
+
+}
+

+ 49 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/admin/SysUserLevelController.java

@@ -0,0 +1,49 @@
+package com.kxs.user.biz.controller.admin;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.common.core.util.R;
+import com.kxs.user.api.dto.admin.userLevel.SysUserLevelPageDTO;
+import com.kxs.user.api.vo.admin.userLevel.SysUserLevelPageVO;
+import com.kxs.user.biz.service.KxsUserLevelLogService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 创客信息管理(SysUserLevel)控制层
+ *
+ * @author 系统
+ * @since 2024-06-24 09:30:02
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("sysUserLevel")
+public class SysUserLevelController {
+
+    /**
+     * 服务对象
+     */
+    private final KxsUserLevelLogService kxsUserLevelLogService;
+
+
+
+    /**
+     * 预设职级-列表
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 预设职级-列表
+     */
+    @GetMapping("/page")
+    public R userLevelPage(Page<SysUserLevelPageVO> page, SysUserLevelPageDTO param) {
+        kxsUserLevelLogService.userLevelPage(page, param);
+        return R.ok(page);
+    }
+
+
+
+
+
+}
+

+ 45 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/admin/SysUserWithdrawalController.java

@@ -0,0 +1,45 @@
+package com.kxs.user.biz.controller.admin;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.common.core.util.R;
+import com.kxs.user.api.dto.admin.userWithdrawal.SysUserWithdrawalPageDTO;
+import com.kxs.user.api.vo.admin.userWithdrawal.SysUserWithdrawalPageVO;
+import com.kxs.user.biz.service.KxsUserWithdrawalService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 创客信息管理(SysUserWithdrawal)控制层
+ *
+ * @author 系统
+ * @since 2024-06-24 09:30:02
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("sysUserWithdrawal")
+public class SysUserWithdrawalController {
+
+    /**
+     * 服务对象
+     */
+    private final KxsUserWithdrawalService kxsUserWithdrawalService;
+
+
+
+    /**
+     * 创客提现管理
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 创客提现管理
+     */
+    @GetMapping("/page")
+    public R userWithdrawalPage(Page<SysUserWithdrawalPageVO> page, SysUserWithdrawalPageDTO param) {
+        kxsUserWithdrawalService.userWithdrawalPage(page, param);
+        return R.ok(page);
+    }
+
+}
+

+ 13 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserAdvanceMapper.java

@@ -1,8 +1,14 @@
 package com.kxs.user.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.user.api.dto.admin.userAdvance.SysUserAdvancePageDTO;
 import com.kxs.user.api.model.KxsUserAdvance;
+import com.kxs.user.api.vo.admin.userAdvance.SysUserAdvancePageVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 客小爽用户预扣款表(KxsUserAdvance)表数据库访问层
@@ -13,5 +19,12 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface KxsUserAdvanceMapper extends BaseMapper<KxsUserAdvance> {
 
+    /**
+     * 分页查询用户预扣款
+     * @param page
+     * @param param
+     * @return
+     */
+    List<SysUserAdvancePageVO> userAdvancePage(Page page, @Param("query")SysUserAdvancePageDTO param);
 }
 

+ 16 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserLevelLogMapper.java

@@ -1,8 +1,16 @@
 package com.kxs.user.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.user.api.dto.admin.userLevel.SysUserLevelPageDTO;
+import com.kxs.user.api.dto.admin.userWithdrawal.SysUserWithdrawalPageDTO;
 import com.kxs.user.api.model.KxsUserLevelLog;
+import com.kxs.user.api.vo.admin.userLevel.SysUserLevelPageVO;
+import com.kxs.user.api.vo.admin.userWithdrawal.SysUserWithdrawalPageVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 用户预设职级日志表(KxsUserLevelLog)表数据库访问层
@@ -13,5 +21,13 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface KxsUserLevelLogMapper extends BaseMapper<KxsUserLevelLog> {
 
+
+    /**
+     * 分页查询预设职级列表
+     * @param page
+     * @param param
+     * @return
+     */
+    List<SysUserLevelPageVO> userLevelPage (Page page, @Param("query") SysUserLevelPageDTO param);
 }
 

+ 43 - 1
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserMapper.java

@@ -1,14 +1,22 @@
 package com.kxs.user.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.user.api.dto.admin.user.SysUserLogoutListDTO;
+import com.kxs.user.api.dto.admin.user.SysUserPageDTO;
+import com.kxs.user.api.dto.admin.user.SysUserUserAccountListDTO;
+import com.kxs.user.api.dto.admin.user.SysUserWhereListDTO;
 import com.kxs.user.api.dto.kxsapp.user.UserMyUserListDTO;
 import com.kxs.user.api.model.KxsUser;
+import com.kxs.user.api.vo.admin.user.SysUserPageVO;
+import com.kxs.user.api.vo.admin.user.SysUserUserAccountListVO;
 import com.kxs.user.api.vo.kxsapp.user.RealUserInfoVO;
 import com.kxs.user.api.vo.kxsapp.user.SearchMyUserListVO;
 import com.kxs.user.api.vo.kxsapp.user.UserMyUserListVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+import java.util.List;
 
 import java.util.List;
 
@@ -68,5 +76,39 @@ public interface KxsUserMapper extends BaseMapper<KxsUser> {
      * @return {@link List}<{@link SearchMyUserListVO}>
      */
     List<SearchMyUserListVO> searchMyUserList(@Param("userId") Long userId, @Param("keyword") String keyword);
+
+
+    /**
+     * 分页查询创客信息
+     * @param page 分页
+     * @param param 查询参数
+     * @return list
+     */
+    List<SysUserPageVO> getUserPage(Page page, @Param("query") SysUserPageDTO param);
+
+    /**
+     * 分页查询上下级创客信息
+     * @param page
+     * @param param
+     * @return
+     */
+    List<SysUserPageVO> getUserWhereList(Page page, @Param("query") SysUserWhereListDTO param);
+
+    /**
+     * 分页查询已注销创客
+     * @param page 分页
+     * @param param 查询参数
+     * @return list
+     */
+    List<KxsUser> getLogoutListPage(Page page, @Param("query") SysUserLogoutListDTO param);
+
+
+    /**
+     * 分页查询用户账号信息
+     * @param page
+     * @param param
+     * @return
+     */
+    List<SysUserUserAccountListVO> userAccountPage(Page page, @Param("query")SysUserUserAccountListDTO param);
 }
 

+ 13 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserWithdrawalMapper.java

@@ -3,9 +3,14 @@ package com.kxs.user.biz.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.user.api.dto.admin.userWithdrawal.SysUserWithdrawalPageDTO;
 import com.kxs.user.api.model.KxsUserWithdrawal;
+import com.kxs.user.api.vo.admin.userWithdrawal.SysUserWithdrawalPageVO;
 import com.kxs.user.api.vo.kxsapp.userAccount.WithdrawListVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 用户提现申请表(KxsUserWithdrawal)表数据库访问层
@@ -17,5 +22,13 @@ import org.apache.ibatis.annotations.Mapper;
 public interface KxsUserWithdrawalMapper extends BaseMapper<KxsUserWithdrawal> {
 
     IPage<WithdrawListVO> getByPage(Page<WithdrawListVO> page);
+
+    /**
+     * 分页查询用户提现申请表
+     * @param page
+     * @param param
+     * @return
+     */
+    List<SysUserWithdrawalPageVO> userAccountPage (Page page, @Param("query") SysUserWithdrawalPageDTO param);
 }
 

+ 13 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserAdvanceService.java

@@ -1,8 +1,13 @@
 package com.kxs.user.biz.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.kxs.common.core.util.R;
+import com.kxs.user.api.dto.admin.userAdvance.SysUserAdvancePageDTO;
 import com.kxs.user.api.model.KxsUserAdvance;
+import com.kxs.user.api.vo.admin.userAdvance.SysUserAdvancePageVO;
+
+import java.util.List;
 
 /**
  * 客小爽用户预扣款表(KxsUserAdvance)表服务接口
@@ -19,5 +24,13 @@ public interface KxsUserAdvanceService extends IService<KxsUserAdvance> {
      * @return {@link R}
      */
     R returnAdvance(Integer advanceId);
+
+    /**
+     * 预设职级列表查询
+     * @param page
+     * @param param
+     * @return
+     */
+    List<SysUserAdvancePageVO> userAdvancePage(Page page, SysUserAdvancePageDTO param);
 }
 

+ 13 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserLevelLogService.java

@@ -1,7 +1,12 @@
 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.dto.admin.userLevel.SysUserLevelPageDTO;
 import com.kxs.user.api.model.KxsUserLevelLog;
+import com.kxs.user.api.vo.admin.userLevel.SysUserLevelPageVO;
+
+import java.util.List;
 
 /**
  * 用户预设职级日志表(KxsUserLevelLog)表服务接口
@@ -11,5 +16,13 @@ import com.kxs.user.api.model.KxsUserLevelLog;
  */
 public interface KxsUserLevelLogService extends IService<KxsUserLevelLog> {
 
+
+    /**
+     * 预设职级管理列表查询
+     * @param page
+     * @param pageDTO
+     * @return
+     */
+    List<SysUserLevelPageVO> userLevelPage(Page page, SysUserLevelPageDTO pageDTO);
 }
 

+ 83 - 2
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserService.java

@@ -1,22 +1,43 @@
 package com.kxs.user.biz.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.common.core.constant.enums.UserStatusEnum;
+import com.kxs.common.core.constant.enums.UserStatusEnum;
 import com.kxs.common.core.util.R;
 import com.kxs.product.api.vo.kxsapp.excel.ExistPayPwdVO;
+import com.kxs.user.api.dto.admin.user.RestPwdDTO;
+import com.kxs.user.api.dto.admin.user.SysUserLogoutListDTO;
+import com.kxs.user.api.dto.admin.user.SysUserPageDTO;
+import com.kxs.user.api.dto.admin.user.SysUserUserAccountListDTO;
+import com.kxs.user.api.dto.admin.user.SysUserWhereListDTO;
+import com.kxs.user.api.dto.admin.user.UserSearchDTO;
 import com.kxs.user.api.dto.kxsapp.ConcealParentDTO;
 import com.kxs.user.api.dto.kxsapp.app.ForgetPwdDTO;
 import com.kxs.user.api.dto.kxsapp.app.MchRegisterDTO;
 import com.kxs.user.api.dto.kxsapp.app.RegisterDTO;
-import com.kxs.user.api.dto.kxsapp.user.*;
+import com.kxs.user.api.dto.kxsapp.user.ForgetPayPwdDTO;
+import com.kxs.user.api.dto.kxsapp.user.RealUserDTO;
+import com.kxs.user.api.dto.kxsapp.user.UserCheckUserInfoDTO;
+import com.kxs.user.api.dto.kxsapp.user.UserHandPwdDTO;
+import com.kxs.user.api.dto.kxsapp.user.UserMyUserListDTO;
+import com.kxs.user.api.dto.kxsapp.user.UserUpdateAreaDTO;
+import com.kxs.user.api.dto.kxsapp.user.UserUpdateLoginPhoneDTO;
+import com.kxs.user.api.dto.kxsapp.user.UserUpdatePwdDTO;
 import com.kxs.user.api.model.KxsUser;
+import com.kxs.user.api.vo.admin.user.SysFeignUserDetailVO;
+import com.kxs.user.api.vo.admin.user.SysTopUserVO;
+import com.kxs.user.api.vo.admin.user.SysUserPageVO;
+import com.kxs.user.api.vo.admin.user.SysUserUserAccountListVO;
 import com.kxs.user.api.vo.kxsapp.user.RealUserInfoVO;
 import com.kxs.user.api.vo.kxsapp.user.SearchMyUserListVO;
 import com.kxs.user.api.vo.kxsapp.user.UserCodeInfoVO;
 import com.kxs.user.api.vo.kxsapp.user.UserInfoVO;
 import com.kxs.user.api.vo.kxsapp.userLevel.LevelDetailVO;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 用户表(KxsSecurityUser)表服务接口
@@ -285,5 +306,65 @@ public interface KxsUserService extends IService<KxsUser> {
      * @return {@link List}<{@link SearchMyUserListVO}>
      */
     List<SearchMyUserListVO> searchMyUserList(String keyword);
+
+    /**
+     * 分页查询创客列表
+     * @param page
+     * @param param
+     * @return
+     */
+    List<SysUserPageVO> getUserPage(Page page, SysUserPageDTO param);
+
+    /**
+     * 分页查询创客上下级列表
+     * @param page
+     * @param param
+     * @return
+     */
+    List<SysUserPageVO> getUserWhereList(Page page, SysUserWhereListDTO param);
+
+    /**
+     * 分页查询已注销创客
+     * @param page
+     * @param param
+     * @return
+     */
+    List<KxsUser> getLogoutListPage(Page page, SysUserLogoutListDTO param);
+
+    /**
+     * 更新用户状态(注销,锁定)
+     * @param userId
+     */
+    void updateStatusByUserId(String userId, UserStatusEnum userStatusEnum);
+
+    /**
+     * 批量更新用户状态(注销,锁定)
+     * @param userIdList
+     * @param userStatusEnum
+     */
+    void updateStatusByUserIds(List<String> userIdList, UserStatusEnum userStatusEnum);
+
+    /**
+     * 重置密码
+     * @param param
+     */
+    void restPwd(RestPwdDTO param);
+
+    List<SysUserUserAccountListVO> userAccountPage(Page page, SysUserUserAccountListDTO param);
+
+
+    /**
+     * 查询用户的id集合数据(最多100条)
+     * @return
+     */
+    List<Integer> searchUserList(UserSearchDTO userSearchDTO);
+
+    /**
+     * 通过id集合查询用户数据
+     * @param userIds
+     * @return
+     */
+    Map<Integer, SysFeignUserDetailVO> topUserList(List<Integer> userIds);
+
 }
 

+ 12 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserWithdrawalService.java

@@ -4,11 +4,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.kxs.common.core.util.R;
+import com.kxs.user.api.dto.admin.userWithdrawal.SysUserWithdrawalPageDTO;
 import com.kxs.user.api.dto.kxsapp.userAccount.WithdrawDepositDTO;
 import com.kxs.user.api.model.KxsUserWithdrawal;
+import com.kxs.user.api.vo.admin.userWithdrawal.SysUserWithdrawalPageVO;
 import com.kxs.user.api.vo.kxsapp.userAccount.WithdrawDetailVO;
 import com.kxs.user.api.vo.kxsapp.userAccount.WithdrawListVO;
 
+import java.util.List;
+
 /**
  * 用户提现申请表(KxsUserWithdrawal)表服务接口
  *
@@ -41,5 +45,13 @@ public interface KxsUserWithdrawalService extends IService<KxsUserWithdrawal> {
      * @return {@link WithdrawDetailVO}
      */
     WithdrawDetailVO withdrawDetail(Integer id);
+
+    /**
+     * 创客提现管理分页查询
+     * @param page
+     * @param param
+     * @return
+     */
+    List<SysUserWithdrawalPageVO> userWithdrawalPage(Page page, SysUserWithdrawalPageDTO param);
 }
 

+ 13 - 5
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserAdvanceServiceImpl.java

@@ -1,26 +1,25 @@
 package com.kxs.user.biz.service.impl;
 
-import cn.hutool.core.util.NumberUtil;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kxs.common.core.constant.enums.AmountLogChangeTypesEnum;
 import com.kxs.common.core.constant.enums.KindTypeEnum;
 import com.kxs.common.core.exception.GlobalCustomerException;
 import com.kxs.common.core.util.R;
-import com.kxs.user.api.model.KxsUserAmount;
+import com.kxs.user.api.dto.admin.userAdvance.SysUserAdvancePageDTO;
 import com.kxs.common.core.constant.enums.UserAdvanceStatusEnum;
 import com.kxs.user.api.model.KxsUserAmountLog;
+import com.kxs.user.api.vo.admin.userAdvance.SysUserAdvancePageVO;
 import com.kxs.user.biz.mapper.KxsUserAdvanceMapper;
 import com.kxs.user.api.model.KxsUserAdvance;
 import com.kxs.user.biz.mapper.KxsUserAmountMapper;
 import com.kxs.user.biz.service.KxsUserAdvanceService;
-import com.kxs.user.biz.service.KxsUserAmountLogService;
 import com.kxs.user.biz.service.KxsUserAmountService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * 客小爽用户预扣款表(KxsUserAdvance)表服务实现类
@@ -62,5 +61,14 @@ public class KxsUserAdvanceServiceImpl extends ServiceImpl<KxsUserAdvanceMapper,
 
         return R.ok();
     }
+
+    @Override
+    public List<SysUserAdvancePageVO> userAdvancePage(Page page, SysUserAdvancePageDTO param) {
+        List<SysUserAdvancePageVO> list = baseMapper.userAdvancePage(page, param);
+        if (page != null) {
+            page.setRecords(list);
+        }
+        return list;
+    }
 }
 

+ 13 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserLevelLogServiceImpl.java

@@ -1,11 +1,16 @@
 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.dto.admin.userLevel.SysUserLevelPageDTO;
+import com.kxs.user.api.vo.admin.userLevel.SysUserLevelPageVO;
 import com.kxs.user.biz.mapper.KxsUserLevelLogMapper;
 import com.kxs.user.api.model.KxsUserLevelLog;
 import com.kxs.user.biz.service.KxsUserLevelLogService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 用户预设职级日志表(KxsUserLevelLog)表服务实现类
  *
@@ -15,5 +20,13 @@ import org.springframework.stereotype.Service;
 @Service("kxsUserLevelLogService")
 public class KxsUserLevelLogServiceImpl extends ServiceImpl<KxsUserLevelLogMapper, KxsUserLevelLog> implements KxsUserLevelLogService {
 
+    @Override
+    public List<SysUserLevelPageVO> userLevelPage(Page page, SysUserLevelPageDTO pageDTO) {
+        List<SysUserLevelPageVO> list = baseMapper.userLevelPage(page, pageDTO);
+        if(page != null){
+            page.setRecords(list);
+        }
+        return list;
+    }
 }
 

+ 231 - 7
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserServiceImpl.java

@@ -1,15 +1,18 @@
 package com.kxs.user.biz.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.text.CharSequenceUtil;
-import cn.hutool.core.text.StrPool;
 import cn.hutool.core.util.IdcardUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.crypto.SecureUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kxs.common.core.constant.CacheConstants;
 import com.kxs.common.core.constant.CommonConstants;
@@ -31,29 +34,62 @@ import com.kxs.store.api.model.KxsWarehouseLimit;
 import com.kxs.system.api.feign.RemoteUserMsgService;
 import com.kxs.system.api.model.KxsUserMsg;
 import com.kxs.system.api.util.MsgTemplateUtil;
+import com.kxs.user.api.dto.admin.user.RestPwdDTO;
+import com.kxs.user.api.dto.admin.user.SysUserLogoutListDTO;
+import com.kxs.user.api.dto.admin.user.SysUserPageDTO;
+import com.kxs.user.api.dto.admin.user.SysUserUserAccountListDTO;
+import com.kxs.user.api.dto.admin.user.SysUserWhereListDTO;
+import com.kxs.user.api.dto.admin.user.UserSearchDTO;
 import com.kxs.user.api.dto.kxsapp.ConcealParentDTO;
 import com.kxs.user.api.dto.kxsapp.app.ForgetPwdDTO;
 import com.kxs.user.api.dto.kxsapp.app.MchRegisterDTO;
 import com.kxs.user.api.dto.kxsapp.app.RegisterDTO;
-import com.kxs.user.api.dto.kxsapp.user.*;
-import com.kxs.user.api.model.*;
-import com.kxs.user.api.vo.kxsapp.user.*;
+import com.kxs.user.api.dto.kxsapp.user.ForgetPayPwdDTO;
+import com.kxs.user.api.dto.kxsapp.user.RealUserDTO;
+import com.kxs.user.api.dto.kxsapp.user.UserCheckUserInfoDTO;
+import com.kxs.user.api.dto.kxsapp.user.UserHandPwdDTO;
+import com.kxs.user.api.dto.kxsapp.user.UserMyUserListDTO;
+import com.kxs.user.api.dto.kxsapp.user.UserUpdateAreaDTO;
+import com.kxs.user.api.dto.kxsapp.user.UserUpdateLoginPhoneDTO;
+import com.kxs.user.api.dto.kxsapp.user.UserUpdatePwdDTO;
+import com.kxs.user.api.model.KxsLeader;
+import com.kxs.user.api.model.KxsPartner;
+import com.kxs.user.api.model.KxsUser;
+import com.kxs.user.api.model.KxsUserAmount;
+import com.kxs.user.api.model.KxsUserBank;
+import com.kxs.user.api.model.KxsUserPresetLog;
+import com.kxs.user.api.model.KxsUserReal;
+import com.kxs.user.api.vo.admin.user.SysFeignUserDetailVO;
+import com.kxs.user.api.vo.admin.user.SysTopUserVO;
+import com.kxs.user.api.vo.admin.user.SysUserPageVO;
+import com.kxs.user.api.vo.admin.user.SysUserUserAccountListVO;
+import com.kxs.user.api.vo.kxsapp.user.RealUserInfoVO;
+import com.kxs.user.api.vo.kxsapp.user.UserCodeInfoVO;
+import com.kxs.user.api.vo.kxsapp.user.UserInfoVO;
+import com.kxs.user.api.vo.kxsapp.user.UserMyUserDetailVO;
+import com.kxs.user.api.vo.kxsapp.user.UserMyUserStatisticsVO;
 import com.kxs.user.api.vo.kxsapp.userLevel.LevelDetailVO;
 import com.kxs.user.api.vo.kxsapp.userLevel.LevelsVO;
 import com.kxs.user.biz.constant.UserConstants;
 import com.kxs.user.biz.constant.enums.KxsUserStatusEnum;
 import com.kxs.user.biz.constant.enums.UserErrorTypeEnum;
 import com.kxs.user.biz.constant.enums.UserRealStatusEnum;
-import com.kxs.user.biz.mapper.*;
+import com.kxs.user.biz.mapper.KxsLeaderMapper;
+import com.kxs.user.biz.mapper.KxsPartnerMapper;
+import com.kxs.user.biz.mapper.KxsUserAmountMapper;
+import com.kxs.user.biz.mapper.KxsUserBankMapper;
+import com.kxs.user.biz.mapper.KxsUserMapper;
+import com.kxs.user.biz.mapper.KxsUserPresetLogMapper;
+import com.kxs.user.biz.mapper.KxsUserRealMapper;
 import com.kxs.user.biz.service.KxsUserService;
 import com.kxs.user.biz.util.SmsUtils;
+import com.kxs.user.biz.util.TopUserIdUtil;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.RequiredArgsConstructor;
-import org.checkerframework.checker.units.qual.K;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cache.CacheManager;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.security.authentication.event.LogoutSuccessEvent;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@@ -69,7 +105,9 @@ import org.springframework.transaction.annotation.Transactional;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
@@ -270,6 +308,192 @@ public class KxsUserServiceImpl extends ServiceImpl<KxsUserMapper, KxsUser> impl
     }
 
 
+    @Override
+    public List<SysUserPageVO> getUserPage(Page page, SysUserPageDTO param) {
+        List<SysUserPageVO> list = baseMapper.getUserPage(page, param);
+        //封装顶级创客信息
+        packageTopUser(list);
+        if(page != null){
+            page.setRecords(list);
+        }
+        return list;
+    }
+
+    /**
+     * 封装顶级创客信息
+     * @param list
+     */
+    private void packageTopUser(List<SysUserPageVO> list){
+        if(CollectionUtil.isNotEmpty(list)){
+            List<KxsUser> kxsUserList = new ArrayList<>();
+            kxsUserList.addAll(list);
+            Map<Integer, SysTopUserVO> topUserMap = getTopUserMap(kxsUserList);
+            for(SysUserPageVO sysUserPageVO:list){
+                Integer userId = sysUserPageVO.getId();
+                if(topUserMap.containsKey(userId)){
+                    SysTopUserVO sysTopUserVO = topUserMap.get(userId);
+                    sysUserPageVO.setTopUsername(sysTopUserVO.getTopUsername());
+                    sysUserPageVO.setTopUserCode(sysTopUserVO.getTopUserCode());
+                }
+            }
+        }
+    }
+
+    /**
+     * 获取用户和顶级创客的关系map
+     * @param list
+     * @return
+     */
+    private Map<Integer,SysTopUserVO> getTopUserMap(List<KxsUser> list){
+        //用户和顶级创客的对应关系
+        Map<Integer,SysTopUserVO> topUserMap = new HashMap<>();
+        if(CollectionUtil.isEmpty(list)){
+            return topUserMap;
+        }
+        //顶级创客的userId集合
+        List<Integer> userIds = new ArrayList<>();
+        //当前用户和顶级创客对应关系map
+        Map<Integer,Integer> map = new HashMap<>();
+        for(KxsUser kxsUser:list){
+            String pidPath = kxsUser.getPidPath();
+            String topUserId = TopUserIdUtil.getTopUserId(pidPath);
+            if(StringUtils.isNotBlank(topUserId)){
+                map.put(kxsUser.getId(),Integer.valueOf(topUserId));
+                userIds.add(Integer.valueOf(topUserId));
+            }
+        }
+        if(CollectionUtil.isNotEmpty(userIds)){
+            //查询顶级创客
+            List<KxsUser> kxsUsers = listByIds(userIds);
+            Map<Integer, KxsUser> userMap = kxsUsers.stream().collect(Collectors.toMap(o -> o.getId(), o -> o, (o1, o2) -> o2));
+            for(Integer userId:map.keySet()){
+                Integer topUserId = map.get(userId);
+                if(map.containsKey(userId) && userMap.containsKey(topUserId)){
+                    KxsUser kxsUser = userMap.get(topUserId);
+                    SysTopUserVO sysTopUserVO = new SysTopUserVO();
+                    sysTopUserVO.setTopUserCode(kxsUser.getUserCode());
+                    sysTopUserVO.setTopUsername(kxsUser.getUsername());
+                    topUserMap.put(userId,sysTopUserVO);
+                }
+            }
+       }
+       return topUserMap;
+    }
+
+    @Override
+    public List<SysUserPageVO> getUserWhereList(Page page, SysUserWhereListDTO param) {
+        String userId = param.getUserId();
+        KxsUser kxsUser = getById(userId);
+        if(kxsUser == null){
+            throw new GlobalCustomerException("创客信息不存在");
+        }
+        param.setPid(kxsUser.getPid());
+        List<SysUserPageVO> list = baseMapper.getUserWhereList(page, param);
+        //封装顶级创客信息
+        packageTopUser(list);
+        if(page != null){
+            page.setRecords(list);
+        }
+        return list;
+    }
+
+    @Override
+    public List<KxsUser> getLogoutListPage(Page page, SysUserLogoutListDTO param) {
+        List<KxsUser> list = baseMapper.getLogoutListPage(page, param);
+        if(page != null){
+            page.setRecords(list);
+        }
+        return list;
+    }
+
+    @Override
+    public void updateStatusByUserId(String userId,UserStatusEnum userStatusEnum) {
+        KxsUser kxsUser = getById(userId);
+        if(kxsUser == null){
+            throw new GlobalCustomerException("创客信息不存在");
+        }
+        kxsUser.setStatus(userStatusEnum.getCode());
+        updateById(kxsUser);
+    }
+
+    @Override
+    public void updateStatusByUserIds(List<String> userIdList,UserStatusEnum userStatusEnum) {
+        if(CollectionUtil.isNotEmpty(userIdList)){
+            List<KxsUser> kxsUsers = listByIds(userIdList);
+            if(CollectionUtil.isNotEmpty(kxsUsers)){
+                for(KxsUser kxsUser:kxsUsers){
+                    kxsUser.setStatus(userStatusEnum.getCode());
+                }
+                this.updateBatchById(kxsUsers);
+            }
+        }
+    }
+
+    @Override
+    public void restPwd(RestPwdDTO param) {
+        KxsUser kxsUser = getById(param.getUserId());
+        if(kxsUser == null){
+            throw new GlobalCustomerException("创客信息不存在");
+        }
+        String password = param.getPassword();
+        if(StringUtils.isBlank(password)){
+            password = "123456";
+        }
+        if(StringUtils.isBlank(kxsUser.getSalt())){
+            kxsUser.setSalt(UUID.randomUUID().toString());
+        }
+
+        //重置密码
+        kxsUser.setPassword(ENCODER.encode(password + kxsUser.getSalt()));
+
+        //保存新密码
+        this.updateById(kxsUser);
+    }
+
+    @Override
+    public List<SysUserUserAccountListVO> userAccountPage(Page page, SysUserUserAccountListDTO param) {
+        List<SysUserUserAccountListVO> list = baseMapper.userAccountPage(page, param);
+        if(page != null){
+            page.setRecords(list);
+        }
+        return list;
+    }
+
+    @Override
+    public List<Integer> searchUserList(UserSearchDTO userSearchDTO) {
+        LambdaQueryWrapper<KxsUser> query = new LambdaQueryWrapper();
+        query.like(StringUtils.isNotBlank(userSearchDTO.getUsername()),KxsUser::getUsername,userSearchDTO.getUsername());
+        query.like(StringUtils.isNotBlank(userSearchDTO.getUserCode()),KxsUser::getUserCode,userSearchDTO.getUserCode());
+        query.last("limit 100");
+        List<Integer> ids = new ArrayList<>();
+        List<KxsUser> userList = this.list(query);
+        if(CollectionUtil.isNotEmpty(userList)){
+            ids = userList.stream().map(o -> o.getId()).collect(Collectors.toList());
+        }
+        return ids;
+    }
+
+    @Override
+    public Map<Integer, SysFeignUserDetailVO> topUserList(List<Integer> userIds) {
+        List<KxsUser> kxsUsers = listByIds(userIds);
+        Map<Integer, SysTopUserVO> topUserMap = getTopUserMap(kxsUsers);
+        Map<Integer,SysFeignUserDetailVO> map = new HashMap<>();
+        if(CollectionUtil.isNotEmpty(kxsUsers)){
+            for(KxsUser kxsUser:kxsUsers){
+                SysFeignUserDetailVO sysFeignUserDetailVO = new SysFeignUserDetailVO();
+                sysFeignUserDetailVO.setUsername(kxsUser.getUsername());
+                sysFeignUserDetailVO.setUserCode(kxsUser.getUserCode());
+                if(topUserMap.containsKey(kxsUser.getId())){
+                    SysTopUserVO sysTopUserVO = topUserMap.get(kxsUser.getId());
+                    sysFeignUserDetailVO.setTopUserCode(sysTopUserVO.getTopUserCode());
+                    sysFeignUserDetailVO.setTopUsername(sysTopUserVO.getTopUsername());
+                }
+                map.put(kxsUser.getId(),sysFeignUserDetailVO);
+            }
+        }
+        return map;
+    }
+
     @Override
     public Boolean sendCode(String mobile) {
 

+ 11 - 14
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserWithdrawalServiceImpl.java

@@ -1,6 +1,5 @@
 package com.kxs.user.biz.service.impl;
 
-import cn.hutool.core.lang.Snowflake;
 import cn.hutool.core.text.CharSequenceUtil;
 import cn.hutool.core.util.EnumUtil;
 import cn.hutool.core.util.IdUtil;
@@ -12,9 +11,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kxs.common.core.constant.CommonConstants;
 import com.kxs.common.core.util.R;
 import com.kxs.common.security.util.SecurityUtils;
+import com.kxs.user.api.dto.admin.userWithdrawal.SysUserWithdrawalPageDTO;
 import com.kxs.user.api.dto.kxsapp.userAccount.WithdrawDepositDTO;
 import com.kxs.user.api.model.KxsUserAmount;
 import com.kxs.user.api.model.KxsUserBank;
+import com.kxs.user.api.vo.admin.userWithdrawal.SysUserWithdrawalPageVO;
 import com.kxs.user.api.vo.kxsapp.userAccount.WithdrawDetailVO;
 import com.kxs.user.api.vo.kxsapp.userAccount.WithdrawListVO;
 import com.kxs.user.biz.constant.enums.UserErrorTypeEnum;
@@ -31,6 +32,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * 用户提现申请表(KxsUserWithdrawal)表服务实现类
@@ -164,19 +166,14 @@ public class KxsUserWithdrawalServiceImpl extends ServiceImpl<KxsUserWithdrawalM
         return detailVO;
     }
 
-
-
-
-
-
-
-
-
-
-
-
-
-
+    @Override
+    public List<SysUserWithdrawalPageVO> userWithdrawalPage(Page page, SysUserWithdrawalPageDTO param) {
+        List<SysUserWithdrawalPageVO> list = baseMapper.userAccountPage(page, param);
+        if(page != null){
+            page.setRecords(list);
+        }
+        return list;
+    }
 
 
 }

+ 29 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/util/TopUserIdUtil.java

@@ -0,0 +1,29 @@
+package com.kxs.user.biz.util;
+
+
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * 获取创客顶级创客
+ * @author debao.yang
+ * @createTime 2024-06-26 10:39
+ */
+public class TopUserIdUtil {
+
+    private static final  Integer topCode = 2;
+
+    private static final  String divide = ",";
+
+
+    public static String getTopUserId(String pidPath) {
+        String topUserId = "";
+        if(StringUtils.isNotBlank(pidPath)){
+            String[] split = pidPath.split(divide);
+            if(split.length>topCode){
+                topUserId = split[topCode];
+            }
+        }
+        return topUserId;
+    }
+
+}

+ 32 - 0
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserAdvanceMapper.xml

@@ -19,4 +19,36 @@
 
     </resultMap>
 
+    <resultMap id="WebKxsUserAdvanceMap" type="com.kxs.user.api.vo.admin.userAdvance.SysUserAdvancePageVO" extends="KxsUserAdvanceMap">
+        <result column="user_code" property="userCode" />
+        <result column="username" property="username" />
+        <result column="phone" property="phone" />
+    </resultMap>
+
+    <select id="userAdvancePage" resultMap="WebKxsUserAdvanceMap">
+        SELECT
+            kua.*,
+            ku.user_code,
+            ku.username,
+            ku.phone
+        FROM
+            kxs_user_advance kua
+            LEFT JOIN kxs_user ku ON kua.user_id = ku.id
+        <where>
+            <if test="query.username != null and query.username != ''">
+                <bind name="usernameLike" value="'%'+query.username+'%'"/>
+                AND ku.username LIKE #{usernameLike}
+            </if>
+            <if test="query.advanceType != null">
+                and kua.advance_type = #{query.advanceType}
+            </if>
+            <if test="query.status != null">
+                and kua.status = #{status}
+            </if>
+            <if test="query.userCode != null and query.userCode != ''">
+                <bind name="userCodeLike" value="'%'+query.userCode+'%'"/>
+                AND ku.user_code LIKE #{userCodeLike}
+            </if>
+        </where>
+    </select>
 </mapper>

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

@@ -16,5 +16,25 @@
         <result column="remark" property="remark" />
 
     </resultMap>
+    <resultMap id="WebKxsUserLevelLogMap" type="com.kxs.user.api.vo.admin.userLevel.SysUserLevelPageVO" extends="KxsUserLevelLogMap">
+        <result column="user_code" property="userCode" />
+        <result column="username" property="username" />
+    </resultMap>
 
+    <select id="userLevelPage" resultMap="WebKxsUserLevelLogMap">
+        SELECT
+            kull.*,
+            ku.username,
+            ku.user_code
+        FROM
+            kxs_user_level_log kull
+            LEFT JOIN kxs_user ku ON kull.user_id = ku.id
+        <where>
+            and kull.del_flag = 0
+            <if test="query.userCode != null and query.userCode != ''">
+                <bind name="userCodeLike" value="'%'+query.userCode+'%'"/>
+                AND ku.user_code LIKE #{userCodeLike}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 151 - 0
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserMapper.xml

@@ -29,6 +29,18 @@
         <result column="to_merchant_maker_time" property="toMerchantMakerTime"/>
         <result column="this_month_trade" property="thisMonthTrade"/>
     </resultMap>
+    
+    <resultMap id="WebKxsUserMap" extends="KxsUserMap" type="com.kxs.user.api.vo.admin.user.SysUserPageVO">
+        <result column="realTime" property="realTime"/>
+        <result column="pUsername" property="pUsername"/>
+        <result column="pUserCode" property="pUserCode"/>
+        <result column="isLeader" property="isLeader"/>
+        <result column="isPartner" property="isPartner"/>
+    </resultMap>
+
+    <resultMap id="AccountKxsUserMap" extends="KxsUserMap" type="com.kxs.user.api.vo.admin.user.SysUserUserAccountListVO">
+        <result column="amount" property="amount"/>
+    </resultMap>
     <select id="findUserRealBankInfo" resultType="com.kxs.user.api.vo.kxsapp.user.RealUserInfoVO">
         select a.phone, a.user_code, r.real_name, r.id_card, b.bank_name, b.bank_open, b.bank_phone, b.bank_code
         from kxs_user a
@@ -98,6 +110,145 @@
         AND (ku.username = #{keyword} or ku.user_code = #{keyword})
     </select>
 
+    <select id="getUserPage" resultMap="WebKxsUserMap">
+        SELECT DISTINCT
+            ku.id,
+            ku.create_time,
+            ku.username,
+            ku.phone,
+            ku.user_code,
+            ku.user_level,
+            ku.STATUS,
+            ku.pid_path,
+            ku.is_merchant_maker,
+            kur.create_time AS realTime,
+            p_ku.username AS pUsername,
+            p_ku.user_code AS pUserCode,
+            IF( kl.user_id IS NOT NULL, 1, 0 ) AS isLeader,
+            IF( kp.user_id IS NOT NULL, 1, 0 ) AS isPartner
+        FROM
+            kxs_user ku
+            LEFT JOIN kxs_user_real kur ON ku.id = kur.user_id
+            LEFT JOIN kxs_user p_ku ON ku.pid = p_ku.id
+            LEFT JOIN kxs_leader kl ON ku.id = kl.user_id
+            LEFT JOIN kxs_partner kp ON ku.id = kp.user_id
+        <where>
+            and ku.del_flag != 1
+            <if test="query.username != null and query.username != ''">
+                <bind name="usernameLike" value="'%'+query.username+'%'"/>
+                AND ku.username LIKE #{usernameLike}
+            </if>
+            <if test="query.idCard != null and query.idCard != ''">
+                <bind name="idCardLike" value="'%'+query.idCard+'%'"/>
+                AND kur.id_card LIKE #{idCardLike}
+            </if>
+            <if test="query.phone != null and query.phone != ''">
+                <bind name="phoneLike" value="'%'+query.phone+'%'"/>
+                AND ku.phone LIKE #{phoneLike}
+            </if>
+            <if test="query.userCode != null and query.userCode != ''">
+                <bind name="userCodeLike" value="'%'+query.userCode+'%'"/>
+                AND ku.user_code LIKE #{userCodeLike}
+            </if>
+        </where>
+    </select>
+
+    <select id="getUserWhereList" resultMap="WebKxsUserMap">
+        SELECT
+            ku.id,
+            ku.create_time,
+            ku.username,
+            ku.phone,
+            ku.user_code,
+            ku.user_level,
+            ku.STATUS,
+            ku.pid_path,
+            ku.is_merchant_maker,
+            kur.create_time AS realTime,
+            p_ku.username AS pUsername,
+            p_ku.user_code AS pUserCode,
+            IF( kl.user_id IS NOT NULL, 1, 0 ) AS isLeader,
+            IF( kp.user_id IS NOT NULL, 1, 0 ) AS isPartner
+        FROM
+            kxs_user ku
+            LEFT JOIN kxs_user_real kur ON ku.id = kur.user_id
+            LEFT JOIN kxs_user p_ku ON ku.pid = p_ku.id
+            LEFT JOIN kxs_leader kl ON ku.id = kl.user_id
+            LEFT JOIN kxs_partner kp ON ku.id = kp.user_id
+        <where>
+            and ku.del_flag != 1
+            <if test="query.queryType != null and query.queryType != ''">
+                <choose>
+                    <when test="query.queryType == '1'">
+                        <if test="query.userId != null and query.userId != ''">
+                            AND ku.pid = #{query.userId}
+                        </if>
+                    </when>
+                    <when test="query.queryType == '0'">
+                        <if test="query.pid != null and query.pid != ''">
+                            AND ku.id = #{pid}
+                        </if>
+                    </when>
+                </choose>
+            </if>
+        </where>
+        order by ku.create_time
+    </select>
+
+    <select id="getLogoutListPage" resultMap="KxsUserMap">
+        select DISTINCT ku.* from kxs_user ku
+        left join kxs_user_real kur on ku.id = kur.user_id
+        <where>
+            and ku.del_flag != 1 and ku.status = 0
+            <if test="query.username != null and query.username != ''">
+                <bind name="usernameLike" value="'%'+query.username+'%'"/>
+                AND ku.username LIKE #{usernameLike}
+            </if>
+            <if test="query.idCard != null and query.idCard != ''">
+                <bind name="idCardLike" value="'%'+query.idCard+'%'"/>
+                AND kur.id_card LIKE #{idCardLike}
+            </if>
+            <if test="query.phone != null and query.phone != ''">
+                <bind name="phoneLike" value="'%'+query.phone+'%'"/>
+                AND ku.phone LIKE #{phoneLike}
+            </if>
+            <if test="query.userCode != null and query.userCode != ''">
+                <bind name="userCodeLike" value="'%'+query.userCode+'%'"/>
+                AND ku.user_code LIKE #{userCodeLike}
+            </if>
+        </where>
+    </select>
+
+    <select id="userAccountPage" resultMap="AccountKxsUserMap">
+        SELECT
+            ku.username,
+            ku.phone,
+            ku.user_code,
+            ku.remark,
+            ku.update_time,
+            kua.amount,
+            ku.status
+        FROM
+            kxs_user ku
+            LEFT JOIN kxs_user_amount kua ON ku.id = kua.user_id
+        <where>
+            and ku.del_flag != 1
+            <if test="query.username != null and query.username != ''">
+                <bind name="usernameLike" value="'%'+query.username+'%'"/>
+                AND ku.username LIKE #{usernameLike}
+            </if>
+            <if test="query.phone != null and query.phone != ''">
+                <bind name="phoneLike" value="'%'+query.phone+'%'"/>
+                AND ku.phone LIKE #{phoneLike}
+            </if>
+            <if test="query.userCode != null and query.userCode != ''">
+                <bind name="userCodeLike" value="'%'+query.userCode+'%'"/>
+                AND ku.user_code LIKE #{userCodeLike}
+            </if>
+        </where>
+        order by ku.create_time
+    </select>
+
 
 </mapper>
 

+ 33 - 0
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserWithdrawalMapper.xml

@@ -24,6 +24,12 @@
         <result column="withdrawal_type" property="withdrawalType" />
 
     </resultMap>
+
+    <resultMap id="WebKxsUserWithdrawalMap" extends="KxsUserWithdrawalMap" type="com.kxs.user.api.vo.admin.userWithdrawal.SysUserWithdrawalPageVO">
+        <result column="user_code" property="userCode" />
+        <result column="username" property="username" />
+        <result column="id_card" property="idCard" />
+    </resultMap>
     <select id="getByPage" resultType="com.kxs.user.api.vo.kxsapp.userAccount.WithdrawListVO">
         select a.*, CONCAT(a.bank_name,'(', a.bank_code,')') as title  from kxs_user_withdrawal a
         <where>
@@ -32,4 +38,31 @@
         order by  a.create_time desc
     </select>
 
+    <select id="userAccountPage" resultMap="WebKxsUserWithdrawalMap">
+        SELECT
+            kuw.*,
+            ku.user_code,
+            ku.username,
+            kur.id_card
+        FROM
+            kxs_user_withdrawal kuw
+            LEFT JOIN kxs_user ku ON kuw.user_id = ku.id
+            LEFT JOIN kxs_user_real kur ON kuw.user_id = kur.user_id
+        <where>
+            <if test="query.applyNo != null and query.applyNo != ''">
+                <bind name="applyNoLike" value="'%'+query.applyNo+'%'"/>
+                AND kuw.apply_no LIKE #{applyNoLike}
+            </if>
+            <if test="query.username != null and query.username != ''">
+                <bind name="usernameLike" value="'%'+query.username+'%'"/>
+                AND ku.username LIKE #{usernameLike}
+            </if>
+            <if test="query.userCode != null and query.userCode != ''">
+                <bind name="userCodeLike" value="'%'+query.userCode+'%'"/>
+                AND ku.user_code LIKE #{userCodeLike}
+            </if>
+        </where>
+        ORDER BY
+            kuw.create_time
+    </select>
 </mapper>