فهرست منبع

Merge remote-tracking branch 'origin/master'

Valley 1 سال پیش
والد
کامیت
bf043c6929
36فایلهای تغییر یافته به همراه529 افزوده شده و 148 حذف شده
  1. 4 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/ConfirmOrderResultDTO.java
  2. 5 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/GoodsDTO.java
  3. 5 1
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/MerchantAuthDTO.java
  4. 30 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/MerchantCartItemDTO.java
  5. 5 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/MerchantDTO.java
  6. 1 1
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/MerchantDetailDTO.java
  7. 8 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/OmsCartItemDTO.java
  8. 4 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/ReservationDTO.java
  9. 1 2
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/GoodsModifyParam.java
  10. 14 2
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/OmsCartItemModifyParam.java
  11. 21 8
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/OmsOrderModifyParam.java
  12. 1 1
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/FavoriteService.java
  13. 6 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/MerchantService.java
  14. 6 2
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/OmsCartItemService.java
  15. 7 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/FavoriteMapper.java
  16. 7 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/MerchantMapper.java
  17. 1 1
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/Goods.java
  18. 1 1
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/MerchantAuth.java
  19. 9 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/OmsCartItem.java
  20. 4 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/OmsOrder.java
  21. 1 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/OmsOrderItem.java
  22. 9 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/CategoryService.java
  23. 8 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/MerchantService.java
  24. 23 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/UserCouponService.java
  25. 7 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/CategoryServiceImpl.java
  26. 29 12
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/FavoriteServiceImpl.java
  27. 11 1
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/GoodsServiceImpl.java
  28. 1 1
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantAuthServiceImpl.java
  29. 66 10
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantServiceImpl.java
  30. 46 10
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OmsCartItemServiceImpl.java
  31. 118 89
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OmsOrderServiceImpl.java
  32. 28 5
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/ReservationServiceImpl.java
  33. 25 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/UserCouponServiceImpl.java
  34. 5 0
      vehicle-server/src/main/resources/mapper/FavoriteMapper.xml
  35. 1 1
      vehicle-server/src/main/resources/mapper/GoodsMapper.xml
  36. 11 0
      vehicle-server/src/main/resources/mapper/MerchantMapper.xml

+ 4 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/ConfirmOrderResultDTO.java

@@ -31,4 +31,8 @@ public class ConfirmOrderResultDTO implements Serializable {
     private Integer memberIntegration;
     //计算的金额
     private CalcAmountDTO calcAmount;
+    /**
+     * 商家信息
+     */
+    private MerchantDTO merchantDTO;
 }

+ 5 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/GoodsDTO.java

@@ -33,6 +33,11 @@ public class GoodsDTO implements Serializable {
      */
     private CategoryType type;
 
+    /**
+     * 分类名称
+     */
+    private String  categoryName;
+
     /**
      * 分类ID
      */

+ 5 - 1
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/MerchantAuthDTO.java

@@ -101,7 +101,7 @@ public class MerchantAuthDTO implements Serializable {
     /**
      * 审核人
      */
-    private Long reviewer; // 审核人
+    private String reviewer; // 审核人
     /**
      * 推荐人
      */
@@ -110,4 +110,8 @@ public class MerchantAuthDTO implements Serializable {
      * 审核时间
      */
     private Date reviewTime; // 审核时间
+    /**
+     * 申请时间
+     */
+    private Date applicationTime; //
 }

+ 30 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/MerchantCartItemDTO.java

@@ -0,0 +1,30 @@
+package com.chelvc.cloud.vehicle.api.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 用户商家购物车
+ *
+ * @author liude
+ * @date 2024/2/21
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MerchantCartItemDTO implements Serializable {
+    /**
+     * 购物车商品信息
+     */
+    private List<OmsCartItemDTO> cartItems;
+    /**
+     * 商家信息
+     */
+    private MerchantDTO merchantDTO;
+}

+ 5 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/MerchantDTO.java

@@ -116,4 +116,9 @@ public class MerchantDTO implements Serializable {
      * 创建时间
      */
     private Date createTime;
+
+    /**
+     * 商家是否被收藏
+     */
+    private boolean favorites = false;
 }

+ 1 - 1
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/MerchantDetailDTO.java

@@ -33,5 +33,5 @@ public class MerchantDetailDTO implements Serializable {
     /**
      * 分类类型列表
      */
-    private List<CategoryType> categories;
+    private List<CategoryDTO> categories;
 }

+ 8 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/OmsCartItemDTO.java

@@ -80,5 +80,13 @@ public class OmsCartItemDTO implements Serializable
 
     /** 商品销售属性:[{"key":"颜色","value":"颜色"},{"key":"容量","value":"4G"}] */
     private String goodsAttr;
+    /**
+     * 商家ID
+     */
+    private Long merchantId;
+    /**
+     * 商品原价
+     */
+    private Double originalPrice;
 
 }

+ 4 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/ReservationDTO.java

@@ -29,6 +29,10 @@ public class ReservationDTO implements Serializable {
      * 用户ID
      */
     private Long userId;
+    /**
+     * 用户名称
+     */
+    private String username;
 
     /**
      * 商家ID

+ 1 - 2
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/GoodsModifyParam.java

@@ -26,8 +26,7 @@ public class GoodsModifyParam {
     /**
      * 分类类型
      */
-    @NotNull(message = "分类类型不能为空")
-    private CategoryType type;
+//    private CategoryType type;
 
     /**
      * 分类ID

+ 14 - 2
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/OmsCartItemModifyParam.java

@@ -25,10 +25,14 @@ public class OmsCartItemModifyParam implements Serializable
 {
     private static final long serialVersionUID = 1L;
 
-    /** $column.columnComment */
+    /**
+     * id
+     */
     private Long id;
 
-    /** $column.columnComment */
+    /**
+     * 商品id
+     */
     private Long goodsId;
 
     /** $column.columnComment */
@@ -80,5 +84,13 @@ public class OmsCartItemModifyParam implements Serializable
 
     /** 商品销售属性:[{"key":"颜色","value":"颜色"},{"key":"容量","value":"4G"}] */
     private String goodsAttr;
+    /**
+     * 商家id
+     */
+    private Long merchantId;
+    /**
+     * 商品原价
+     */
+    private Double originalPrice;
 
 }

+ 21 - 8
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/OmsOrderModifyParam.java

@@ -20,19 +20,32 @@ import java.util.List;
 @SuperBuilder
 @NoArgsConstructor
 @AllArgsConstructor
-@ToString(callSuper = true)
 public class OmsOrderModifyParam implements Serializable
-{
-    private static final long serialVersionUID = 1L;
+{ private static final long serialVersionUID = 1L;
 
-    //@ApiModelProperty("收货地址ID")
+    /**
+     * 收货地址ID
+     */
     private Long userReceiveAddressId;
-    //@ApiModelProperty("优惠券ID")
+    /**
+     * 优惠券ID
+     */
     private Long couponId;
-    //@ApiModelProperty("使用的积分数")
+    /**
+     * 使用的积分数
+     */
     private Integer useIntegration;
-    //@ApiModelProperty("支付方式")
+    /**
+     * 支付方式
+     * 支付方式:0->未支付;1->支付宝;2->微信
+     */
     private Integer payType;
-    //@ApiModelProperty("被选中的购物车商品ID")
+    /**
+     * 被选中的购物车商品ID
+     */
     private List<Long> cartIds;
+    /**
+     * 商家id
+     */
+    private Long merchantId;
 }

+ 1 - 1
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/FavoriteService.java

@@ -21,7 +21,7 @@ public interface FavoriteService {
      * @param merchantId 商家ID
      * @return 收藏ID
      */
-    Long addMerchantFavorite(Long merchantId);
+    Long addMerchantFavorite(Long merchantId,String type);
 
     /**
      * 取消我的收藏

+ 6 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/MerchantService.java

@@ -98,4 +98,10 @@ public interface MerchantService {
      * @return 商家信息
      */
     MerchantDTO getMerchant(Long id);
+
+    /**
+     * 获取商家信息
+     * @return
+     */
+    List<MerchantDTO> getMerchantIdsByUserId();
 }

+ 6 - 2
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/OmsCartItemService.java

@@ -1,6 +1,5 @@
 package com.chelvc.cloud.vehicle.api.service;
-
-import com.chelvc.cloud.vehicle.api.dto.CartPromotionItemDTO;
+import com.chelvc.cloud.vehicle.api.dto.MerchantCartItemDTO;
 import com.chelvc.cloud.vehicle.api.dto.OmsCartItemDTO;
 import com.chelvc.cloud.vehicle.api.param.OmsCartItemModifyParam;
 
@@ -51,5 +50,10 @@ public interface OmsCartItemService
      */
     void clear();
 
+    /**
+     * 根据会员编号及商家获取购物车列表
+     */
+    MerchantCartItemDTO listCartItem(Long merchantId);
+
 
 }

+ 7 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/FavoriteMapper.java

@@ -33,4 +33,11 @@ public interface FavoriteMapper extends BaseMapper<Favorite> {
      * @return 用户收藏店铺列表
      */
     List<Favorite> listFavoriteMerchants(@Param("userId") Long userId, @Param("param") FavoriteQueryParam param);
+
+    /**
+     * 取消收藏
+     * @param id 商品或者商家ID
+     * @param userId 用户id
+     */
+    void deleteFavorite(@Param("id") Long id,@Param("userId") Long userId);
 }

+ 7 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/MerchantMapper.java

@@ -52,4 +52,11 @@ public interface MerchantMapper extends BaseMapper<Merchant> {
      * @return 商家详情
      */
     Merchant getMerchantById(@Param("id") Long id, @Param("param") LocationQueryParam param);
+
+    /**
+     * 商家是否被收藏
+     * @param merchantId
+     * @return
+     */
+    Integer merchantFavorite(@Param("merchantId") Long merchantId,@Param("userId") Long userId);
 }

+ 1 - 1
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/Goods.java

@@ -42,7 +42,7 @@ public class Goods extends ModifyEntity<Long> {
     /**
      * 分类类型
      */
-    private CategoryType type;
+//    private CategoryType type;
 
     /**
      * 分类ID

+ 1 - 1
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/MerchantAuth.java

@@ -47,7 +47,7 @@ public class MerchantAuth implements Entity<Long> {
     private Date businessLicenseExpirationDateValid; // 经营许可证有效期
     private Date applicationTime; // 申请时间
     private String reviewStatus; // 审核状态
-    private Long reviewer; // 审核人
+    private String reviewer; // 审核人
     private String recommendationUser; // 推荐人
     private Date reviewTime; // 审核时间
 }

+ 9 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/OmsCartItem.java

@@ -92,5 +92,14 @@ public class OmsCartItem extends ModifyEntity<Long>
     private Long creator;
 
     private Long updater;
+    /**
+     * 商家id
+     */
+    private Long merchantId;
+
+    /**
+     * 商品原价
+     */
+    private Double originalPrice;
 
 }

+ 4 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/OmsOrder.java

@@ -161,4 +161,8 @@ public class OmsOrder extends ModifyEntity<Long>
     /** 评价时间 */
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date commentTime;
+    /**
+     * 商家ID
+     */
+    private Long merchantId;
 }

