Bladeren bron

购物车商品业务优化

liude 1 jaar geleden
bovenliggende
commit
f34ac41b2e

+ 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;
 }

+ 4 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/OmsCartItemModifyParam.java

@@ -88,5 +88,9 @@ public class OmsCartItemModifyParam implements Serializable
      * 商家id
      */
     private Long merchantId;
+    /**
+     * 商品原价
+     */
+    private Double originalPrice;
 
 }

+ 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);
 }

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

@@ -97,4 +97,9 @@ public class OmsCartItem extends ModifyEntity<Long>
      */
     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;
 }

+ 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);
 }

+ 39 - 6
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantServiceImpl.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.CategoryType;
 import com.chelvc.cloud.vehicle.api.constant.MerchantStatus;
 import com.chelvc.cloud.vehicle.api.dto.CategoryDTO;
@@ -9,12 +10,14 @@ 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;
@@ -43,6 +46,8 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
 
     private final CategoryService categoryService;
 
+    private final EmployeeService employeeService;
+
     @Override
     public List<MerchantDTO> listNearbyMerchants(@NonNull LocationQueryParam param, int size) {
         return this.baseMapper.listNearbyMerchants(param, size);
@@ -85,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(
@@ -131,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
@@ -154,4 +177,14 @@ 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());
+    }
 }

+ 28 - 10
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;
@@ -75,6 +76,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
 
     private final MerchantService merchantService;
 
+    private final EmployeeService employeeService;
+
     @Override
     public ConfirmOrderResultDTO generateConfirmOrder(OmsOrderModifyParam orderParam) {
         ConfirmOrderResultDTO result = new ConfirmOrderResultDTO();
@@ -226,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)){
@@ -370,11 +374,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
@@ -409,11 +427,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) {
@@ -479,9 +497,9 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         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);
         }
     }

+ 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);
+        }
     }
 }

+ 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>