Quellcode durchsuchen

Merge commit '108cda56887b31c5060c032a0f5ef83d94f72e83' into develop

* commit '108cda56887b31c5060c032a0f5ef83d94f72e83':
  商城,创客信息注销逻辑修改,字段添加
mac vor 2 Jahren
Ursprung
Commit
10eeb5aa0d
28 geänderte Dateien mit 500 neuen und 107 gelöschten Zeilen
  1. 11 0
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/admin/shopGood/SpecSkuDetailDTO.java
  2. 25 0
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/admin/shopGood/SubmitSpecDTO.java
  3. 2 81
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/admin/shopGood/SysShopGoodsAddDTO.java
  4. 32 0
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/admin/shopGood/UpDownShelfDTO.java
  5. 10 1
      kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/admin/merchant/SysMerchantPageVO.java
  6. 35 1
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/admin/SysShopGoodsController.java
  7. 23 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsShopGoodsService.java
  8. 25 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsShopGoodsSkuService.java
  9. 19 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsShopGoodsSpecService.java
  10. 156 2
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsShopGoodsServiceImpl.java
  11. 23 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsShopGoodsSkuServiceImpl.java
  12. 18 0
      kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsShopGoodsSpecServiceImpl.java
  13. 8 1
      kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMerchantMapper.xml
  14. 8 1
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/SysUserLogoutListDTO.java
  15. 6 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/SysUserUserAccountListDTO.java
  16. 14 0
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/KxsUser.java
  17. 2 2
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/user/SysTopUserVO.java
  18. 14 6
      kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/user/SysUserPageVO.java
  19. 3 3
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/admin/SysUserController.java
  20. 1 1
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserMapper.java
  21. 6 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserRealService.java
  22. 2 2
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserService.java
  23. 8 0
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserRealServiceImpl.java
  24. 22 3
      kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserServiceImpl.java
  25. 1 0
      kxs-user/kxs-user-biz/src/main/resources/mapper/KxsChangeTypeKindMapper.xml
  26. 1 0
      kxs-user/kxs-user-biz/src/main/resources/mapper/KxsChangeTypeMapper.xml
  27. 1 1
      kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserAdvanceMapper.xml
  28. 24 2
      kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserMapper.xml

+ 11 - 0
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/admin/shopGood/SpecSkuDetailDTO.java

@@ -0,0 +1,11 @@
+package com.kxs.product.api.dto.admin.shopGood;
+
+import lombok.Data;
+
+/**
+ * @author debao.yang
+ * @createTime 2024-07-12 14:18
+ */
+@Data
+public class SpecSkuDetailDTO {
+}

+ 25 - 0
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/admin/shopGood/SubmitSpecDTO.java

@@ -0,0 +1,25 @@
+package com.kxs.product.api.dto.admin.shopGood;
+
+import com.kxs.product.api.model.KxsShopGoodsSku;
+import com.kxs.product.api.model.KxsShopGoodsSpec;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author debao.yang
+ * @createTime 2024-07-12 14:00
+ */
+@Data
+public class SubmitSpecDTO {
+
+    @Schema(description = "商品id")
+    private Integer goodsId;
+
+    @Schema(description = "商品规格Spec")
+    private List<KxsShopGoodsSpec> shopGoodsSpecList;
+
+    @Schema(description = "商品规格sku")
+    private List<KxsShopGoodsSku> shopGoodsSkusList;
+}

+ 2 - 81
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/admin/shopGood/SysShopGoodsAddDTO.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.kxs.product.api.model.KxsShopGoods;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -16,87 +17,7 @@ import java.time.LocalDateTime;
  * @createTime 2024-07-09 14:12
  */
 @Data