+ 1 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/OmsOrderItem.java

@@ -92,4 +92,5 @@ public class OmsOrderItem extends ModifyEntity<Long>
     private Integer giftGrowth;
 
     private String goodsAttr;
+
 }

+ 9 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/CategoryService.java

@@ -1,8 +1,11 @@
 package com.chelvc.cloud.vehicle.server.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.chelvc.cloud.vehicle.api.dto.CategoryDTO;
 import com.chelvc.cloud.vehicle.server.entity.Category;
 
+import java.util.List;
+
 /**
  * 分类业务操作接口
  *
@@ -10,4 +13,10 @@ import com.chelvc.cloud.vehicle.server.entity.Category;
  * @date 2023/5/2
  */
 public interface CategoryService extends IService<Category> {
+    /**
+     * 查询分类列表
+     * @param categories
+     * @return
+     */
+    List<CategoryDTO> listCategories(List<Long> categories);
 }

+ 8 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/MerchantService.java

@@ -3,6 +3,8 @@ package com.chelvc.cloud.vehicle.server.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.chelvc.cloud.vehicle.server.entity.Merchant;
 
+import java.util.List;
+
 /**
  * 商家业务操作接口
  *
@@ -10,4 +12,10 @@ import com.chelvc.cloud.vehicle.server.entity.Merchant;
  * @date 2023/5/2
  */
 public interface MerchantService extends IService<Merchant> {
+    /**
+     * 获取商家id
+     * @param userId 用户id
+     * @return
+     */
+    List<Long> getMerchantIdsByUserId(Long userId);
 }

+ 23 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/UserCouponService.java

@@ -6,6 +6,8 @@ import com.chelvc.cloud.vehicle.server.entity.UserCoupon;
 import com.chelvc.framework.common.model.Pagination;
 import com.chelvc.framework.common.model.Paging;
 
+import java.util.List;
+
 /**
  * 优惠券领取业务操作接口
  *
@@ -29,4 +31,25 @@ public interface UserCouponService extends IService<UserCoupon> {
     void changeUserCouponInformFlag(Long userId);
 
     Pagination<UserCouponDTO> selectUserCouponListByUserId(Long userId, Paging paging);
+
+    /**
+     * 查询用户得优惠卷
+     * @return
+     */
+    List<UserCouponDTO> getUserCouponList(Long userId);
+
+    /**
+     * 查询用户优惠劵信息
+     * @param couponId
+     * @param userId
+     * @return
+     */
+    UserCoupon getUserCouponInfo(Long couponId,Long userId);
+
+    /**
+     * 用户得优惠劵改为已使用
+     * @param couponId
+     * @param userId
+     */
+    void updateUserCouponUserd(UserCoupon userCoupon,Long couponId,Long userId);
 }

+ 7 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/CategoryServiceImpl.java

@@ -99,4 +99,11 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
         categories.sort(Comparator.comparing(Category::getType).thenComparing(Category::getSort));
         return CategoryCopier.INSTANCE.copying(categories);
     }
+    @Override
+    public List<CategoryDTO> listCategories(List<Long> ids){
+        List<Category> categories = this.lambdaQuery().in(Category::getId,ids).eq(Category::getEnabled, true)
+                .orderByAsc(Category::getSort).list();
+        categories.sort(Comparator.comparing(Category::getType).thenComparing(Category::getSort));
+        return CategoryCopier.INSTANCE.copying(categories);
+    }
 }

