Explorar el Código

修改了部分bug,股东大盘分红添加了部分用户不进入计算的校验,我的商户板块接口已编写完毕

Pota1ovO hace 2 años
padre
commit
d3cbc208e7
Se han modificado 19 ficheros con 463 adiciones y 29 borrados
  1. 5 1
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/merchant/MerchantListDTO.java
  2. 15 1
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/shop/PayOrderDTO.java
  3. 1 1
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/model/KxsMachineTrack.java
  4. 6 2
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/merchant/MerchantListVO.java
  5. 5 5
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/merchant/MerchantTotalVO.java
  6. 66 6
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/shop/ShopOrderDetailVO.java
  7. 5 0
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/shop/ShopOrderInfoListVO.java
  8. 11 8
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/kxsapp/MerchantController.java
  9. 3 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsMachineMapper.java
  10. 20 1
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsMerchantMapper.java
  11. 34 1
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsMerchantService.java
  12. 144 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsMerchantServiceImpl.java
  13. 21 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsShopOrderServiceImpl.java
  14. 1 0
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMachineMapper.xml
  15. 85 0
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMerchantMapper.xml
  16. 1 0
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsShopOrderMapper.xml
  17. 16 1
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/feign/RemoteKxsUserService.java
  18. 22 1
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/KxsUserController.java
  19. 2 1
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsShdScoreServiceImpl.java

+ 5 - 1
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/merchant/MerchantListDTO.java

@@ -54,7 +54,11 @@ public class MerchantListDTO {
     @Schema(description = "激活状态 0未激活 1已激活 全部不传")
     private String actStatus;
 
-
+    /**
+     * 用户id
+     */
+    @Schema(description = "用户Id")
+    private Long userId;
 
 
 }

+ 15 - 1
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/kxsapp/shop/PayOrderDTO.java

@@ -48,5 +48,19 @@ public class PayOrderDTO extends KxsShopOrder {
      */
     @Schema(description = "备注")
     private String remark;
-
+    /**
+     * 收货地址
+     */
+    @Schema(description = "收货地址")
+    private String address;
+    /**
+     * 收货人
+     */
+    @Schema(description = "收货人")
+    private String consignee;
+    /**
+     * 收货人联系方式
+     */
+    @Schema(description = "收货人")
+    private String phone;
 }

+ 1 - 1
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/model/KxsMachineTrack.java

@@ -71,7 +71,7 @@ public class KxsMachineTrack extends Model<KxsMachineTrack> implements Serializa
      * 变动前所属用户ID
      */
     @Schema(description = "变动前所属用户ID")
-    private Integer beforeUserId;
+    private Long beforeUserId;
 
 
     /**

+ 6 - 2
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/merchant/MerchantListVO.java

@@ -21,7 +21,7 @@ public class MerchantListVO implements Serializable {
 
 	@Serial
 	private static final long serialVersionUID = 1L;
-
+    private Long id;
 
     /**
      * 新增时间
@@ -43,7 +43,11 @@ public class MerchantListVO implements Serializable {
     @Schema(description = "当月交易额")
     private BigDecimal thisMonthTrade;
 
-
+    /**
+     * 当前机具费率
+     */
+    @Schema(description = "当前机具费率")
+    private BigDecimal machineRatio;
 
 
 

+ 5 - 5
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/merchant/MerchantTotalVO.java