-public class SysShopGoodsAddDTO {
+public class SysShopGoodsAddDTO extends KxsShopGoods {
 
 
-    /**
-     * 封面图
-     */
-    @Schema(description = "封面图")
-    private String picUrl;
-
-
-    /**
-     * 商品名称
-     */
-    @Schema(description = "商品名称")
-    private String goodsName;
-
-
-    /**
-     * 价格
-     */
-    @Schema(description = "价格")
-    private BigDecimal price;
-
-
-    /**
-     * 子标题
-     */
-    @Schema(description = "子标题")
-    private String subtitle;
-
-    /**
-     * 详情
-     */
-    @Schema(description = "详情")
-    private String details;
-
-    /**
-     * sku属性详情
-     */
-    @Schema(description = "sku属性详情")
-    private String specList;
-
-
-    /**
-     * 状态 0下架 1上架
-     */
-    @Schema(description = "状态 0下架 1上架")
-    private Integer status;
-
-
-    /**
-     * 分类ID
-     */
-    @Schema(description = "分类ID")
-    private String colId;
-
-
-    /**
-     * 限购数量
-     */
-    @Schema(description = "限购数量")
-    private Integer limitCount;
-
-
-    /**
-     * 起购数量
-     */
-    @Schema(description = "起购数量")
-    private Integer startByCount;
-
-    /**
-     * 排序
-     */
-    @Schema(description = "排序")
-    private Integer sort;
-
-
-    /**
-     * 商品类型 0实物商品 1虚拟物品
-     */
-    @Schema(description = "商品类型 0实物商品 1虚拟物品")
-    private Integer goodsType;
-
 }

+ 32 - 0
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/dto/admin/shopGood/UpDownShelfDTO.java

@@ -0,0 +1,32 @@
+package com.kxs.product.api.dto.admin.shopGood;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+/**
+ * 商城管理-商品上架/下架-dto
+ *
+ * @author 系统
+ * @date 2024-07-12 11:52:14
+ */
+@Data
+public class UpDownShelfDTO {
+
+    /**
+     * 主键ID
+     */
+    @Schema(description = "主键ID")
+    private Integer id;
+
+
+    /**
+     * 状态 0下架 1上架
+     */
+    @Schema(description = "状态 0下架 1上架")
+    private Integer status;
+
+
+
+
+}

+ 10 - 1
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/admin/merchant/SysMerchantPageVO.java

@@ -7,6 +7,7 @@ import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * 商户管理-商户列表vo
@@ -28,7 +29,15 @@ public class SysMerchantPageVO extends KxsMerchant implements Serializable {
     @Schema(description = "机具编号")
     private String posSn;
 
+    @Schema(description = "激活状态是否激活 0未激活 1已激活")
+    private Integer activeStatus;
+
+    @Schema(description = "品牌类别")
+    private String brandIdForName;
+
+    @Schema(description = "激活时间")
+    private Date merStandardDate;
+
 
-	
 
 }

+ 35 - 1
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/controller/admin/SysShopGoodsController.java

@@ -4,14 +4,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.kxs.common.core.util.R;
 import com.kxs.common.log.annotation.SysLog;
 import com.kxs.product.api.dto.admin.shopGood.DownShelfDTO;
+import com.kxs.product.api.dto.admin.shopGood.SubmitSpecDTO;
 import com.kxs.product.api.dto.admin.shopGood.SysShopGoodsAddDTO;
 import com.kxs.product.api.dto.admin.shopGood.SysShopGoodsPageDTO;
+import com.kxs.product.api.dto.admin.shopGood.UpDownShelfDTO;
 import com.kxs.product.api.dto.admin.shopGood.UpShelfDTO;
 import com.kxs.product.api.vo.admin.shopGoods.SysShopGoodsPageVO;
 import com.kxs.product.biz.service.KxsShopGoodsService;
 import lombok.RequiredArgsConstructor;
 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;
@@ -106,7 +107,40 @@ public class SysShopGoodsController {
 
 
 
+    /**
+     * 商城管理-商品上架/下架
+     *
+     * @param param 实体对象
+     * @return 商城管理-商品上架/下架
+     */
+    @PutMapping("/upDownShelf")
+    public R upDownShelf(@RequestBody UpDownShelfDTO param) {
+        kxsShopGoodsService.upDownShelf(param);
+        return R.ok();
+    }
+
+    /**
+     * 商城管理-商品规格新增
+     * @param param
+     * @return
+     */
+    @PostMapping("/submitSpec")
+    public R submitSpec(@RequestBody SubmitSpecDTO param){
+        kxsShopGoodsService.submitSpec(param);
+        return R.ok();
+    }
+
 
+    /**
+     * 商城管理-商品规格查询
+     * @param id
+     * @return
+     */
+    @GetMapping("/specDetail")
+    public R specDetail(@RequestParam("id") Integer id){
+        kxsShopGoodsService.specDetail(id);
+        return R.ok();
+    }
 
 
 }

+ 23 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsShopGoodsService.java

@@ -4,8 +4,11 @@ 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.product.api.dto.admin.shopGood.DownShelfDTO;
+import com.kxs.product.api.dto.admin.shopGood.SpecSkuDetailDTO;
+import com.kxs.product.api.dto.admin.shopGood.SubmitSpecDTO;
 import com.kxs.product.api.dto.admin.shopGood.SysShopGoodsAddDTO;
 import com.kxs.product.api.dto.admin.shopGood.SysShopGoodsPageDTO;
+import com.kxs.product.api.dto.admin.shopGood.UpDownShelfDTO;
 import com.kxs.product.api.dto.admin.shopGood.UpShelfDTO;
 import com.kxs.product.api.model.KxsShopGoods;
 import com.kxs.product.api.vo.admin.shopGoods.SysShopGoodsPageVO;
@@ -67,5 +70,25 @@ public interface KxsShopGoodsService extends IService<KxsShopGoods> {
      * @param downShelfDTO
      */
     void downShelf(DownShelfDTO downShelfDTO);
+
+    /**
+     * 商品上架/下架
+     * @param upDownShelfDTO
+     */
+    void upDownShelf(UpDownShelfDTO upDownShelfDTO);
+
+    /**
+     * 商品规格修改
+     * @param param
+     */
+    void submitSpec(SubmitSpecDTO param);
+
+
+    /**
+     * 通过商品id查询规格参数
+     * @param goodsId
+     * @return
+     */
+    SpecSkuDetailDTO specDetail(Integer goodsId);
 }
 

+ 25 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/KxsShopGoodsSkuService.java

@@ -1,8 +1,12 @@
 package com.kxs.product.biz.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.product.api.dto.admin.shopGood.SysShopGoodsAddDTO;
+import com.kxs.product.api.model.KxsShopGoods;
 import com.kxs.product.api.model.KxsShopGoodsSku;
 
+import java.util.List;
+
 /**
  * 商城商品SKU表(KxsShopGoodsSku)表服务接口
  *
@@ -11,5 +15,26 @@ import com.kxs.product.api.model.KxsShopGoodsSku;
  */
 public interface KxsShopGoodsSkuService extends IService<KxsShopGoodsSku> {
 
+    /**
+     * 通过商品id查询商品sku表
+     * @param goodsId
+     * @return
+     */
+    List<KxsShopGoodsSku> listByGoodsId(Integer goodsId);
+
+
+    /**
+     * 通过商品id和规格值查询数据
+     * @param goodsId
+     * @param specifications
+     * @return
+     */
+    KxsShopGoodsSku getByGoodsIdAndSku(Integer goodsId,String specifications);
+
+    /**
+     * 设置默认规格参数
+     * @param param
+     */
+    void initGoodsSku(KxsShopGoods param);
 }
 

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

@@ -1,8 +1,11 @@
 package com.kxs.product.biz.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.product.api.model.KxsShopGoodsSku;
 import com.kxs.product.api.model.KxsShopGoodsSpec;
 
+import java.util.List;
+
 /**
  * 商城商品SKU记录表(KxsShopGoodsSpec)表服务接口
  *
@@ -11,5 +14,21 @@ import com.kxs.product.api.model.KxsShopGoodsSpec;
  */
 public interface KxsShopGoodsSpecService extends IService<KxsShopGoodsSpec> {
 
+
+    /**
+     * 通过商品id查询商品SKU记录表
+     * @param goodsId
+     * @return
+     */
+    List<KxsShopGoodsSpec> listByGoodsId(Integer goodsId);
+
+
+    /**
+     * 通过商品id和规格值查询数据
+     * @param goodsId
+     * @param specifications
+     * @return
+     */
+    KxsShopGoodsSpec getByGoodsIdAndSpec(Integer goodsId, String specifications);
 }
 

+ 156 - 2
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsShopGoodsServiceImpl.java

@@ -1,14 +1,20 @@
 package com.kxs.product.biz.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 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.product.api.dto.admin.shopGood.DownShelfDTO;
+import com.kxs.product.api.dto.admin.shopGood.SpecSkuDetailDTO;
+import com.kxs.product.api.dto.admin.shopGood.SubmitSpecDTO;
 import com.kxs.product.api.dto.admin.shopGood.SysShopGoodsAddDTO;
 import com.kxs.product.api.dto.admin.shopGood.SysShopGoodsPageDTO;
+import com.kxs.product.api.dto.admin.shopGood.UpDownShelfDTO;
 import com.kxs.product.api.dto.admin.shopGood.UpShelfDTO;
 import com.kxs.product.api.model.KxsShopGoodsPic;
+import com.kxs.product.api.model.KxsShopGoodsSku;
+import com.kxs.product.api.model.KxsShopGoodsSpec;
 import com.kxs.product.api.vo.admin.shopGoods.SysShopGoodsPageVO;
 import com.kxs.product.api.vo.kxsapp.shop.ShopGoodsDetailVO;
 import com.kxs.product.api.vo.kxsapp.shop.ShopGoodsListVO;
@@ -21,12 +27,20 @@ import com.kxs.product.biz.mapper.KxsShopGoodsPicMapper;
 import com.kxs.product.biz.mapper.KxsShopGoodsSkuMapper;
 import com.kxs.product.biz.mapper.KxsShopGoodsSpecMapper;
 import com.kxs.product.biz.service.KxsShopGoodsService;
+import com.kxs.product.biz.service.KxsShopGoodsSkuService;
+import com.kxs.product.biz.service.KxsShopGoodsSpecService;
 import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
 import org.checkerframework.checker.units.qual.K;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 商城商品表(KxsShopGoods)表服务实现类
@@ -44,6 +58,10 @@ public class KxsShopGoodsServiceImpl extends ServiceImpl<KxsShopGoodsMapper, Kxs
 
     private final KxsShopGoodsSpecMapper kxsShopGoodsSpecMapper;
 
+    private final KxsShopGoodsSpecService kxsShopGoodsSpecService;
+
+    private final KxsShopGoodsSkuService kxsShopGoodsSkuService;
+
     @Override
     public IPage<ShopGoodsListVO> getByPage(Page<ShopGoodsListVO> page, Integer colId) {
 
@@ -89,6 +107,7 @@ public class KxsShopGoodsServiceImpl extends ServiceImpl<KxsShopGoodsMapper, Kxs
         return list;
     }
 
+    @Transactional
     @Override
     public void shopGoodsAdd(SysShopGoodsAddDTO param) {
         KxsShopGoods kxsShopGoods = new KxsShopGoods();
@@ -104,8 +123,8 @@ public class KxsShopGoodsServiceImpl extends ServiceImpl<KxsShopGoodsMapper, Kxs
         if(shopGoods != null){
             shopGoods.setUpTime(upShelfDTO.getUpTime());
             shopGoods.setStatus(GoodsStatusEnum.UP_SHELF.getType());
+            this.updateById(shopGoods);
         }
-        this.updateById(shopGoods);
 
     }
 
@@ -116,8 +135,143 @@ public class KxsShopGoodsServiceImpl extends ServiceImpl<KxsShopGoodsMapper, Kxs
         if(shopGoods != null){
             shopGoods.setDownTime(downShelfDTO.getDownTime());
             shopGoods.setStatus(GoodsStatusEnum.DOWN_SHELF.getType());
+            this.updateById(shopGoods);
+        }
+    }
+
+    @Override
+    public void upDownShelf(UpDownShelfDTO upDownShelfDTO) {
+        Integer id = upDownShelfDTO.getId();
+        KxsShopGoods shopGoods = this.getById(id);
+        if(shopGoods != null){
+            shopGoods.setStatus(upDownShelfDTO.getStatus());
+            this.updateById(shopGoods);
+        }
+    }
+
+    @Transactional
+    @Override
+    public void submitSpec(SubmitSpecDTO param) {
+        Integer goodsId = param.getGoodsId();
+        List<KxsShopGoodsSpec> shopGoodsSpecList = param.getShopGoodsSpecList();
+        List<KxsShopGoodsSku> shopGoodsSkusList = param.getShopGoodsSkusList();
+        this.batchUpdateOrSaveSku(goodsId,shopGoodsSkusList);
+        this.batchUpdateOrSaveSpec(goodsId,shopGoodsSpecList);
+    }
+
+    /**
+     * 更新或修改或删除sku
+     * @param goodsId
+     * @param shopGoodsSkusList
+     */
+    public void batchUpdateOrSaveSku(Integer goodsId,List<KxsShopGoodsSku> shopGoodsSkusList) {
+        if(goodsId != null){
+            List<KxsShopGoodsSku> oldShopGoodsSkuList = kxsShopGoodsSkuService.listByGoodsId(goodsId);
+            Map<String,KxsShopGoodsSku> oldShopGoodsSkuMap = new HashMap<>();
+            if(CollectionUtils.isNotEmpty(oldShopGoodsSkuList)){
+                oldShopGoodsSkuMap = oldShopGoodsSkuList.stream().collect(Collectors.toMap(o -> o.getSpecifications(), o -> o, (o1, o2) -> o2));
+            }
+            if(CollectionUtils.isEmpty(shopGoodsSkusList)){
+                shopGoodsSkusList = new ArrayList<>();
+            }
+            //新增的集合数据
+            List<KxsShopGoodsSku> addShopGoodsSkuList = new ArrayList<>();
+            //修改的集合数据
+            List<KxsShopGoodsSku> editShopGoodsSkuList = new ArrayList<>();
+            //将新增和修改的集合筛选出来
+            for(KxsShopGoodsSku kxsShopGoodsSku:shopGoodsSkusList){
+                kxsShopGoodsSku.setGoodId(goodsId);
+                String specifications = kxsShopGoodsSku.getSpecifications();
+                if(oldShopGoodsSkuMap.containsKey(specifications)){
+                    editShopGoodsSkuList.add(kxsShopGoodsSku);
+                }else{
+                    addShopGoodsSkuList.add(kxsShopGoodsSku);
+                }
+            }
+            Map<String, KxsShopGoodsSku> editShopGoodsSkuMap = editShopGoodsSkuList.stream().collect(Collectors.toMap(o -> o.getSpecifications(), o -> o, (o1, o2) -> o2));
+
+            //删除数据
+            for(KxsShopGoodsSku kxsShopGoodsSku:oldShopGoodsSkuList){
+                //如果前端无对应id则删除
+                if(!editShopGoodsSkuMap.containsKey(kxsShopGoodsSku.getSpecifications())){
+                    kxsShopGoodsSkuService.removeById(kxsShopGoodsSku.getId());
+                }
+            }
+            //新增数据
+            if(CollectionUtils.isNotEmpty(addShopGoodsSkuList)){
+                for(KxsShopGoodsSku kxsShopGoodsSku:addShopGoodsSkuList){
+                    kxsShopGoodsSku.setId(null);
+                    kxsShopGoodsSkuService.save(kxsShopGoodsSku);
+                }
+            }
+            //修改数据
+            if(CollectionUtils.isNotEmpty(editShopGoodsSkuList)){
+                for(KxsShopGoodsSku kxsShopGoodsSku:editShopGoodsSkuList){
+                    KxsShopGoodsSku byGoodsIdAndSku = kxsShopGoodsSkuService.getByGoodsIdAndSku(kxsShopGoodsSku.getGoodId(), kxsShopGoodsSku.getSpecifications());
+                    kxsShopGoodsSkuService.updateById(byGoodsIdAndSku);
+                }
+            }
         }
-        this.updateById(shopGoods);
+    }
+
+    /**
+     * 更新或修改或删除spec
+     * @param goodsId
+     * @param shopGoodsSpecList
+     */
+    public void batchUpdateOrSaveSpec(Integer goodsId,List<KxsShopGoodsSpec> shopGoodsSpecList) {
+        if(goodsId != null){
+            List<KxsShopGoodsSpec> oldShopGoodsSpecList = kxsShopGoodsSpecService.listByGoodsId(goodsId);
+            Map<String,KxsShopGoodsSpec> oldShopGoodsSpecMap = new HashMap<>();
+            if(CollectionUtils.isNotEmpty(oldShopGoodsSpecList)){
+                oldShopGoodsSpecMap = oldShopGoodsSpecList.stream().collect(Collectors.toMap(o -> o.getSpecification(), o -> o, (o1, o2) -> o2));
+            }
+            if(CollectionUtils.isEmpty(shopGoodsSpecList)){
+                shopGoodsSpecList = new ArrayList<>();
+            }
+            //新增的集合数据
+            List<KxsShopGoodsSpec> addShopGoodsSpecList = new ArrayList<>();
+            //修改的集合数据
+            List<KxsShopGoodsSpec> editShopGoodsSpecList = new ArrayList<>();
+            //将新增和修改的集合筛选出来
+            for(KxsShopGoodsSpec kxsShopGoodsSpec:shopGoodsSpecList){
+                kxsShopGoodsSpec.setGoodsId(goodsId);
+                String specifications = kxsShopGoodsSpec.getSpecification();
+                if(oldShopGoodsSpecMap.containsKey(specifications)){
+                    editShopGoodsSpecList.add(kxsShopGoodsSpec);
+                }else{
+                    addShopGoodsSpecList.add(kxsShopGoodsSpec);
+                }
+            }
+            Map<String, KxsShopGoodsSpec> editShopGoodsSpecMap = editShopGoodsSpecList.stream().collect(Collectors.toMap(o -> o.getSpecification(), o -> o, (o1, o2) -> o2));
+
+            //删除数据
+            for(KxsShopGoodsSpec kxsShopGoodsSpec:oldShopGoodsSpecList){
+                //如果前端无对应id则删除
+                if(!editShopGoodsSpecMap.containsKey(kxsShopGoodsSpec.getSpecification())){
+                    kxsShopGoodsSpecService.removeById(kxsShopGoodsSpec.getId());
+                }
+            }
+            //新增数据
+            if(CollectionUtils.isNotEmpty(addShopGoodsSpecList)){
+                for(KxsShopGoodsSpec kxsShopGoodsSpec:addShopGoodsSpecList){
+                    kxsShopGoodsSpec.setId(null);
+                    kxsShopGoodsSpecService.save(kxsShopGoodsSpec);
+                }
+            }
+            //修改数据
+            if(CollectionUtils.isNotEmpty(editShopGoodsSpecList)){
+                for(KxsShopGoodsSpec kxsShopGoodsSpec:editShopGoodsSpecList){
+                    KxsShopGoodsSpec byGoodsIdAndSpec = kxsShopGoodsSpecService.getByGoodsIdAndSpec(kxsShopGoodsSpec.getGoodsId(), kxsShopGoodsSpec.getSpecification());
+                    kxsShopGoodsSpecService.updateById(byGoodsIdAndSpec);
+                }
+            }
+        }
+    }
+
+    @Override
+    public SpecSkuDetailDTO specDetail(Integer goodsId) {
+        return null;
     }
 
 