+ 29 - 12
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/FavoriteServiceImpl.java

@@ -17,6 +17,7 @@ import lombok.NonNull;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.util.CollectionUtils;
 
+import java.sql.Wrapper;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
@@ -33,24 +34,40 @@ import java.util.stream.Collectors;
 public class FavoriteServiceImpl extends ServiceImpl<FavoriteMapper, Favorite> implements FavoriteService,
         com.chelvc.cloud.vehicle.api.service.FavoriteService {
     @Override
-    public Long addMerchantFavorite(@NonNull Long merchantId) {
+    public Long addMerchantFavorite(@NonNull Long merchantId,String type) {
         Long userId = SessionContextHolder.getId();
-        Integer count = this.lambdaQuery()
-                .eq(Favorite::getUserId, userId)
-                .eq(Favorite::getType, FavoriteType.MERCHANT)
-                .eq(Favorite::getContentId, merchantId).count();
-        ResourceUtils.available(count <= 0, "收藏信息已存在");
-        Favorite favorite = Favorite.builder().userId(userId).type(FavoriteType.MERCHANT)
-                .contentId(merchantId).createTime(new Date()).build();
-        this.baseMapper.saveFavorite(favorite);
-        return favorite.getId();
+        if ("GOODS".equals(type)){
+            Integer count = this.lambdaQuery()
+                    .eq(Favorite::getUserId, userId)
+                    .eq(Favorite::getType, FavoriteType.GOODS)
+                    .eq(Favorite::getContentId, merchantId).count();
+            ResourceUtils.available(count <= 0, "收藏信息已存在");
+            Favorite favorite = Favorite.builder().userId(userId).type(FavoriteType.GOODS)
+                    .contentId(merchantId).createTime(new Date()).build();
+            this.baseMapper.saveFavorite(favorite);
+            return favorite.getId();
+        }else{
+            Integer count = this.lambdaQuery()
+                    .eq(Favorite::getUserId, userId)
+                    .eq(Favorite::getType, FavoriteType.MERCHANT)
+                    .eq(Favorite::getContentId, merchantId).count();
+            ResourceUtils.available(count <= 0, "收藏信息已存在");
+            Favorite favorite = Favorite.builder().userId(userId).type(FavoriteType.MERCHANT)
+                    .contentId(merchantId).createTime(new Date()).build();
+            this.baseMapper.saveFavorite(favorite);
+            return favorite.getId();
+        }
     }
 
     @Override
     public void deleteMineFavorite(@NonNull Long id) {
-        Favorite favorite = ResourceUtils.required(this.getById(id), "收藏信息不存在");
+        Long userId = SessionContextHolder.getId();
+        Favorite favorite = this.lambdaQuery()
+                .eq(Favorite::getUserId, userId)
+                .eq(Favorite::getContentId, id).one();
+        ResourceUtils.available(favorite != null, "收藏信息不存在");
         ResourceUtils.available(Objects.equals(favorite.getUserId(), SessionContextHolder.getId()), "非法操作");
-        this.removeById(id);
+        this.baseMapper.deleteFavorite(id,userId);
     }
 
     @Override

+ 11 - 1
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/GoodsServiceImpl.java

@@ -12,7 +12,9 @@ import com.chelvc.cloud.vehicle.api.param.GoodsPagingParam;
 import com.chelvc.cloud.vehicle.api.param.GoodsQueryParam;
 import com.chelvc.cloud.vehicle.server.copier.GoodsCopier;
 import com.chelvc.cloud.vehicle.server.dao.GoodsMapper;
+import com.chelvc.cloud.vehicle.server.entity.Category;
 import com.chelvc.cloud.vehicle.server.entity.Goods;
+import com.chelvc.cloud.vehicle.server.service.CategoryService;
 import com.chelvc.cloud.vehicle.server.service.CommentService;
 import com.chelvc.cloud.vehicle.server.service.CouponService;
 import com.chelvc.cloud.vehicle.server.service.GoodsService;
@@ -43,6 +45,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
         com.chelvc.cloud.vehicle.api.service.GoodsService {
     private final CouponService couponService;
     private final CommentService commentService;
+    private final CategoryService categoryService;
 
     @Override
     public List<CategoryType> listMerchantGoodsCategoryTypes(@NonNull Long merchantId) {
@@ -114,7 +117,14 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
                 .eq(Objects.nonNull(param.getStatus()), Goods::getStatus, param.getStatus())
                 .like(StringUtils.nonEmpty(param.getName()), Goods::getName, param.getName())
                 .orderByDesc(Goods::getCreateTime).page(PagingUtils.convert(param.getPaging()));
-        return PagingUtils.convert(page, GoodsCopier.INSTANCE::copying);
+        Pagination<GoodsDTO> pagination = PagingUtils.convert(page, GoodsCopier.INSTANCE::copying);
+        pagination.getRecords().forEach(item ->{
+            Category category = this.categoryService.getById(item.getCategoryId());
+            if (category != null){
+                item.setCategoryName(category.getName());
+            }
+        });
+        return pagination;
     }
 
     @Override

+ 1 - 1
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantAuthServiceImpl.java

@@ -76,7 +76,7 @@ public class MerchantAuthServiceImpl extends ServiceImpl<MerchantAuthMapper, Mer
         MerchantAuth merchantAuth = ResourceUtils.required(this.getById(id), "商家认证不存在");
         merchantAuth.setReviewStatus(state);
         merchantAuth.setReviewTime(new Date());
-        merchantAuth.setReviewer(userId);
+        merchantAuth.setReviewer(userId.toString());
         this.updateById(merchantAuth);
     }
 }

+ 66 - 10
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantServiceImpl.java

@@ -2,17 +2,22 @@ package com.chelvc.cloud.vehicle.server.service.impl;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.chelvc.cloud.uc.api.service.EmployeeService;
 import com.chelvc.cloud.vehicle.api.constant.CategoryType;
 import com.chelvc.cloud.vehicle.api.constant.MerchantStatus;
+import com.chelvc.cloud.vehicle.api.dto.CategoryDTO;
 import com.chelvc.cloud.vehicle.api.dto.GoodsDTO;
 import com.chelvc.cloud.vehicle.api.dto.MerchantDTO;
 import com.chelvc.cloud.vehicle.api.dto.MerchantDetailDTO;
 import com.chelvc.cloud.vehicle.api.param.*;
+import com.chelvc.cloud.vehicle.server.copier.GoodsCopier;
 import com.chelvc.cloud.vehicle.server.copier.MerchantCopier;
 import com.chelvc.cloud.vehicle.server.dao.MerchantMapper;
 import com.chelvc.cloud.vehicle.server.entity.Merchant;
+import com.chelvc.cloud.vehicle.server.service.CategoryService;
 import com.chelvc.cloud.vehicle.server.service.GoodsService;
 import com.chelvc.cloud.vehicle.server.service.MerchantService;
+import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.base.util.ResourceUtils;
 import com.chelvc.framework.common.model.Pagination;
 import com.chelvc.framework.common.util.StringUtils;
@@ -24,6 +29,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 import java.util.List;
 import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * 商家业务操作实现
@@ -37,6 +44,10 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
         com.chelvc.cloud.vehicle.api.service.MerchantService {
     private final GoodsService goodsService;
 
+    private final CategoryService categoryService;
+
+    private final EmployeeService employeeService;
+
     @Override
     public List<MerchantDTO> listNearbyMerchants(@NonNull LocationQueryParam param, int size) {
         return this.baseMapper.listNearbyMerchants(param, size);
@@ -65,8 +76,12 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
         );
 
         // 获取商家商品分类类型列表
-        List<CategoryType> types = this.goodsService.listMerchantGoodsCategoryTypes(id);
-        return MerchantDetailDTO.builder().merchant(merchant).goods(goods).categories(types).build();
+//        List<CategoryType> types = this.goodsService.listMerchantGoodsCategoryTypes(id);
+        List<Long> idSet = goods.stream()
+                .map(GoodsDTO::getCategoryId) // 将每个Person对象映射到其id
+                .collect(Collectors.toList());
+        List<CategoryDTO> categories = this.categoryService.listCategories(idSet);
+        return MerchantDetailDTO.builder().merchant(merchant).goods(goods).categories(categories).build();
     }
 
     @Override
@@ -75,6 +90,12 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
         MerchantDTO merchant = MerchantCopier.INSTANCE.copying(
                 ResourceUtils.required(this.baseMapper.getMerchantById(id, param), "商家不存在")
         );
+        Long userId = SessionContextHolder.getSession().getId();
+        //查询商家是否被收藏
+        Integer count = this.baseMapper.merchantFavorite(id,userId);
+        if (count > 0){
+            merchant.setFavorites(true);
+        }
 
         // 获取商家全部商品列表
         List<GoodsDTO> goods = this.goodsService.listMerchantSimpleGoods(
@@ -82,8 +103,12 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
         );
 
         // 获取商家商品分类类型列表
-        List<CategoryType> types = this.goodsService.listMerchantGoodsCategoryTypes(id);
-        return MerchantDetailDTO.builder().merchant(merchant).goods(goods).categories(types).build();
+//        List<CategoryType> types = this.goodsService.listMerchantGoodsCategoryTypes(id);
+        List<Long> idSet = goods.stream()
+                .map(GoodsDTO::getCategoryId) // 将每个Person对象映射到其id
+                .collect(Collectors.toList());
+        List<CategoryDTO> categories = this.categoryService.listCategories(idSet);
+        return MerchantDetailDTO.builder().merchant(merchant).goods(goods).categories(categories).build();
     }
 
     @Override