@@ -25,35 +25,35 @@ public class MerchantTotalVO implements Serializable {
      * 总商户数
      */
     @Schema(description = "总商户数")
-    private Integer totalCount;
+    private Integer totalCount = 0;
 
 
     /**
      * 今日激活商户数
      */
     @Schema(description = "今日激活商户数")
-    private Integer actCount ;
+    private Integer actCount = 0;
 
 
     /**
      * 品牌总商户数
      */
     @Schema(description = "品牌总商户数")
-    private Integer brandCount;
+    private Integer brandCount = 0;
 
 
     /**
      * 品牌已激活
      */
     @Schema(description = "品牌已激活")
-    private Integer brandActCount;
+    private Integer brandActCount = 0;
 
 
     /**
      * 品牌未激活
      */
     @Schema(description = "品牌未激活")
-    private Integer brandUnActCount;
+    private Integer brandUnActCount = 0;
 
 
 

+ 66 - 6
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/shop/ShopOrderDetailVO.java

@@ -2,7 +2,9 @@ package com.kxs.product.api.vo.kxsapp.shop;
 
 
 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 io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -10,6 +12,7 @@ import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -26,24 +29,42 @@ public class ShopOrderDetailVO implements Serializable {
 	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;
+
+
+
+
+
+
+
+
+
     /**
      * 订单号
      */
     @Schema(description = "订单号")
     private String orderSn;
 
+
     /**
-     * 新增时间
+     * 用户ID
      */
-    @Schema(description = "新增时间")
-    private LocalDateTime createTime;
+    @Schema(description = "用户ID")
+    private Long userId;
 
 
     /**
@@ -106,14 +127,14 @@ public class ShopOrderDetailVO implements Serializable {
      * 快递单号
      */
     @Schema(description = "快递单号")
-    private String expressageSn;
+    private String erpSn;
 
 
     /**
      * 快递公司
      */
     @Schema(description = "快递公司")
-    private String expressageName;
+    private String erpName;
 
 
     /**
@@ -129,6 +150,32 @@ public class ShopOrderDetailVO implements Serializable {
     @Schema(description = "退款状态 0未申请 1已申请 2申请通过 3申请驳回")
     private Integer returnStatus;
 
+    /**
+     * 操作人
+     */
+    @Schema(description = "操作人")
+    private String updateBy;
+
+    /**
+     * 退货原因
+     */
+    @Schema(description = "退货原因")
+    private String returnReason;
+
+
+    /**
+     * 申请退款时间
+     */
+    @Schema(description = "申请退款时间")
+    private LocalDateTime returnTime;
+
+
+    /**
+     * 退款金额
+     */
+    @Schema(description = "退款金额")
+    private BigDecimal returnPrice;
+
 
     /**
      * 订单金额
@@ -151,11 +198,24 @@ public class ShopOrderDetailVO implements Serializable {
     private String tradeNo;
 
 
+    /**
+     * 自提仓库ID
+     */
+    @Schema(description = "自提仓库ID")
+    private Integer warehouseId;
+
+
+    /**
+     * 订单类型 0商城订单 1分仓额度 2小分仓额度 3小盟主订单 4大盟主订单
+     */
+    @Schema(description = "订单类型 0商城订单 1分仓额度 2小分仓额度 3小盟主订单 4大盟主订单")
+    private Integer orderType;
+
     /**
      * 商城订单详情表
      */
     @Schema(description = "商城订单详情表")
-    private List<ShopOrderInfoListVO> goodsList;
+    private List<ShopOrderInfoListVO> goodsList = new ArrayList<>();
 
 
 

+ 5 - 0
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/shop/ShopOrderInfoListVO.java

@@ -57,5 +57,10 @@ public class ShopOrderInfoListVO implements Serializable {
     private String specifications;
 
 
+    /**
+     * 商品类型 0实物商品 1虚拟物品
+     */
+    @Schema(description = "商品类型 0实物商品 1虚拟物品")
+    private Integer goodsType;
 
 }

+ 11 - 8
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/kxsapp/MerchantController.java

@@ -5,6 +5,7 @@ import com.kxs.common.core.util.R;
 import com.kxs.product.api.dto.kxsapp.merchant.ToMerchantMakerDTO;
 import com.kxs.product.api.dto.kxsapp.merchant.MachineRatioDTO;
 import com.kxs.product.api.dto.kxsapp.merchant.MerchantListDTO;
+import com.kxs.product.api.model.KxsMerchant;
 import com.kxs.product.api.vo.kxsapp.merchant.MerchantListVO;
 import com.kxs.product.biz.service.KxsMachineService;
 import com.kxs.product.biz.service.KxsMerchantService;
@@ -39,7 +40,7 @@ public class MerchantController {
      */
     @GetMapping("/merchantTotal")
     public R merchantTotal(@RequestParam("brandId") Integer brandId) {
-        return R.ok();
+        return R.ok(kxsMerchantService.merchantTotal(brandId));
     }
 
 
@@ -51,8 +52,8 @@ public class MerchantController {
      * @return 商户列表
      */
     @GetMapping("/merchantList")
-    public R merchantList(@ParameterObject Page<MerchantListVO> page, @ParameterObject MerchantListDTO param) {
-        return R.ok();
+    public R merchantList(@ParameterObject Page<KxsMerchant> page, @ParameterObject MerchantListDTO param) {
+        return R.ok(kxsMerchantService.merchantList(page,param));
     }
 
 
@@ -63,13 +64,14 @@ public class MerchantController {
      * @return 商户详情
      */
     @GetMapping("/merchantDetail")
-    public R merchantDetail(@RequestParam("merchantId") Object merchantId) {
-        return R.ok();
+    public R merchantDetail(@RequestParam("merchantId") Long merchantId) {
+
+        return R.ok(kxsMerchantService.merchantDetail(merchantId));
     }
 
 
     /**
-     * 费率调整
+     * 费率调整  todo等待对接
      *
      * @param param 实体对象
      * @return 费率调整
@@ -87,9 +89,10 @@ public class MerchantController {
      * @param param 实体对象
      * @return 转商户型创客
      */
-    @PutMapping("/toMerchantMaker")
+    @PostMapping("/toMerchantMaker")
     public R toMerchantMaker(@RequestBody ToMerchantMakerDTO param) {
-        return R.ok();
+
+        return kxsMerchantService.toMerchantMaker(param);
     }
 
 

+ 3 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsMachineMapper.java

@@ -4,8 +4,11 @@ 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.product.api.dto.kxsapp.machine.*;
+import com.kxs.product.api.dto.kxsapp.merchant.MerchantListDTO;
 import com.kxs.product.api.model.KxsMachine;
+import com.kxs.product.api.model.KxsMerchant;
 import com.kxs.product.api.vo.kxsapp.machine.*;
+import com.kxs.product.api.vo.kxsapp.merchant.MerchantListVO;
 import com.kxs.system.api.vo.kxsapp.RecycleBrandListVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;

+ 20 - 1
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/mapper/KxsMerchantMapper.java

@@ -1,8 +1,13 @@
 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.kxsapp.merchant.MerchantListDTO;
 import com.kxs.product.api.model.KxsMerchant;
+import com.kxs.product.api.vo.kxsapp.merchant.MerchantListVO;
+import com.kxs.product.api.vo.kxsapp.merchant.MerchantTotalVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 客小爽商户表(KxsMerchant)表数据库访问层
@@ -12,6 +17,20 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface KxsMerchantMapper extends BaseMapper<KxsMerchant> {
-
+    /**
+     * 商户列表
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 商户列表
+     */
+    Page<MerchantListVO> merchantList(Page<KxsMerchant> page, @Param("param") MerchantListDTO param);
+    /**
+     * 汇总数据激活等
+     *
+     * @param brandId 品牌ID
+     * @return 汇总数据激活等
+     */
+    MerchantTotalVO merchantTotal(@Param("brandId") Integer brandId, @Param("userId") Long userId);
 }
 

+ 34 - 1
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsMerchantService.java

@@ -1,7 +1,12 @@
 package com.kxs.product.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.product.api.dto.kxsapp.merchant.MerchantListDTO;
+import com.kxs.product.api.dto.kxsapp.merchant.ToMerchantMakerDTO;
 import com.kxs.product.api.model.KxsMerchant;
+import com.kxs.product.api.vo.kxsapp.merchant.MerchantListVO;
 
 /**
  * 客小爽商户表(KxsMerchant)表服务接口
@@ -10,6 +15,34 @@ import com.kxs.product.api.model.KxsMerchant;
  * @since 2023-12-20 10:09:35
  */
 public interface KxsMerchantService extends IService<KxsMerchant> {
-
+    /**
+     * 商户列表
+     *
+     * @param page 分页对象
+     * @param param 查询实体
+     * @return 商户列表
+     */
+    Object merchantList(Page<KxsMerchant> page, MerchantListDTO param);
+    /**
+     * 商户详情
+     *
+     * @param merchantId 商户ID
+     * @return 商户详情
+     */
+    Object merchantDetail(Long merchantId);
+    /**
+     * 转商户型创客
+     *
+     * @param param 实体对象
+     * @return 转商户型创客
+     */
+    R toMerchantMaker(ToMerchantMakerDTO param);
+    /**
+     * 汇总数据激活等
+     *
+     * @param brandId 品牌ID
+     * @return 汇总数据激活等
+     */
+    Object merchantTotal(Integer brandId);
 }
 

+ 144 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsMerchantServiceImpl.java

@@ -1,10 +1,38 @@
 package com.kxs.product.biz.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.text.CharSequenceUtil;
+import cn.hutool.core.util.IdcardUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+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.SecurityConstants;
+import com.kxs.common.core.constant.enums.MachineTypeEnum;
+import com.kxs.common.core.util.R;
+import com.kxs.common.security.util.SecurityUtils;
+import com.kxs.product.api.dto.kxsapp.merchant.MerchantListDTO;
+import com.kxs.product.api.dto.kxsapp.merchant.ToMerchantMakerDTO;
+import com.kxs.product.api.model.KxsMachine;
+import com.kxs.product.api.model.KxsMachineTrack;
+import com.kxs.product.api.vo.kxsapp.merchant.MerchantDetailVO;
+import com.kxs.product.api.vo.kxsapp.merchant.MerchantListVO;
+import com.kxs.product.api.vo.kxsapp.merchant.MerchantTotalVO;
+import com.kxs.product.biz.mapper.KxsMachineMapper;
 import com.kxs.product.biz.mapper.KxsMerchantMapper;
 import com.kxs.product.api.model.KxsMerchant;
 import com.kxs.product.biz.service.KxsMerchantService;
+import com.kxs.user.api.feign.RemoteKxsUserService;
+import com.kxs.user.api.model.KxsUser;
+import com.kxs.user.api.model.KxsUserReal;
+import com.kxs.user.api.vo.kxsapp.user.RealUserInfoVO;
+import lombok.RequiredArgsConstructor;
+import net.bytebuddy.implementation.bytecode.Throw;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
 
 /**
  * 客小爽商户表(KxsMerchant)表服务实现类
@@ -13,7 +41,123 @@ import org.springframework.stereotype.Service;
  * @since 2023-12-20 10:09:35
  */
 @Service("kxsMerchantService")
+@RequiredArgsConstructor
 public class KxsMerchantServiceImpl extends ServiceImpl<KxsMerchantMapper, KxsMerchant> implements KxsMerchantService {
+    private final KxsMachineMapper kxsMachineMapper;
+    private final RemoteKxsUserService remoteKxsUserService;
+    private final KxsMerchantMapper kxsMerchantMapper;
+    @Override
+    public Object merchantList(Page<KxsMerchant> page, MerchantListDTO param) {
+        Long userId = SecurityUtils.getUser().getId();
+        param.setUserId(userId);
+        if (param.getSort() != null && param.getSort().equals("amount")){
+            param.setSort("thisMonthTrade");
+        }else if (param.getSort() != null && param.getSort().equals("time")){
+            param.setSort("create_time");
+        }else {
+            param.setSort(null);
+        }
+        return kxsMerchantMapper.merchantList(page,param);
+    }
+
+    @Override
+    public Object merchantDetail(Long merchantId) {
+        MerchantDetailVO merchantDetailVO = new MerchantDetailVO();
+        //商户信息
+        KxsMerchant byId = getById(merchantId);
+        BeanUtil.copyProperties(byId,merchantDetailVO);
+        //机具信息
+        KxsMachine kxsMachine = kxsMachineMapper.selectById(byId.getMachineId());
+        merchantDetailVO.setPosSn(kxsMachine.getPosSn());
+        merchantDetailVO.setBrand(kxsMachine.getBrandId().toString());
+        merchantDetailVO.setActTime(kxsMachine.getActTime().toString());
+        return merchantDetailVO;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R toMerchantMaker(ToMerchantMakerDTO param) {
+        Long parenUserId = SecurityUtils.getUser().getId();
+        //查询创客
+        R<KxsUser> kxsUserR = remoteKxsUserService.loadUserByCode(param.getUserCode(), SecurityConstants.FROM_IN);
+        if (kxsUserR.getData() == null){
+            return R.failed("用户不存在");
+        }
+        KxsUser kxsUser = kxsUserR.getData();
+        //查询实名信息
+        if (kxsUser.getRealStatus() == null || kxsUser.getRealStatus() == 0) {
+            return R.failed("用户未实名");
+        }
+        //查询是否是下级
+        String pidPath = kxsUser.getPidPath();
+        boolean isParent = pidPath.contains("," + parenUserId + ",");
+        if (!isParent) {
+            return R.failed("用户不在当前用户系统下");
+        }
+
+        //查询机具所属商户
+        KxsMachine kxsMachine = kxsMachineMapper.selectOne(Wrappers.<KxsMachine>query().lambda().eq(KxsMachine::getPosSn,param.getPosSn()));
+        //机具所属不一致
+        if (!Long.valueOf(kxsMachine.getUserId()).equals(parenUserId)) {
+            return R.failed("非法参数:机具非当前用户所有");
+        }
+        //未激活
+        if (!kxsMachine.getIsAct().equals(MachineTypeEnum.ACT.getType())) {
+            return R.failed("机具未激活");
+        }
+        KxsMerchant kxsMerchant = getById(kxsMachine.getMerchantId());
+        if (kxsMerchant == null) {
+            return R.failed("机具商户不存在");
+        }
+        //判断机具所属商户和转换的用户数据能否一致 2要素
+        //商户实名信息
+        String idCard = kxsMerchant.getMerchantCard();
+        if (CharSequenceUtil.isEmpty(idCard)) {
+            return R.failed("商户未绑定身份信息");
+        }
+        //判断身份证是否脱敏
+        boolean validCard = IdcardUtil.isValidCard(idCard);
+        //用户实名信息
+        KxsUserReal userReal = remoteKxsUserService.loadUserRealById(kxsUser.getId(), SecurityConstants.FROM_IN).getData();
+        if (!validCard) {
+            //如果脱敏需要验证前6后4
+            String prefix = idCard.substring(0, 6);
+            String after = idCard.substring(idCard.length() - 4);
+            //
+            String realPrefix = userReal.getIdCard().substring(0, 6);
+            String realAfter = userReal.getIdCard().substring(userReal.getIdCard().length() - 4);
+            if (!prefix.equals(realPrefix) || !after.equalsIgnoreCase(realAfter)) {
+                return R.failed("当前商户身份信息与转换用户身份信息不一致,请重新核对后重试");
+            }
+        } else {
+            //未脱敏直接比对
+            if (!userReal.getIdCard().equalsIgnoreCase(idCard)) {
+                return R.failed("当前商户身份信息与转换用户身份信息不一致,请重新核对后重试");
+            }
+        }
+
+        if (!userReal.getRealName().equals(kxsMerchant.getMerchantName())) {
+            return R.failed("当前商户身份信息与转换用户身份信息不一致,请重新核对后重试");
+
+        }
+
+        //可以转换为商户型创客
+        kxsUser.setIsMerchantMaker(1);
+        kxsUser.setUpdateTime(LocalDateTime.now());
+        remoteKxsUserService.updateById(kxsUser,SecurityConstants.FROM_IN);
+
+        //修改商户类型
+        kxsMerchant.setIsMaker(1);
+        kxsMerchant.setMakerUserId(kxsUser.getId());
+        updateById(kxsMerchant);
+        return R.ok();
+    }
+
+    @Override
+    public Object merchantTotal(Integer brandId) {
+        Long id = SecurityUtils.getUser().getId();
+        return kxsMerchantMapper.merchantTotal(brandId,id);
+    }
 
 }
 

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

@@ -62,6 +62,7 @@ public class KxsShopOrderServiceImpl extends ServiceImpl<KxsShopOrderMapper, Kxs
     private final KxsShopGoodsSkuMapper kxsShopGoodsSkuMapper;
     private final KxsTicketMapper kxsTicketMapper;
     private final IMQSender mqSender;
+    private final KxsShopGoodsMapper kxsShopGoodsMapper;
     @Override
     @Transactional(rollbackFor = Exception.class)
     public R submitOrder(GoodsSubmitDTO param) {
@@ -143,8 +144,11 @@ public class KxsShopOrderServiceImpl extends ServiceImpl<KxsShopOrderMapper, Kxs
                 .eq(KxsShopOrderInfo::getOrderId, orderId));
 
         orderInfos.forEach(item -> {
+            //商品实物或虚拟物品标识
+            KxsShopGoods kxsShopGoods = kxsShopGoodsMapper.selectById(item.getGoodsId());
             ShopOrderInfoListVO infoListVO = new ShopOrderInfoListVO();
             BeanUtils.copyProperties(item, infoListVO);
+            infoListVO.setGoodsType(kxsShopGoods.getGoodsType());
             shopOrderDetailVO.getGoodsList().add(infoListVO);
         });
 
@@ -168,6 +172,23 @@ public class KxsShopOrderServiceImpl extends ServiceImpl<KxsShopOrderMapper, Kxs
         if(!Objects.equals(order.getStatus(), KxsShopEnum.ORDER_NO_PAY.getType())){
             return R.failed(ProductErrorTypeEnum.ORDER_STATUS_ERROR.getDescription());
         }
+
+        //校验支付方式,邮寄需要
+        if (param.getGetMode().equals(1)){
+            order.setGetMode(param.getGetMode());
+            order.setPhone(param.getPhone());
+            order.setConsignee(param.getConsignee());
+            order.setAddress(param.getAddress());
+            order.setPayType(param.getPayType());
+            order.setRemark(param.getRemark());
+            //修改订单地址
+            updateById(order);
+        }else if (param.getGetMode().equals(0)){
+            order.setGetMode(param.getGetMode());
+            order.setPayType(param.getPayType());
+            order.setRemark(param.getRemark());
+            updateById(order);
+        }
         List<KxsShopOrderInfo> kxsShopOrderInfos = orderInfoMapper.selectList(Wrappers.<KxsShopOrderInfo>lambdaQuery().eq(KxsShopOrderInfo::getOrderId, order.getId()));
         String subject = kxsShopOrderInfos.stream().map(KxsShopOrderInfo::getGoodsName).collect(Collectors.joining(","));
 

+ 1 - 0
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMachineMapper.xml

@@ -217,4 +217,5 @@
     </select>
 
 
+
 </mapper>

+ 85 - 0
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMerchantMapper.xml

@@ -24,5 +24,90 @@
         <result column="remark" property="remark" />
 
     </resultMap>
+    <select id="merchantList" resultType="com.kxs.product.api.vo.kxsapp.merchant.MerchantListVO">
+        SELECT
+        kme.id,
+        kme.create_time,
+        kme.merchant_name,
+        kma.machine_ratio,
+        SUM(kskm.trade_amt) as thisMonthTrade
+        FROM
+        kxs_merchant kme
+        LEFT JOIN
+        kxs_machine kma ON kme.machine_id = kma.id
+        LEFT JOIN
+        kxs_stat.kxs_merchant_trade kskm ON kskm.merchant_id = kme.id
+        WHERE
+        kme.del_flag != 1
+        AND kme.brand_id = #{param.brandId}
+        AND kma.user_id = #{param.userId}
+        <if test="param.keyword != null and param.keyword != ''">
+            AND (
+            kme.merchant_no LIKE CONCAT('%', #{param.keyword}, '%')
+            OR kme.merchant_phone LIKE CONCAT('%', #{param.keyword}, '%')
+            OR kme.merchant_name LIKE CONCAT('%', #{param.keyword}, '%')
+            OR kma.pos_sn LIKE CONCAT('%', #{param.keyword}, '%')
+            )
+        </if>
+        <if test="param.actTime != null and param.actTime != ''">
+            AND YEAR(kma.act_time) = #{param.actTime}
+        </if>
+        <if test="param.actStatus != null and param.actStatus != ''">
+            AND kma.is_act = #{param.actStatus}
+        </if>
+        GROUP BY
+        kme.id,
+        kme.create_time,
+        kme.merchant_name,
+        kma.machine_ratio
+        <if test="param.amountSection != null and param.amountSection != ''">
+            HAVING
+            thisMonthTrade BETWEEN
+            SUBSTRING_INDEX(#{param.amountSection}, '-', 1)
+            AND SUBSTRING_INDEX(#{param.amountSection}, '-', -1)
+        </if>
+        <if test="param.sort != null and param.sort != ''">
+            ORDER BY
+            #{param.sort} DESC
+        </if>
 
+    </select>
+    <select id="merchantTotal" resultType="com.kxs.product.api.vo.kxsapp.merchant.MerchantTotalVO">
+        SELECT
+            (
+                SELECT
+                    COUNT(id)
+                FROM
+                    kxs_merchant
+                WHERE
+                    del_flag != 1
+                AND user_id = #{userId}
+            ) AS totalCount,
+            (
+                SELECT
+                    COUNT(is_act)
+                FROM
+                    kxs_machine
+                WHERE
+                    del_flag != 1
+                  AND user_id = #{userId}
+                  AND brand_id = #{brandId}
+                  AND DATE(act_time) = CURDATE()
+                  AND is_act = 1
+            ) AS actCount,
+            COUNT(kme.id) AS brandCount,
+            SUM(
+                    CASE WHEN kma.is_act = 1 THEN 1 ELSE 0 END
+            ) AS brandActCount,
+            SUM(
+                    CASE WHEN kma.is_act = 0 THEN 1 ELSE 0 END
+            ) AS brandUnActCount
+        FROM
+            kxs_merchant kme
+            LEFT JOIN kxs_machine kma ON kma.id = kme.machine_id
+        WHERE
+            kme.del_flag != 1
+          AND kme.brand_id = #{brandId}
+          AND kme.user_id = #{userId};
+     </select>
 </mapper>

+ 1 - 0
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsShopOrderMapper.xml

@@ -61,6 +61,7 @@
                     <if test="query.status != null">
                         and status = #{query.status}
                     </if>
+                    and user_id = #{query.userId}
                 </where>
                 LIMIT #{start}, #{size}
              ) a

+ 16 - 1
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/feign/RemoteKxsUserService.java

@@ -39,7 +39,14 @@ public interface RemoteKxsUserService {
 	 */
 	@GetExchange("/user/loadUserByPhone")
 	R<KxsUser> loadUserByPhone(@RequestParam("phone") String phone, @RequestHeader(SecurityConstants.FROM) String from);
-
+	/**
+	 * 修改用户
+	 *
+	 * @param from       调用标志
+	 * @return {@link R}<{@link Boolean}>
+	 */
+	@PostExchange("/user/updateById")
+	void updateById(@RequestBody KxsUser kxsUser, @RequestHeader(SecurityConstants.FROM) String from);
 	/**
 	 * 通过创客编号查询用户信息
 	 * @param userCode 电话信息
@@ -58,6 +65,14 @@ public interface RemoteKxsUserService {
 	@GetExchange("/user/loadUserById")
 	R<KxsUser> loadUserById(@RequestParam("userId") Integer userId, @RequestHeader(SecurityConstants.FROM) String from);
 
+	/**
+	 * 通过用户ID查询用户实名认证信息
+	 * @param userId 用户ID
+	 * @param from 调用标志
+	 * @return R
+	 */
+	@GetExchange("/user/loadUserRealById")
+	R<KxsUserReal> loadUserRealById(@RequestParam("userId") Integer userId, @RequestHeader(SecurityConstants.FROM) String from);
 	/**
 	 * 通过用户ID查询用户银行信息
 	 * @param userId 用户ID

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

@@ -6,6 +6,7 @@ import com.kxs.common.core.util.R;
 import com.kxs.common.security.annotation.Inner;
 import com.kxs.user.api.dto.kxsapp.user.*;
 import com.kxs.user.api.model.KxsUser;
+import com.kxs.user.api.model.KxsUserReal;
 import com.kxs.user.biz.constant.enums.UserErrorTypeEnum;
 import com.kxs.user.biz.service.KxsUserBankService;
 import com.kxs.user.biz.service.KxsUserRealService;
@@ -83,7 +84,17 @@ public class KxsUserController {
 
         return R.ok(kxsUserService.getById(userId));
     }
+    /**
+     * 根据id获取用户实名认证信息
+     * 内部调用
+     * @return 用户信息
+     */
+    @Inner
+    @GetMapping(value = { "/loadUserRealById" })
+    public R loadUserRealById(@RequestParam("userId") Integer userId) {
 
+        return R.ok(kxsUserRealService.getOne(Wrappers.<KxsUserReal>query().lambda().eq(KxsUserReal::getUserId,userId)));
+    }
 
     /**
      * 根据id获取用户银行卡和实名信息
@@ -118,7 +129,17 @@ public class KxsUserController {
     public R updateArea(@Valid @RequestBody UserUpdateAreaDTO param) {
         return kxsUserService.updateArea(param);
     }
-
+    /**
+     * 个人资料-修改地区
+     *
+     * @param kxsUser 实体对象
+     * @return 个人资料-修改地区
+     */
+    @Inner
+    @PostMapping("/updateById")
+    public R updateById(@RequestBody KxsUser kxsUser) {
+        return R.ok(kxsUserService.updateById(kxsUser));
+    }
     /**
      * 设置-修改支付密码
      *

+ 2 - 1
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsShdScoreServiceImpl.java

@@ -92,7 +92,8 @@ public class KxsShdScoreServiceImpl extends ServiceImpl<KxsShdScoreMapper, KxsSh
             }
             //获取上级用户
             KxsUser kxsUser = kxsUserMapper.getParenUser(integralStatDTO.getUserId());
-            if(kxsUser == null){
+            String exclude = "605,608,15600";
+            if(kxsUser == null || exclude.contains(kxsUser.getId().toString())){
                 continue;
             }
             //查询记录