+ 23 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsShopGoodsSkuServiceImpl.java

@@ -1,11 +1,15 @@
 package com.kxs.product.biz.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.product.api.model.KxsShopGoods;
 import com.kxs.product.biz.mapper.KxsShopGoodsSkuMapper;
 import com.kxs.product.api.model.KxsShopGoodsSku;
 import com.kxs.product.biz.service.KxsShopGoodsSkuService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 商城商品SKU表(KxsShopGoodsSku)表服务实现类
  *
@@ -15,5 +19,24 @@ import org.springframework.stereotype.Service;
 @Service("kxsShopGoodsSkuService")
 public class KxsShopGoodsSkuServiceImpl extends ServiceImpl<KxsShopGoodsSkuMapper, KxsShopGoodsSku> implements KxsShopGoodsSkuService {
 
+    @Override
+    public List<KxsShopGoodsSku> listByGoodsId(Integer goodsId) {
+        LambdaQueryWrapper<KxsShopGoodsSku> queryWrapper = new LambdaQueryWrapper();
+        queryWrapper.eq(KxsShopGoodsSku::getGoodId,goodsId);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public KxsShopGoodsSku getByGoodsIdAndSku(Integer goodsId, String specifications) {
+        LambdaQueryWrapper<KxsShopGoodsSku> queryWrapper = new LambdaQueryWrapper();
+        queryWrapper.eq(KxsShopGoodsSku::getGoodId,goodsId);
+        queryWrapper.eq(KxsShopGoodsSku::getSpecifications,specifications);
+        return this.getOne(queryWrapper);
+    }
+
+    @Override
+    public void initGoodsSku(KxsShopGoods param) {
+
+    }
 }
 

+ 18 - 0
kxs-product/kxs-product-biz/src/main/java/com/kxs/product/biz/service/impl/KxsShopGoodsSpecServiceImpl.java

@@ -1,11 +1,15 @@
 package com.kxs.product.biz.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.product.api.model.KxsShopGoodsSku;
 import com.kxs.product.biz.mapper.KxsShopGoodsSpecMapper;
 import com.kxs.product.api.model.KxsShopGoodsSpec;
 import com.kxs.product.biz.service.KxsShopGoodsSpecService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 商城商品SKU记录表(KxsShopGoodsSpec)表服务实现类
  *
@@ -15,5 +19,19 @@ import org.springframework.stereotype.Service;
 @Service("kxsShopGoodsSpecService")
 public class KxsShopGoodsSpecServiceImpl extends ServiceImpl<KxsShopGoodsSpecMapper, KxsShopGoodsSpec> implements KxsShopGoodsSpecService {
 
+    @Override
+    public List<KxsShopGoodsSpec> listByGoodsId(Integer goodsId) {
+        LambdaQueryWrapper<KxsShopGoodsSpec> queryWrapper = new LambdaQueryWrapper();
+        queryWrapper.eq(KxsShopGoodsSpec::getGoodsId,goodsId);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public KxsShopGoodsSpec getByGoodsIdAndSpec(Integer goodsId, String specifications) {
+        LambdaQueryWrapper<KxsShopGoodsSpec> queryWrapper = new LambdaQueryWrapper();
+        queryWrapper.eq(KxsShopGoodsSpec::getGoodsId,goodsId);
+        queryWrapper.eq(KxsShopGoodsSpec::getSpecification,specifications);
+        return this.getOne(queryWrapper);
+    }
 }
 

+ 8 - 1
kxs-product/kxs-product-biz/src/main/resources/mapper/KxsMerchantMapper.xml

@@ -28,6 +28,9 @@
 
     <resultMap id="WebKxsMerchantMap" type="com.kxs.product.api.vo.admin.merchant.SysMerchantPageVO" extends="KxsMerchantMap">
         <result column="pos_sn" property="posSn" />
+        <result column="is_act" property="activeStatus"/>
+        <result column="act_time" property="merStandardDate"/>
+        <result column="brandIdForName" property="brandIdForName"/>
     </resultMap>
     <select id="merchantList" resultType="com.kxs.product.api.vo.kxsapp.merchant.MerchantListVO">
         SELECT
@@ -115,10 +118,14 @@
      <select id="merchantPage" resultMap="WebKxsMerchantMap">
          SELECT
              kme.*,
-             kma.pos_sn
+             kma.pos_sn,
+             kma.is_act,
+             kma.act_time,
+             kb.name as brandIdForName
          FROM
              kxs_merchant kme
                  LEFT JOIN kxs_machine kma ON kme.machine_id = kma.id
+                 left join kxs_brand kb ON kme.brand_id = kb.id
          <where>
              and kme.del_flag = 0
              <if test="query.merchantNo != null and query.merchantNo != ''">

+ 8 - 1
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/admin/user/SysUserLogoutListDTO.java

@@ -45,7 +45,14 @@ public class SysUserLogoutListDTO {
      * 时间区间['time','time']
      */
     @Schema(description = "时间区间['time','time']")
-    private Object updateTime;
+    private String[] updateTime;
+
+
+    /**
+     * 实名状态
+     */
+    @Schema(description = "实名状态")
+    private Integer realStatus;
 
 
 

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

@@ -33,6 +33,12 @@ public class SysUserUserAccountListDTO {
     @Schema(description = "邀请码")
     private String userCode;
 
+    /**
+     * 状态 0注销 1正常 2锁定不可登陆和提现
+     */
+    @Schema(description = "状态 0注销 1正常 2锁定不可登陆和提现")
+    private Integer status;
+
 
 
 

+ 14 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/KxsUser.java

@@ -199,5 +199,19 @@ public class KxsUser extends Model<KxsUser> {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
 
+    /**
+     * 操作人
+     */
+    @Schema(description = "创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private String createBy;
+
+    /**
+     * 更新者
+     */
+    @Schema(description = "更新人")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateBy;
+
 }
 

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

@@ -14,11 +14,11 @@ public class SysTopUserVO{
     /**
      * 顶级创客姓名
      */
-    private Object topUsername;
+    private String topUsername;
 
 
     /**
      * 顶级创客编号
      */
-    private Object topUserCode;
+    private String topUserCode;
 }

+ 14 - 6
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/admin/user/SysUserPageVO.java

@@ -1,6 +1,7 @@
 package com.kxs.user.api.vo.admin.user;
 
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.kxs.user.api.model.KxsUser;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -28,6 +29,7 @@ public class SysUserPageVO extends KxsUser implements Serializable {
      * 实名时间
      */
     @Schema(description = "实名时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Object realTime;
 
 
@@ -35,42 +37,48 @@ public class SysUserPageVO extends KxsUser implements Serializable {
      * 上级创客姓名
      */
     @Schema(description = "上级创客姓名")
-    private Object pUsername;
+    private String pUsername;
 
 
     /**
      * 上级创客编码
      */
     @Schema(description = "上级创客编码")
-    private Object pUserCode;
+    private String pUserCode;
 
 
     /**
      * 顶级创客姓名
      */
     @Schema(description = "顶级创客姓名")
-    private Object topUsername;
+    private String topUsername;
 
 
     /**
      * 顶级创客编号
      */
     @Schema(description = "顶级创客编号")
-    private Object topUserCode;
+    private String topUserCode;
 
 
     /**
      * 是否盟主 1是
      */
     @Schema(description = "是否盟主 1是")
-    private Object isLeader;
+    private Integer isLeader;
 
 
     /**
      * 是否合伙人 1是
      */
     @Schema(description = "是否合伙人 1是")
-    private Object isPartner;
+    private Integer isPartner;
+
+    /**
+     * 身份证编号
+     */
+    @Schema(description = "身份证编号")
+    private String idCard;
 
 
 

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

@@ -80,7 +80,7 @@ public class SysUserController {
      * @return 已注销创客
      */
     @GetMapping("/logoutList")
-    public R logoutList(Page<KxsUser> page, SysUserLogoutListDTO param) {
+    public R logoutList(Page<SysUserPageVO> page, SysUserLogoutListDTO param) {
         kxsUserService.getLogoutListPage(page, param);
         return R.ok(page);
     }
@@ -138,7 +138,7 @@ public class SysUserController {
      */
     @SysLog("创客信息-注销")
     @DeleteMapping("/logout/{userId}")
-    public R logout(@PathVariable("userId") String userId) {
+    public R logout(@PathVariable("userId") Integer userId) {
         kxsUserService.updateStatusByUserId(userId, UserStatusEnum.REMOVE);
         return R.ok();
     }
@@ -179,7 +179,7 @@ public class SysUserController {
      */
     @SysLog("创客信息-锁定")
     @DeleteMapping("/lockUser/{userId}")
-    public R lockUser(@PathVariable("userId") String userId) {
+    public R lockUser(@PathVariable("userId") Integer userId) {
         kxsUserService.updateStatusByUserId(userId,UserStatusEnum.LOCKED);
         return R.ok();
     }

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

@@ -100,7 +100,7 @@ public interface KxsUserMapper extends BaseMapper<KxsUser> {
      * @param param 查询参数
      * @return list
      */
-    List<KxsUser> getLogoutListPage(Page page, @Param("query") SysUserLogoutListDTO param);
+    List<SysUserPageVO> getLogoutListPage(Page page, @Param("query") SysUserLogoutListDTO param);
 
 
     /**

+ 6 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserRealService.java

@@ -11,5 +11,11 @@ import com.kxs.user.api.model.KxsUserReal;
  */
 public interface KxsUserRealService extends IService<KxsUserReal> {
 
+    /**
+     * 通过用户id查询实名信息
+     * @param userId
+     * @return
+     */
+    KxsUserReal getByUserId(Integer userId);
 }
 

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

@@ -329,13 +329,13 @@ public interface KxsUserService extends IService<KxsUser> {
      * @param param
      * @return
      */
-    List<KxsUser> getLogoutListPage(Page page, SysUserLogoutListDTO param);
+    List<SysUserPageVO> getLogoutListPage(Page page, SysUserLogoutListDTO param);
 
     /**
      * 更新用户状态(注销,锁定)
      * @param userId
      */
-    void updateStatusByUserId(String userId, UserStatusEnum userStatusEnum);
+    void updateStatusByUserId(Integer userId, UserStatusEnum userStatusEnum);
 
     /**
      * 批量更新用户状态(注销,锁定)

+ 8 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserRealServiceImpl.java

@@ -1,5 +1,6 @@
 package com.kxs.user.biz.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kxs.user.biz.mapper.KxsUserRealMapper;
 import com.kxs.user.api.model.KxsUserReal;
@@ -15,5 +16,12 @@ import org.springframework.stereotype.Service;
 @Service("kxsUserRealService")
 public class KxsUserRealServiceImpl extends ServiceImpl<KxsUserRealMapper, KxsUserReal> implements KxsUserRealService {
 
+
+    @Override
+    public KxsUserReal getByUserId(Integer userId) {
+        LambdaQueryWrapper<KxsUserReal> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(o->o.getUserId(),userId);
+        return this.getOne(queryWrapper);
+    }
 }
 

+ 22 - 3
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserServiceImpl.java

@@ -85,6 +85,7 @@ 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.KxsUserRealService;
 import com.kxs.user.biz.service.KxsUserService;
 import com.kxs.user.biz.util.SmsUtils;
 import com.kxs.user.biz.util.TopUserIdUtil;
@@ -151,6 +152,9 @@ public class KxsUserServiceImpl extends ServiceImpl<KxsUserMapper, KxsUser> impl
 
     private final KxsUserPresetLogMapper kxsUserPresetLogMapper;
     private final RemoteKxsProductService remoteKxsProductService;
+
+    private final KxsUserRealService kxsUserRealService;
+
     @Value("${spring.profiles.active}")
     private String active;
 
@@ -404,22 +408,37 @@ public class KxsUserServiceImpl extends ServiceImpl<KxsUserMapper, KxsUser> impl
     }
 
     @Override
-    public List<KxsUser> getLogoutListPage(Page page, SysUserLogoutListDTO param) {
-        List<KxsUser> list = baseMapper.getLogoutListPage(page, param);
+    public List<SysUserPageVO> getLogoutListPage(Page page, SysUserLogoutListDTO param) {
+        List<SysUserPageVO> list = baseMapper.getLogoutListPage(page, param);
+        packageTopUser(list);
         if(page != null){
             page.setRecords(list);
         }
         return list;
     }
 
+    @Transactional
     @Override
-    public void updateStatusByUserId(String userId,UserStatusEnum userStatusEnum) {
+    public void updateStatusByUserId(Integer userId,UserStatusEnum userStatusEnum) {
         KxsUser kxsUser = getById(userId);
         if(kxsUser == null){
             throw new GlobalCustomerException("创客信息不存在");
         }
+        //如果是注销
+        if(userStatusEnum.equals(UserStatusEnum.REMOVE)){
+            String phone = kxsUser.getPhone();
+            kxsUser.setPhone(phone+"d");
+            KxsUserReal kxsUserReal = kxsUserRealService.getByUserId(userId);
+            if(kxsUserReal != null){
+                String idCard = kxsUserReal.getIdCard();
+                kxsUserReal.setIdCard(idCard+"d");
+                kxsUserRealService.updateById(kxsUserReal);
+            }
+        }
         kxsUser.setStatus(userStatusEnum.getCode());
         updateById(kxsUser);
+
+
     }
 
     @Override

+ 1 - 0
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsChangeTypeKindMapper.xml

@@ -27,5 +27,6 @@
                 AND kctk.name LIKE #{nameLike}
             </if>
         </where>
+        order by kctk.create_time desc
     </select>
 </mapper>

+ 1 - 0
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsChangeTypeMapper.xml

@@ -30,6 +30,7 @@
                 AND kct.name LIKE #{nameLike}
             </if>
         </where>
+        order by kct.create_time desc
     </select>
 
 </mapper>

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

@@ -43,7 +43,7 @@
                 and kua.advance_type = #{query.advanceType}
             </if>
             <if test="query.status != null">
-                and kua.status = #{status}
+                and kua.status = #{query.status}
             </if>
             <if test="query.userCode != null and query.userCode != ''">
                 <bind name="userCodeLike" value="'%'+query.userCode+'%'"/>

+ 24 - 2
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserMapper.xml

@@ -26,6 +26,8 @@
         <result column="del_flag" property="delFlag"/>
         <result column="update_time" property="updateTime"/>
         <result column="create_time" property="createTime"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="create_by" property="createBy"/>
         <result column="to_merchant_maker_time" property="toMerchantMakerTime"/>
         <result column="this_month_trade" property="thisMonthTrade"/>
     </resultMap>
@@ -36,6 +38,7 @@
         <result column="pUserCode" property="pUserCode"/>
         <result column="isLeader" property="isLeader"/>
         <result column="isPartner" property="isPartner"/>
+        <result column="id_card" property="idCard"/>
     </resultMap>
 
     <resultMap id="AccountKxsUserMap" extends="KxsUserMap" type="com.kxs.user.api.vo.admin.user.SysUserUserAccountListVO">
@@ -195,9 +198,16 @@
         order by ku.create_time
     </select>
 
-    <select id="getLogoutListPage" resultMap="KxsUserMap">
-        select DISTINCT ku.* from kxs_user ku
+    <select id="getLogoutListPage" resultMap="WebKxsUserMap">
+        select DISTINCT
+            ku.*,
+            kur.create_time AS realTime,
+            p_ku.username AS pUsername,
+            p_ku.user_code AS pUserCode,
+            kur.id_card
+        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
         <where>
             and ku.del_flag != 1 and ku.status = 0
             <if test="query.username != null and query.username != ''">
@@ -216,6 +226,15 @@
                 <bind name="userCodeLike" value="'%'+query.userCode+'%'"/>
                 AND ku.user_code LIKE #{userCodeLike}
             </if>
+            <if test="query.realStatus != null">
+                AND ku.real_status = #{query.realStatus}
+            </if>
+            <if test="query.updateTime != null and query.updateTime.length > 1">
+                and (
+                DATE_FORMAT(update_time,'%Y-%m-%d') >= DATE_FORMAT(#{query.updateTime.[0]},'%Y-%m-%d') and
+                DATE_FORMAT(#{query.updateTime.[1]},'%Y-%m-%d')  >= DATE_FORMAT(update_time,'%Y-%m-%d')
+                )
+            </if>
         </where>
     </select>
 
@@ -245,6 +264,9 @@
                 <bind name="userCodeLike" value="'%'+query.userCode+'%'"/>
                 AND ku.user_code LIKE #{userCodeLike}
             </if>
+            <if test="query.status != null">
+                AND ku.status = #{query.status}
+            </if>
         </where>
         order by ku.create_time
     </select>