@@ -117,12 +142,24 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
 
     @Override
     public Pagination<MerchantDTO> getMerchantPaging(@NonNull MerchantPagingParam param) {
-        Page<Merchant> page = this.lambdaQuery()
-                .like(StringUtils.nonEmpty(param.getName()), Merchant::getName, param.getName())
-                .eq(Objects.nonNull(param.getRecommend()), Merchant::getRecommend, param.getRecommend())
-                .eq(Objects.nonNull(param.getStatus()), Merchant::getStatus, param.getStatus())
-                .orderByDesc(Merchant::getCreateTime).page(PagingUtils.convert(param.getPaging()));
-        return PagingUtils.convert(page, MerchantCopier.INSTANCE::copying);
+        Long userId = SessionContextHolder.getSession().getId();
+        if (employeeService.isAdmin(userId)){
+            Page<Merchant> page = this.lambdaQuery()
+                    .like(StringUtils.nonEmpty(param.getName()), Merchant::getName, param.getName())
+                    .eq(Objects.nonNull(param.getRecommend()), Merchant::getRecommend, param.getRecommend())
+                    .eq(Objects.nonNull(param.getStatus()), Merchant::getStatus, param.getStatus())
+                    .orderByDesc(Merchant::getCreateTime).page(PagingUtils.convert(param.getPaging()));
+            return PagingUtils.convert(page, MerchantCopier.INSTANCE::copying);
+        }else{
+            Page<Merchant> page = this.lambdaQuery()
+                    .like(StringUtils.nonEmpty(param.getName()), Merchant::getName, param.getName())
+                    .eq(Objects.nonNull(param.getRecommend()), Merchant::getRecommend, param.getRecommend())
+                    .eq(Objects.nonNull(param.getStatus()), Merchant::getStatus, param.getStatus())
+                    .eq(Merchant::getUserId,userId)
+                    .orderByDesc(Merchant::getCreateTime).page(PagingUtils.convert(param.getPaging()));
+            return PagingUtils.convert(page, MerchantCopier.INSTANCE::copying);
+        }
+
     }
 
     @Override
@@ -140,4 +177,23 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
     private MerchantDTO convert(Merchant merchant) {
         return MerchantCopier.INSTANCE.copying(merchant);
     }
+
+
+    @Override
+    public List<Long> getMerchantIdsByUserId(Long userId){
+       List<Merchant> merchants = this.lambdaQuery()
+                .eq(Merchant::getUserId, userId)
+                .eq(Merchant::getStatus, MerchantStatus.ONLINE)
+               .list();
+       return merchants.stream().map(Merchant::getId).collect(Collectors.toList());
+    }
+    @Override
+    public List<MerchantDTO> getMerchantIdsByUserId(){
+        Long userId = SessionContextHolder.getSession().getId();
+        List<Merchant> merchants = this.lambdaQuery()
+                .eq(Merchant::getUserId, userId)
+                .eq(Merchant::getStatus, MerchantStatus.ONLINE)
+                .list();
+        return MerchantCopier.INSTANCE.copying(merchants);
+    }
 }

+ 46 - 10
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OmsCartItemServiceImpl.java

@@ -1,16 +1,19 @@
 package com.chelvc.cloud.vehicle.server.service.impl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.chelvc.cloud.vehicle.api.dto.CartPromotionItemDTO;
+import com.chelvc.cloud.vehicle.api.dto.MerchantCartItemDTO;
 import com.chelvc.cloud.vehicle.api.dto.OmsCartItemDTO;
 import com.chelvc.cloud.vehicle.api.param.OmsCartItemModifyParam;
 import com.chelvc.cloud.vehicle.server.copier.CartItemCopier;
+import com.chelvc.cloud.vehicle.server.copier.MerchantCopier;
 import com.chelvc.cloud.vehicle.server.dao.OmsCartItemMapper;
+import com.chelvc.cloud.vehicle.server.entity.Merchant;
 import com.chelvc.cloud.vehicle.server.entity.OmsCartItem;
+import com.chelvc.cloud.vehicle.server.service.MerchantService;
 import com.chelvc.cloud.vehicle.server.service.OmsCartItemService;
 import com.chelvc.framework.base.context.SessionContextHolder;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang.ObjectUtils;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
 import java.util.ArrayList;
@@ -28,6 +31,8 @@ import java.util.stream.Collectors;
 @DubboService(interfaceClass = com.chelvc.cloud.vehicle.api.service.OmsCartItemService.class)
 public class OmsCartItemServiceImpl extends ServiceImpl<OmsCartItemMapper, OmsCartItem> implements OmsCartItemService,
         com.chelvc.cloud.vehicle.api.service.OmsCartItemService {
+
+    private final MerchantService merchantService;
     @Override
     public int add(OmsCartItemModifyParam cartItem) {
         int count;
@@ -72,12 +77,23 @@ public class OmsCartItemServiceImpl extends ServiceImpl<OmsCartItemMapper, OmsCa
         return omsCartItemList;
     }
 
+    public List<OmsCartItemDTO> listCartItem(List<Long> cartIds) {
+        Long userId = SessionContextHolder.getId();
+        OmsCartItem omsCartItem = new OmsCartItem();
+        omsCartItem.setUserId(userId);
+        List<OmsCartItem> cartItemList = this.lambdaQuery()
+                .eq(OmsCartItem::getUserId, userId)
+                .in(OmsCartItem::getGoodsId,cartIds).list();
+        List<OmsCartItemDTO> omsCartItemList = CartItemCopier.INSTANCE.copying(cartItemList);
+        return omsCartItemList;
+    }
+
     @Override
     public List<OmsCartItemDTO> listPromotion(List<Long> cartIds) {
-        List<OmsCartItemDTO> cartItemList = listCartItem();
-        if (!CollectionUtils.isEmpty(cartIds)) {
-            cartItemList = cartItemList.stream().filter(item -> cartIds.contains(item.getId())).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(cartIds)) {
+            return null;
         }
+        List<OmsCartItemDTO> cartItemList = listCartItem(cartIds);
         List<CartPromotionItemDTO> cartPromotionItemList = new ArrayList<>();
         if (!CollectionUtils.isEmpty(cartItemList)) {
 //            cartPromotionItemList.add(cartItemList);
@@ -91,8 +107,8 @@ public class OmsCartItemServiceImpl extends ServiceImpl<OmsCartItemMapper, OmsCa
         Long userId = SessionContextHolder.getId();
         OmsCartItem cartItem = this.lambdaQuery()
                 .eq(OmsCartItem::getUserId, userId).eq(
-                        OmsCartItem::getGoodsId, id
-                ).getEntity();
+                        OmsCartItem::getId, id
+                ).one();
         cartItem.setQuantity(quantity);
         cartItem.setDeleteStatus(0);
         return this.baseMapper.updateById(cartItem);
@@ -104,10 +120,12 @@ public class OmsCartItemServiceImpl extends ServiceImpl<OmsCartItemMapper, OmsCa
         for (Long id : ids) {
             OmsCartItem cartItem = this.lambdaQuery()
                     .eq(OmsCartItem::getUserId, userId).eq(
-                            OmsCartItem::getGoodsId, id
-                    ).getEntity();
-            cartItem.setDeleteStatus(1);
-            this.baseMapper.updateById(cartItem);
+                            OmsCartItem::getId, id
+                    ).one();
+            if (cartItem != null){
+                cartItem.setDeleteStatus(1);
+                this.baseMapper.updateById(cartItem);
+            }
         }
     }
 
@@ -153,4 +171,22 @@ public class OmsCartItemServiceImpl extends ServiceImpl<OmsCartItemMapper, OmsCa
             this.baseMapper.updateById(omsCartItem);
         }
     }
+
+
+    @Override
+    public MerchantCartItemDTO listCartItem(Long merchantId) {
+        Long userId = SessionContextHolder.getId();
+        OmsCartItem omsCartItem = new OmsCartItem();
+        omsCartItem.setUserId(userId);
+        List<OmsCartItem> cartItemList = this.lambdaQuery()
+                .eq(OmsCartItem::getUserId, userId)
+                .eq(OmsCartItem :: getMerchantId,merchantId)
+                .eq(OmsCartItem::getDeleteStatus,"0").list();
+        List<OmsCartItemDTO> omsCartItemList = CartItemCopier.INSTANCE.copying(cartItemList);
+        Merchant merchant = this.merchantService.getById(merchantId);
+        MerchantCartItemDTO merchantCartItemDTO = new MerchantCartItemDTO();
+        merchantCartItemDTO.setCartItems(omsCartItemList);
+        merchantCartItemDTO.setMerchantDTO(MerchantCopier.INSTANCE.copying(merchant));
+        return merchantCartItemDTO;
+    }
 }

+ 118 - 89
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OmsOrderServiceImpl.java

@@ -11,6 +11,7 @@ import java.util.Map;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.chelvc.cloud.uc.api.service.EmployeeService;
 import com.chelvc.cloud.vehicle.api.dto.CalcAmountDTO;
 import com.chelvc.cloud.vehicle.api.dto.CartPromotionItemDTO;
 import com.chelvc.cloud.vehicle.api.dto.ConfirmOrderResultDTO;
@@ -20,22 +21,26 @@ import com.chelvc.cloud.vehicle.api.dto.OmsOrderDTO;
 import com.chelvc.cloud.vehicle.api.dto.OmsOrderDetailDTO;
 import com.chelvc.cloud.vehicle.api.dto.OmsOrderExampleDTO;
 import com.chelvc.cloud.vehicle.api.dto.OmsOrderItemDTO;
-import com.chelvc.cloud.vehicle.api.dto.OmsOrderItemExampleDTO;
 import com.chelvc.cloud.vehicle.api.dto.UserCouponDTO;
 import com.chelvc.cloud.vehicle.api.param.OmsOrderModifyParam;
 import com.chelvc.cloud.vehicle.api.param.OrderPagingParam;
-import com.chelvc.cloud.vehicle.api.service.UserCouponService;
+import com.chelvc.cloud.vehicle.server.copier.MerchantCopier;
 import com.chelvc.cloud.vehicle.server.copier.OrderCopier;
-import com.chelvc.cloud.vehicle.server.dao.OmsOrderItemMapper;
 import com.chelvc.cloud.vehicle.server.dao.OmsOrderMapper;
 import com.chelvc.cloud.vehicle.server.dao.OmsOrderSettingMapper;
+import com.chelvc.cloud.vehicle.server.entity.Goods;
+import com.chelvc.cloud.vehicle.server.entity.Merchant;
 import com.chelvc.cloud.vehicle.server.entity.OmsOrder;
 import com.chelvc.cloud.vehicle.server.entity.OmsOrderItem;
 import com.chelvc.cloud.vehicle.server.entity.OmsOrderSetting;
+import com.chelvc.cloud.vehicle.server.entity.UserCoupon;
+import com.chelvc.cloud.vehicle.server.service.GoodsService;
 import com.chelvc.cloud.vehicle.server.service.IOmsOrderItemService;
 import com.chelvc.cloud.vehicle.server.service.IOmsOrderService;
+import com.chelvc.cloud.vehicle.server.service.MerchantService;
 import com.chelvc.cloud.vehicle.server.service.OmsCartItemService;
 import com.chelvc.cloud.vehicle.server.service.OmsOrderSettingService;
+import com.chelvc.cloud.vehicle.server.service.UserCouponService;
 import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.common.model.Pagination;
 import com.chelvc.framework.common.util.StringUtils;
@@ -67,6 +72,12 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
 
     private final UserCouponService userCouponService;
 
+    private final GoodsService goodsService;
+
+    private final MerchantService merchantService;
+
+    private final EmployeeService employeeService;
+
     @Override
     public ConfirmOrderResultDTO generateConfirmOrder(OmsOrderModifyParam orderParam) {
         ConfirmOrderResultDTO result = new ConfirmOrderResultDTO();
@@ -74,6 +85,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         Long userId = SessionContextHolder.getId();
         List<OmsCartItemDTO> cartItemList = omsCartItemService.listPromotion(orderParam.getCartIds());
         result.setCartItemList(cartItemList);
+        List<UserCouponDTO> userCouponList = this.userCouponService.getUserCouponList(userId);
+        result.setCouponHistoryDetailList(userCouponList);
 //        //获取用户收货地址列表
 //        List<UmsMemberReceiveAddress> memberReceiveAddressList = memberReceiveAddressService.list();
 //        result.setMemberReceiveAddressList(memberReceiveAddressList);
@@ -88,6 +101,10 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
 //        //计算总金额、活动优惠、应付金额
         CalcAmountDTO calcAmount = calcCartAmount(cartItemList);
         result.setCalcAmount(calcAmount);
+        if (!StringUtils.isEmpty(orderParam.getMerchantId())){
+            Merchant merchant = this.merchantService.getById(orderParam.getMerchantId());
+            result.setMerchantDTO(MerchantCopier.INSTANCE.copying(merchant));
+        }
         return result;
     }
 
@@ -117,6 +134,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
             orderItem.setGiftGrowth(0);
             orderItemList.add(orderItem);
         }
+
         //判断购物车中商品是否都有库存
 //        if (!hasStock(cartPromotionItemList)) {
 //            Asserts.fail("库存不足,无法下单");
@@ -129,12 +147,12 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
             }
         } else {
             //使用优惠券
-            UserCouponDTO couponHistoryDetail = getUseCoupon(cartPromotionItemList, orderParam.getCouponId());
-            if (couponHistoryDetail == null) {
+            UserCouponDTO userCouponDTO = getUseCoupon(cartPromotionItemList, orderParam.getCouponId());
+            if (userCouponDTO == null) {
                 Asserts.check(true,"该优惠券不可用");
             }
             //对下单商品的优惠券进行处理
-//            handleCouponAmount(orderItemList, couponHistoryDetail);
+            handleCouponAmount(orderItemList, userCouponDTO);
         }
         //判断是否使用积分
         if (orderParam.getUseIntegration() == null||orderParam.getUseIntegration().equals(0)) {
@@ -157,7 +175,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
 //            }
         }
         //计算order_item的实付金额
-//        handleRealAmount(orderItemList);
+        handleRealAmount(orderItemList);
         //进行库存锁定
 //        lockStock(cartPromotionItemList);
         //根据商品合计、运费、活动优惠、优惠券、积分计算应付金额
@@ -211,6 +229,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         order.setGrowth(0);
         //生成订单号
         order.setOrderSn(generateOrderSn(order));
+        order.setMerchantId(orderParam.getMerchantId());
         //设置自动收货天数
         List<OmsOrderSetting> orderSettings = orderSettingService.listOrderSetting();
         if(!CollectionUtils.isEmpty(orderSettings)){
@@ -225,7 +244,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         omsOrderItemService.add(orderItemList);
         //如使用优惠券更新优惠券使用状态
         if (orderParam.getCouponId() != null) {
-//            updateCouponStatus(orderParam.getCouponId(), userId, 1);
+            updateCouponStatus(orderParam.getCouponId(), userId, true);
         }
         //如使用积分需要扣除积分
 //        if (orderParam.getUseIntegration() != null) {
@@ -251,9 +270,9 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         order.setPayType(payType);
         this.baseMapper.updateById(order);
         //恢复所有下单商品的锁定库存,扣减真实库存
-        List<OmsOrderItemDTO> orderDetailList = this.baseMapper.getDetail(orderId);
-        int count = this.baseMapper.updateSkuStock(orderDetailList);
-        return count;
+//        List<OmsOrderItemDTO> orderDetailList = this.baseMapper.getDetail(orderId);
+//        int count = this.baseMapper.updateSkuStock(orderDetailList);
+        return 1;
     }
 
     @Override
@@ -279,7 +298,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
             //解除订单商品库存锁定
 //            omsOrderMapper.releaseSkuStockLock(timeOutOrder.getOrderItemList());
             //修改优惠券使用状态
-//            updateCouponStatus(timeOutOrder.getCouponId(), timeOutOrder.getUserId(), 0);
+            updateCouponStatus(timeOutOrder.getCouponId(), timeOutOrder.getUserId(), false);
             //返还使用积分
 //            if (timeOutOrder.getUseIntegration() != null) {
 //                UmsMember member = memberService.getById(timeOutOrder.getMemberId());
@@ -307,11 +326,11 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
             orderItem.setOrderId(orderId);
             List<OmsOrderItem> orderItemList = this.omsOrderItemService.selectByExample(orderItem);
             //解除订单商品库存锁定
-            if (!CollectionUtils.isEmpty(orderItemList)) {
-                this.baseMapper.releaseSkuStockLock(orderItemList);
-            }
+//            if (!CollectionUtils.isEmpty(orderItemList)) {
+//                this.baseMapper.releaseSkuStockLock(orderItemList);
+//            }
             //修改优惠券使用状态
-//            updateCouponStatus(cancelOrder.getCouponId(), cancelOrder.getUserId(), 0);
+            updateCouponStatus(cancelOrder.getCouponId(), cancelOrder.getUserId(), false);
             //返还使用积分
 //            if (cancelOrder.getUseIntegration() != null) {
 //                UmsMember member = memberService.getById(cancelOrder.getMemberId());
@@ -346,6 +365,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
     }
     @Override
     public Pagination<OmsOrderDTO> getOrderPaging(OrderPagingParam param){
+        Long userId = SessionContextHolder.getId();
         Page<OmsOrder> page = this.lambdaQuery()
                 .eq(OmsOrder :: getStatus,param.getStatus())
                 .orderByDesc(OmsOrder :: getCreateTime)
@@ -355,11 +375,25 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
 
     @Override
     public Pagination<OmsOrderDTO> getOmsOrderPaging(OrderPagingParam param){
-        Page<OmsOrder> page = this.lambdaQuery()
-                .eq(StringUtils.nonEmpty(param.getStatus()),OmsOrder :: getStatus,param.getStatus())
-                .orderByDesc(OmsOrder :: getCreateTime)
-                .page(PagingUtils.convert(param.getPaging()));
-        return PagingUtils.convert(page, OrderCopier.INSTANCE::copying);
+        Long userId = SessionContextHolder.getId();
+        if (this.employeeService.isAdmin(userId)){
+            Page<OmsOrder> page = this.lambdaQuery()
+                    .eq(StringUtils.nonEmpty(param.getStatus()),OmsOrder :: getStatus,param.getStatus())
+                    .orderByDesc(OmsOrder :: getCreateTime)
+                    .page(PagingUtils.convert(param.getPaging()));
+            return PagingUtils.convert(page, OrderCopier.INSTANCE::copying);
+        }else{
+            List<Long> merchants = this.merchantService.getMerchantIdsByUserId(userId);
+            if (!StringUtils.nonEmpty(merchants)){
+                return null;
+            }
+            Page<OmsOrder> page = this.lambdaQuery()
+                    .eq(StringUtils.nonEmpty(param.getStatus()),OmsOrder :: getStatus,param.getStatus())
+                    .in(OmsOrder :: getMerchantId,merchants)
+                    .orderByDesc(OmsOrder :: getCreateTime)
+                    .page(PagingUtils.convert(param.getPaging()));
+            return PagingUtils.convert(page, OrderCopier.INSTANCE::copying);
+        }
     }
 
     @Override
@@ -394,11 +428,11 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
      */
     private String generateOrderSn(OmsOrder order) {
         StringBuilder sb = new StringBuilder();
-        String date = new SimpleDateFormat("yyyyMMdd").format(new Date());
+        String date = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
 //        String key = REDIS_DATABASE+":"+ REDIS_KEY_ORDER_ID + date;
 //        Long increment = redisService.incr(key, 1);
         sb.append(date);
-        sb.append(String.format("%02d", order.getSourceType()));
+//        sb.append(String.format("%02d", order.getSourceType()));
         sb.append(String.format("%02d", order.getPayType()));
 //        String incrementStr = increment.toString();
 //        if (incrementStr.length() <= 6) {
@@ -442,35 +476,31 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         return sum;
     }
 
-//    /**
-//     * 将优惠券信息更改为指定状态
-//     *
-//     * @param couponId  优惠券id
-//     * @param memberId  会员id
-//     * @param useStatus 0->未使用;1->已使用
-//     */
-//    private void updateCouponStatus(Long couponId, Long memberId, Integer useStatus) {
-//        if (couponId == null) return;
-//        //查询第一张优惠券
-//        UserCouponDTO example = new omsCartItemService();
-//        example.createCriteria().andMemberIdEqualTo(memberId)
-//                .andCouponIdEqualTo(couponId).andUseStatusEqualTo(useStatus == 0 ? 1 : 0);
-//        List<SmsCouponHistory> couponHistoryList = couponHistoryMapper.selectByExample(example);
-//        if (!CollectionUtils.isEmpty(couponHistoryList)) {
-//            SmsCouponHistory couponHistory = couponHistoryList.get(0);
-//            couponHistory.setUseTime(new Date());
-//            couponHistory.setUseStatus(useStatus);
-//            couponHistoryMapper.updateByPrimaryKeySelective(couponHistory);
-//        }
-//    }
+    /**
+     * 将优惠券信息更改为指定状态
+     *
+     * @param couponId  优惠券id
+     * @param userId  会员id
+     * @param useStatus 0->未使用;1->已使用
+     */
+    private void updateCouponStatus(Long couponId, Long userId, Boolean useStatus) {
+        if (couponId == null) return;
+        //查询第一张优惠券
+        UserCoupon example = this.userCouponService.getUserCouponInfo(couponId,userId);
+        if (null == example){
+            return;
+        }
+        example.setUsed(useStatus);
+        this.userCouponService.updateUserCouponUserd(example,couponId,userId);
+    }
 
-    private void handleRealAmount(List<OmsOrderItemDTO> orderItemList) {
-        for (OmsOrderItemDTO orderItem : orderItemList) {
+    private void handleRealAmount(List<OmsOrderItem> orderItemList) {
+        for (OmsOrderItem orderItem : orderItemList) {
             //原价-促销优惠-优惠券抵扣-积分抵扣
             BigDecimal realAmount = orderItem.getGoodsPrice()
-                    .subtract(orderItem.getPromotionAmount())
-                    .subtract(orderItem.getCouponAmount())
-                    .subtract(orderItem.getIntegrationAmount());
+//                    .subtract(orderItem.getPromotionAmount())
+                    .subtract(orderItem.getCouponAmount());
+//                    .subtract(orderItem.getIntegrationAmount());
             orderItem.setRealAmount(realAmount);
         }
     }
@@ -581,23 +611,22 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
      * 对优惠券优惠进行处理
      *
      * @param orderItemList       order_item列表
-     * @param couponHistoryDetail 可用优惠券详情
+     * @param userCouponDTO 可用优惠券详情
      */
-//    private void handleCouponAmount(List<OmsOrderItemDTO> orderItemList, UserCouponDTO couponHistoryDetail) {
-//        CouponDTO coupon = couponHistoryDetail.getCoupon();
-//        if (coupon.getUseType().equals(0)) {
-//            //全场通用
-//            calcPerCouponAmount(orderItemList, coupon);
-//        } else if (coupon.getUseType().equals(1)) {
-//            //指定分类
-//            List<OmsOrderItemDTO> couponOrderItemList = getCouponOrderItemByRelation(couponHistoryDetail, orderItemList, 0);
-//            calcPerCouponAmount(couponOrderItemList, coupon);
-//        } else if (coupon.getUseType().equals(2)) {
-//            //指定商品
-//            List<OmsOrderItemDTO> couponOrderItemList = getCouponOrderItemByRelation(couponHistoryDetail, orderItemList, 1);
-//            calcPerCouponAmount(couponOrderItemList, coupon);
-//        }
-//    }
+    private void handleCouponAmount(List<OmsOrderItem> orderItemList, UserCouponDTO userCouponDTO) {
+        if (userCouponDTO.getType().equals(0)) {
+            //全场通用
+            calcPerCouponAmount(orderItemList, userCouponDTO.getCouponDTO());
+        } else if (userCouponDTO.getType().equals(1)) {
+            //指定分类
+            List<OmsOrderItem> couponOrderItemList = getCouponOrderItemByRelation(userCouponDTO, orderItemList, 0);
+            calcPerCouponAmount(couponOrderItemList, userCouponDTO.getCouponDTO());
+        } else if (userCouponDTO.getType().equals(2)) {
+            //指定商品
+            List<OmsOrderItem> couponOrderItemList = getCouponOrderItemByRelation(userCouponDTO, orderItemList, 1);
+            calcPerCouponAmount(couponOrderItemList, userCouponDTO.getCouponDTO());
+        }
+    }
 
     /**
      * 对每个下单商品进行优惠券金额分摊的计算
@@ -620,35 +649,35 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
      * @param orderItemList       下单商品
      * @param type                使用关系类型:0->相关分类;1->指定商品
      */
-//    private List<OmsOrderItemDTO> getCouponOrderItemByRelation(UserCouponDTO couponHistoryDetail, List<OmsOrderItemDTO> orderItemList, int type) {
-//        List<OmsOrderItemDTO> result = new ArrayList<>();
-//        if (type == 0) {
-//            List<Long> categoryIdList = new ArrayList<>();
+    private List<OmsOrderItem> getCouponOrderItemByRelation(UserCouponDTO couponHistoryDetail, List<OmsOrderItem> orderItemList, int type) {
+        List<OmsOrderItem> result = new ArrayList<>();
+        if (type == 0) {
+            List<Long> categoryIdList = new ArrayList<>();
 //            for (SmsCouponProductCategoryRelation productCategoryRelation : couponHistoryDetail.getCategoryRelationList()) {
 //                categoryIdList.add(productCategoryRelation.getProductCategoryId());
 //            }
-//            for (OmsOrderItemDTO orderItem : orderItemList) {
-//                if (categoryIdList.contains(orderItem.getProductCategoryId())) {
-//                    result.add(orderItem);
-//                } else {
-//                    orderItem.setCouponAmount(new BigDecimal(0));
-//                }
-//            }
-//        } else if (type == 1) {
-//            List<Long> productIdList = new ArrayList<>();
+            for (OmsOrderItem orderItem : orderItemList) {
+                if (categoryIdList.contains(orderItem.getGoodsCategoryId())) {
+                    result.add(orderItem);
+                } else {
+                    orderItem.setCouponAmount(new BigDecimal(0));
+                }
+            }
+        } else if (type == 1) {
+            List<Long> productIdList = new ArrayList<>();
 //            for (SmsCouponProductRelation productRelation : couponHistoryDetail.getProductRelationList()) {
-//                productIdList.add(productRelation.getProductId());
-//            }
-//            for (OmsOrderItemDTO orderItem : orderItemList) {
-//                if (productIdList.contains(orderItem.getProductId())) {
-//                    result.add(orderItem);
-//                } else {
-//                    orderItem.setCouponAmount(new BigDecimal(0));
-//                }
+//                productIdList.add(productRelation.getGoodsId());
 //            }
-//        }
-//        return result;
-//    }
+            for (OmsOrderItem orderItem : orderItemList) {
+                if (productIdList.contains(orderItem.getGoodsId())) {
+                    result.add(orderItem);
+                } else {
+                    orderItem.setCouponAmount(new BigDecimal(0));
+                }
+            }
+        }
+        return result;
+    }
 
     /**
      * 获取该用户可以使用的优惠券

+ 28 - 5
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/ReservationServiceImpl.java

@@ -2,6 +2,7 @@ package com.chelvc.cloud.vehicle.server.service.impl;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.chelvc.cloud.uc.api.service.EmployeeService;
 import com.chelvc.cloud.vehicle.api.constant.ReserveStatus;
 import com.chelvc.cloud.vehicle.api.dto.ReservationDTO;
 import com.chelvc.cloud.vehicle.api.param.ReservationModifyParam;
@@ -10,13 +11,16 @@ import com.chelvc.cloud.vehicle.api.param.ReservationQueryParam;
 import com.chelvc.cloud.vehicle.server.copier.ReservationCopier;
 import com.chelvc.cloud.vehicle.server.dao.ReservationMapper;
 import com.chelvc.cloud.vehicle.server.entity.Reservation;
+import com.chelvc.cloud.vehicle.server.service.MerchantService;
 import com.chelvc.cloud.vehicle.server.service.ReservationService;
 import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.common.model.Pagination;
 import com.chelvc.framework.common.util.StringUtils;
 import com.chelvc.framework.database.util.PagingUtils;
 import lombok.NonNull;
+import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 
 import java.util.Collections;
@@ -29,9 +33,14 @@ import java.util.stream.Collectors;
  * @author Woody
  * @date 2023/7/17
  */
+@RequiredArgsConstructor(onConstructor = @__(@Autowired))
 @DubboService(interfaceClass = com.chelvc.cloud.vehicle.api.service.ReservationService.class)
 public class ReservationServiceImpl extends ServiceImpl<ReservationMapper, Reservation> implements ReservationService,
         com.chelvc.cloud.vehicle.api.service.ReservationService {
+
+    private final MerchantService merchantService;
+
+    private final EmployeeService employeeService;
     @Override
     public void addReservation(@NonNull Long merchantId, @NonNull ReservationModifyParam param) {
         Reservation reservation = ReservationCopier.INSTANCE.copying(param);
@@ -64,10 +73,24 @@ public class ReservationServiceImpl extends ServiceImpl<ReservationMapper, Reser
     }
     @Override
     public Pagination<ReservationDTO> getReservationPaging(ReservationPagingParam param){
-        Page<Reservation> page = this.lambdaQuery()
-                .eq(StringUtils.nonEmpty(param.getStatus()),Reservation :: getStatus,param.getStatus())
-                .orderByDesc(Reservation :: getAppointTime)
-                .page(PagingUtils.convert(param.getPaging()));
-        return PagingUtils.convert(page, ReservationCopier.INSTANCE::copying);
+        Long userId = SessionContextHolder.getId();
+        if (this.employeeService.isAdmin(userId)){
+            Page<Reservation> page = this.lambdaQuery()
+                    .eq(StringUtils.nonEmpty(param.getStatus()),Reservation :: getStatus,param.getStatus())
+                    .orderByDesc(Reservation :: getAppointTime)
+                    .page(PagingUtils.convert(param.getPaging()));
+            return PagingUtils.convert(page, ReservationCopier.INSTANCE::copying);
+        }else{
+            List<Long> merchants = this.merchantService.getMerchantIdsByUserId(userId);
+            if (!StringUtils.nonEmpty(merchants)){
+                return null;
+            }
+            Page<Reservation> page = this.lambdaQuery()
+                    .eq(StringUtils.nonEmpty(param.getStatus()),Reservation :: getStatus,param.getStatus())
+                    .in(Reservation :: getMerchantId,merchants)
+                    .orderByDesc(Reservation :: getAppointTime)
+                    .page(PagingUtils.convert(param.getPaging()));
+            return PagingUtils.convert(page, ReservationCopier.INSTANCE::copying);
+        }
     }
 }

+ 25 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/UserCouponServiceImpl.java

@@ -202,4 +202,29 @@ public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCou
     private UserCouponDTO convert(UserCoupon userCoupon) {
         return UserCouponCopier.INSTANCE.copying(userCoupon);
     }
+
+
+    @Override
+    public List<UserCouponDTO> getUserCouponList(Long userId) {
+        LambdaQueryWrapper<UserCoupon> lwq = Wrappers.lambdaQuery();
+        lwq.eq(UserCoupon::getUserId, userId);
+        lwq.eq(UserCoupon::getFlag, 0);
+        return UserCouponCopier.INSTANCE.copying(baseMapper.selectList(lwq));
+    }
+
+    @Override
+    public UserCoupon getUserCouponInfo(Long couponId,Long userId){
+        LambdaQueryWrapper<UserCoupon> lwq = Wrappers.lambdaQuery();
+        lwq.eq(UserCoupon::getUserId, userId);
+        lwq.eq(UserCoupon::getCouponId, couponId);
+        return this.baseMapper.selectOne(lwq);
+    }
+
+    @Override
+    public void updateUserCouponUserd(UserCoupon userCoupon,Long couponId,Long userId){
+        LambdaQueryWrapper<UserCoupon> lwq = Wrappers.lambdaQuery();
+        lwq.eq(UserCoupon::getUserId, userId);
+        lwq.eq(UserCoupon::getCouponId, couponId);
+        this.baseMapper.update(userCoupon,lwq);
+    }
 }

+ 5 - 0
vehicle-server/src/main/resources/mapper/FavoriteMapper.xml

@@ -38,4 +38,9 @@
         order by fe.create_time desc
         limit #{param.size}
     </select>
+
+
+    <delete id="deleteFavorite">
+        delete from favorite where user_id = #{userId} and content_id = #{id}
+    </delete>
 </mapper>

+ 1 - 1
vehicle-server/src/main/resources/mapper/GoodsMapper.xml

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.chelvc.cloud.vehicle.server.dao.GoodsMapper">
     <select id="listMerchantSimpleGoods" resultType="com.chelvc.cloud.vehicle.api.dto.GoodsDTO">
-        select id, name, logo, original_price, special_price, score, sale
+        select id, name, logo, original_price, special_price, score, sale,category_id categoryId
         from `goods`
         <where>
             merchant_id = #{merchantId}

+ 11 - 0
vehicle-server/src/main/resources/mapper/MerchantMapper.xml

@@ -79,4 +79,15 @@
         from `merchant` mt
         where mt.id = #{id} and mt.region = #{param.region}
     </select>
+
+    <select id="merchantFavorite" resultType="java.lang.Integer">
+        SELECT
+            count(*)
+        FROM
+            favorite
+        WHERE
+            type = 'MERCHANT'
+          AND content_id = #{merchantId}
+          AND user_id = #{userId}
+    </select>
 </mapper>