Kaynağa Gözat

合并代码

woody 1 yıl önce
ebeveyn
işleme
0069a3f527
49 değiştirilmiş dosya ile 726 ekleme ve 267 silme
  1. 45 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/EarningsDTO.java
  2. 9 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/MerchantDTO.java
  3. 6 4
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/OmsOrderOperateHistoryDTO.java
  4. 9 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/ReservationDTO.java
  5. 0 1
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/AddDynamicEvaluateRecordParam.java
  6. 31 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/CurrencyRecordPagingParam.java
  7. 27 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/LocationQueryParam.java
  8. 9 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/MerchantModifyParam.java
  9. 1 1
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/QueryMerchantBalanceParam.java
  10. 11 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/ReservationModifyParam.java
  11. 7 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/CategoryService.java
  12. 16 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/CurrencyRecordService.java
  13. 7 0
      vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/ReservationService.java
  14. 0 3
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/copier/ReservationCopier.java
  15. 7 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/AssetMapper.java
  16. 9 1
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/CurrencyRecordMapper.java
  17. 3 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/OmsOrderOperateHistoryMapper.java
  18. 6 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/ReservationMapper.java
  19. 8 5
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/AssessScore.java
  20. 1 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/Asset.java
  21. 11 4
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/CurrencyRecord.java
  22. 2 4
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/DynamicEvaluateRecord.java
  23. 3 3
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/EnquireReply.java
  24. 9 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/Merchant.java
  25. 19 12
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/OmsOrderOperateHistory.java
  26. 11 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/Reservation.java
  27. 4 1
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/AssetService.java
  28. 1 1
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/BalanceDetailService.java
  29. 17 0
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/CurrencyRecordService.java
  30. 12 2
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/IOmsOrderOperateHistoryService.java
  31. 36 12
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/AssetServiceImpl.java
  32. 2 2
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/BalanceDetailServiceImpl.java
  33. 56 29
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/CategoryServiceImpl.java
  34. 56 15
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/CurrencyRecordServiceImpl.java
  35. 6 7
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/DynamicCommentServiceImpl.java
  36. 33 32
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/DynamicContentServiceImpl.java
  37. 24 25
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/DynamicEvaluateRecordServiceImpl.java
  38. 7 5
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantServiceImpl.java
  39. 56 23
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OderHandleServiceImpl.java
  40. 16 5
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OmsOrderOperateHistoryServiceImpl.java
  41. 31 12
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OmsOrderServiceImpl.java
  42. 5 6
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/ProfitRatioConfigServiceImpl.java
  43. 8 4
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/ReservationServiceImpl.java
  44. 46 44
      vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/UserInviteServiceImpl.java
  45. 19 0
      vehicle-server/src/main/resources/mapper/CurrencyRecordMapper.xml
  46. 10 2
      vehicle-server/src/main/resources/mapper/MerchantMapper.xml
  47. 6 0
      vehicle-server/src/main/resources/mapper/OmsOrderPayHistoryMapper.xml
  48. 1 1
      vehicle-server/src/main/resources/mapper/PlatformProfitRatioMapper.xml
  49. 7 1
      vehicle-server/src/main/resources/mapper/ReservationMapper.xml

+ 45 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/EarningsDTO.java

@@ -0,0 +1,45 @@
+package com.chelvc.cloud.vehicle.api.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 收益返回参数
+ */
+@Data
+@SuperBuilder
+@AllArgsConstructor
+public class EarningsDTO implements Serializable {
+
+    private static final long serialVersionUID = 2280477793188034996L;
+
+    /**
+     * 总收益
+     */
+    private BigDecimal totalAmount;
+
+    /**
+     * 周收益
+     */
+    private BigDecimal weekAmount;
+
+    /**
+     * 月收益
+     */
+    private BigDecimal monthAmount;
+
+    /**
+     * 可提现金额
+     */
+    private BigDecimal withdrawAmount;
+
+    public EarningsDTO(){
+        totalAmount = BigDecimal.ZERO;
+        withdrawAmount = BigDecimal.ZERO;
+        monthAmount  = BigDecimal.ZERO;
+    }
+}

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

@@ -136,4 +136,13 @@ public class MerchantDTO implements Serializable {
      */
     private String businessStatus;
 
+    /**
+     * 商家主营业务
+     */
+    private List<Long> mainBusiness;
+    /**
+     * 商家副营业务
+     */
+    private List<Long> ancillaryBusiness;
+
 }

+ 6 - 4
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/OmsOrderOperateHistoryDTO.java

@@ -5,7 +5,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.SuperBuilder;
 
-import java.util.Date;
+import java.time.LocalDateTime;
 
 @Data
 @SuperBuilder
@@ -19,14 +19,16 @@ public class OmsOrderOperateHistoryDTO {
 
     private Long userId;
 
-    private String operateMan;
+    private Long operateMan;
 
     /** 订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单 */
-    private Long orderStatus;
+    private Integer orderStatus;
 
     private Integer flag;
 
     private String note;
 
-    private Date createTime;
+    private LocalDateTime createTime;
+
+    private LocalDateTime updateTime;
 }

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

@@ -54,6 +54,15 @@ public class ReservationDTO implements Serializable {
      */
     private ReserveStatus status;
 
+    /**
+     * 商品id
+     */
+    private Long goodsId;
+    /**
+     * 商品名称
+     */
+    private String goodsName;
+
     /**
      * 商家信息
      */

+ 0 - 1
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/AddDynamicEvaluateRecordParam.java

@@ -42,6 +42,5 @@ public class AddDynamicEvaluateRecordParam implements Serializable {
     @NotNull(message = "内容标识不能为空")
     private Long contentId;
 
-    @NotNull(message = "动态/回复用户标识")
     private Long targetUserId;
 }

+ 31 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/CurrencyRecordPagingParam.java

@@ -0,0 +1,31 @@
+package com.chelvc.cloud.vehicle.api.param;
+import com.chelvc.framework.common.model.Paging;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 收益流水记录表数据模型
+ *
+ * @author liude
+ * @date 2024/03/30
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class CurrencyRecordPagingParam implements Serializable {
+    /**
+     * 分页信息
+     */
+    @NotNull(message = "分页不能为空")
+    private Paging paging;
+
+
+}

+ 27 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/LocationQueryParam.java

@@ -40,4 +40,31 @@ public class LocationQueryParam implements Serializable {
      */
     @NotNull(message = "纬度不能为空")
     private Double latitude;
+
+    /**
+     * 页数大小 默认15
+     */
+    private PageSize pageSize = new PageSize();
+
+    @Data
+    @SuperBuilder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class PageSize implements Serializable{
+
+        /**
+         * 推荐分类数量
+         */
+        private Integer catPageSize = 15;
+
+        /**
+         * 附近商家条数
+         */
+        private Integer nearPageSize = 15;
+
+        /**
+         * 推荐商家数量
+         */
+        private Integer recPageSize = 15;
+    }
 }

+ 9 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/MerchantModifyParam.java

@@ -116,4 +116,13 @@ public class MerchantModifyParam implements Serializable {
      */
     @NotNull(message = "是否推荐不能为空")
     private Boolean recommend;
+
+    /**
+     * 商家主营业务
+     */
+    private List<Long> mainBusiness;
+    /**
+     * 商家副营业务
+     */
+    private List<Long> ancillaryBusiness;
 }

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

@@ -28,7 +28,7 @@ public class QueryMerchantBalanceParam implements Serializable {
     /**
      * 流水类型:0-收入;1-支出
      */
-    private Integer type;
+    private Integer flowType;
 
     /**
      * 操作类型:1-订单收益;2-提现

+ 11 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/ReservationModifyParam.java

@@ -34,4 +34,15 @@ public class ReservationModifyParam implements Serializable {
      */
     @NotNull(message = "约定时间不能为空")
     private Date appointTime;
+    /**
+     * 商品id
+     */
+    @NotNull(message = "商家ID不能为空")
+    private Long goodsId;
+
+    /**
+     * 商品名称
+     */
+    @Size(max = 255, message = "商品名称长度不能大于255")
+    private String goodsName;
 }

+ 7 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/CategoryService.java

@@ -48,6 +48,13 @@ public interface CategoryService {
      */
     List<CategoryDTO> listActiveCategories(CategoryListParam param);
 
+    /**
+     * 获取有效分类信息
+     *
+     * @return 分类信息列表
+     */
+    List<CategoryDTO> listCategory(CategoryListParam param);
+
     /**
      * 获取推荐分类信息
      *

+ 16 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/CurrencyRecordService.java

@@ -1,5 +1,10 @@
 package com.chelvc.cloud.vehicle.api.service;
 
+import com.chelvc.cloud.vehicle.api.dto.CurrencyRecordDTO;
+import com.chelvc.cloud.vehicle.api.dto.EarningsDTO;
+
+import java.util.List;
+
 /**
  * 收益流水记录表数据模型
  *
@@ -7,4 +12,15 @@ package com.chelvc.cloud.vehicle.api.service;
  * @date 2024/03/15
  */
 public interface CurrencyRecordService {
+    /**
+     * 收益流水记录
+     * @return 收益流水记录列表
+     */
+    List<CurrencyRecordDTO> listCurrencyRecord(Integer type);
+
+    /**
+     * 获取用户得总收益、本周收益、本月收益、可提现金额
+     * @return
+     */
+    EarningsDTO getCurrencyRecord(Integer type);
 }

+ 7 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/ReservationService.java

@@ -52,4 +52,11 @@ public interface ReservationService {
      * @return 用户预约列表
      */
     List<ReservationDTO> listMerchantReservations(ReservationQueryParam param);
+
+    /**
+     * 更新预约单的状态
+     * @param id 预约单ID
+     * @param status 预约单的状态
+     */
+    void updateReservationsStatus(Long id,String status) ;
 }

+ 0 - 3
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/copier/ReservationCopier.java

@@ -1,9 +1,6 @@
 package com.chelvc.cloud.vehicle.server.copier;
-
-import com.chelvc.cloud.vehicle.api.dto.CommissionConfigDTO;
 import com.chelvc.cloud.vehicle.api.dto.ReservationDTO;
 import com.chelvc.cloud.vehicle.api.param.ReservationModifyParam;
-import com.chelvc.cloud.vehicle.server.entity.CommissionConfig;
 import com.chelvc.cloud.vehicle.server.entity.Reservation;
 import org.mapstruct.Builder;
 import org.mapstruct.Mapper;

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

@@ -3,7 +3,14 @@ package com.chelvc.cloud.vehicle.server.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.chelvc.cloud.vehicle.server.entity.Asset;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Update;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
 
 @Mapper
 public interface AssetMapper extends BaseMapper<Asset> {
+
+    @Update("update asset set frozen = frozen - #{payAmount}, total = total + #{platformRealityAmount}, update_time = #{now} where user_id = 1 and type = 0")
+    void updatePlatformAsset(BigDecimal platformRealityAmount, BigDecimal payAmount, LocalDateTime now);
 }

+ 9 - 1
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/CurrencyRecordMapper.java

@@ -1,9 +1,10 @@
 package com.chelvc.cloud.vehicle.server.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.chelvc.cloud.vehicle.server.entity.Article;
+import com.chelvc.cloud.vehicle.api.dto.EarningsDTO;
 import com.chelvc.cloud.vehicle.server.entity.CurrencyRecord;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 收益流水记录表数据模型
@@ -13,4 +14,11 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface CurrencyRecordMapper extends BaseMapper<CurrencyRecord> {
+
+    /**
+     * 获取7天收益、总收益、一个月得收益
+     * @param userId
+     * @return
+     */
+    EarningsDTO getCurrencyRecord(@Param("userId")Long userId, @Param("type")Integer type);
 }

+ 3 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/OmsOrderOperateHistoryMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.chelvc.cloud.vehicle.api.dto.OmsOrderOperateHistoryDTO;
 import com.chelvc.cloud.vehicle.server.entity.OmsOrderOperateHistory;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -78,4 +79,6 @@ public interface OmsOrderOperateHistoryMapper extends BaseMapper<OmsOrderOperate
      * @param userId 用户id
      */
     public void changeUserOrderInformFlag(Long userId);
+
+    int batchInsertOmsOrderOperateHistory(@Param("list") List<OmsOrderOperateHistory> list);
 }

+ 6 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/ReservationMapper.java

@@ -24,5 +24,11 @@ public interface ReservationMapper extends BaseMapper<Reservation> {
      * @return 用户预约列表
      */
     List<Reservation> listUserReservations(@Param("userId") Long userId, @Param("param") ReservationQueryParam param);
+    /**
+     * 更新预约单的状态
+     * @param id 预约单ID
+     * @param status 预约单的状态
+     */
+    void updateReservationsStatus(@Param("id")Long id,@Param("status")String status);
 
 }

+ 8 - 5
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/AssessScore.java

@@ -1,15 +1,18 @@
 package com.chelvc.cloud.vehicle.server.entity;
 
+import java.math.BigDecimal;
+import java.util.Date;
+
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.chelvc.framework.database.entity.Entity;
-import lombok.*;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
 import lombok.experimental.SuperBuilder;
 
-import java.math.BigDecimal;
-import java.util.Date;
-
 /**
  * @author valley
  * @date 2024/02/22 21:35
@@ -20,7 +23,7 @@ import java.util.Date;
 @AllArgsConstructor
 @ToString(callSuper = true)
 @TableName(autoResultMap = true)
-public class AssessScore  implements Entity<Long> {
+public class AssessScore implements Entity<Long> {
     /**
      * 主键
      */

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

@@ -21,6 +21,7 @@ import java.time.LocalDateTime;
 @TableName(autoResultMap = true)
 public class Asset implements Entity<Long> {
 
+    private static final long serialVersionUID = -2573290665569937880L;
     /**
      * 主键
      */

+ 11 - 4
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/CurrencyRecord.java

@@ -9,7 +9,7 @@ import lombok.NoArgsConstructor;
 import lombok.experimental.SuperBuilder;
 
 import java.math.BigDecimal;
-import java.util.Date;
+import java.time.LocalDateTime;
 
 /**
  * 收益流水记录表数据模型
@@ -22,6 +22,8 @@ import java.util.Date;
 @NoArgsConstructor
 @AllArgsConstructor
 public class CurrencyRecord implements Entity<Long> {
+
+    private static final long serialVersionUID = 4394545660827792531L;
     /**
      * 主键
      */
@@ -34,10 +36,15 @@ public class CurrencyRecord implements Entity<Long> {
     private Long userId;
 
     /**
-     * 账单类型:0-收入;1-支出
+     * 类型:0-平台;1-用户;2-商户
      */
     private Integer type;
 
+    /**
+     * 账单类型:0-收入;1-支出
+     */
+    private Integer currencyType;
+
     /**
      * 订单标识
      */
@@ -46,7 +53,7 @@ public class CurrencyRecord implements Entity<Long> {
     /**
      * 来源用户
      */
-    private Long sourceUserId;
+    private Long sourceId;
 
     /**
      * 类型:-1-提现;0-商品出售;1-用户分佣;2-商户分佣;3-平台分佣;4-商家所得
@@ -71,7 +78,7 @@ public class CurrencyRecord implements Entity<Long> {
     /**
      * 创建时间
      */
-    private Date createTime;
+    private LocalDateTime createTime;
 
 
 }

+ 2 - 4
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/DynamicEvaluateRecord.java

@@ -2,9 +2,7 @@ package com.chelvc.cloud.vehicle.server.entity;
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.chelvc.framework.database.entity.Entity;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.*;
 import lombok.experimental.SuperBuilder;
 
 import java.util.Date;
@@ -19,6 +17,7 @@ import java.util.Date;
 @SuperBuilder
 @NoArgsConstructor
 @AllArgsConstructor
+@ToString(callSuper = true)
 @TableName(autoResultMap = true)
 public class DynamicEvaluateRecord implements Entity<Long> {
 
@@ -56,6 +55,5 @@ public class DynamicEvaluateRecord implements Entity<Long> {
     /**
      * 创建时间
      */
-    @TableField(fill = FieldFill.INSERT)
     private Date createTime;
 }

+ 3 - 3
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/EnquireReply.java

@@ -1,8 +1,5 @@
 package com.chelvc.cloud.vehicle.server.entity;
 
-import java.util.Date;
-import java.util.List;
-
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -15,6 +12,9 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.SuperBuilder;
 
+import java.util.Date;
+import java.util.List;
+
 /**
  * 询价回复数据模型
  *

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

@@ -143,4 +143,13 @@ public class Merchant extends ModifyEntity<Long> {
      * 营业状态 0-营业中 1-休息中
      */
     private String businessStatus;
+
+    /**
+     * 商家主营业务
+     */
+//    private List<Long> mainBusiness;
+//    /**
+//     * 商家副营业务
+//     */
+//    private List<Long> ancillaryBusiness;
 }

+ 19 - 12
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/OmsOrderOperateHistory.java

@@ -3,14 +3,12 @@ package com.chelvc.cloud.vehicle.server.entity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.chelvc.framework.database.entity.ModifyEntity;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
-import lombok.ToString;
+import lombok.*;
 import lombok.experimental.SuperBuilder;
 
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
 /**
  * 订单操作历史记录对象 oms_order_operate_history
  * 
@@ -22,14 +20,13 @@ import lombok.experimental.SuperBuilder;
 @NoArgsConstructor
 @AllArgsConstructor
 @ToString(callSuper = true)
-@EqualsAndHashCode(callSuper = true)
 @TableName(autoResultMap = true)
-public class OmsOrderOperateHistory extends ModifyEntity<Long>
+public class OmsOrderOperateHistory implements Serializable
 {
-    private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1723358231804121398L;
 
     /** $column.columnComment */
-    @TableId(type = IdType.ASSIGN_ID)
+    @TableId(type = IdType.AUTO)
     private Long id;
 
     /** 订单id */
@@ -41,10 +38,10 @@ public class OmsOrderOperateHistory extends ModifyEntity<Long>
     private Long userId;
 
     /** 操作人:用户;系统;后台管理员 */
-    private String operateMan;
+    private Long operateMan;
 
     /** 订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单 */
-    private Long orderStatus;
+    private Integer orderStatus;
 
     /**
      * 订单消息标识:0-新消息;1-已查看
@@ -53,4 +50,14 @@ public class OmsOrderOperateHistory extends ModifyEntity<Long>
 
     /** 备注 */
     private String note;
+
+    /**
+     * 操作时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
 }

+ 11 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/entity/Reservation.java

@@ -15,6 +15,8 @@ import lombok.NoArgsConstructor;
 import lombok.ToString;
 import lombok.experimental.SuperBuilder;
 
+import javax.validation.constraints.NotNull;
+
 /**
  * 预约记录数据模型
  *
@@ -64,4 +66,13 @@ public class Reservation extends ModifyEntity<Long> {
      */
     @TableField(exist = false)
     private MerchantDTO merchant;
+
+    /**
+     * 商品id
+     */
+    private Long goodsId;
+    /**
+     * 商品名称
+     */
+    private String goodsName;
 }

+ 4 - 1
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/AssetService.java

@@ -19,7 +19,10 @@ public interface AssetService {
      * @param operateAmount 操作金额
      * @param userId 用户标识
      * @param type 类型:0-平台;1-用户;2-商家
+     * @param amountType 金额类型:1-商户资产;2-冻结金额
      * @return
      */
-    BigDecimal updateAsset(Integer operateType, BigDecimal operateAmount, Long userId, Integer type);
+    BigDecimal updateAsset(Integer operateType, BigDecimal operateAmount, Long userId, Integer type, Integer amountType);
+
+    void updatePlatformAsset(BigDecimal platformRealityAmount, BigDecimal payAmount);
 }

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

@@ -4,7 +4,7 @@ import java.math.BigDecimal;
 
 public interface BalanceDetailService {
     /**
-     * 记录用户流水
+     * 记录余额明细
      * @param orderId 订单id
      * @param type 类型:0-平台;1-用户;2-商户
      * @param userId 用户id

+ 17 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/CurrencyRecordService.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.CurrencyRecord;
 
+import java.math.BigDecimal;
+
 /**
  * 收益流水记录表操作接口
  *
@@ -10,4 +12,19 @@ import com.chelvc.cloud.vehicle.server.entity.CurrencyRecord;
  * @date 2024/03/15
  */
 public interface CurrencyRecordService extends IService<CurrencyRecord> {
+
+    /**
+     * 记录用户流水
+     * @param userId 用户id
+     * @param type 类型:0-平台;1-用户;2-商户
+     * @param currencyType 流水类型:0-收入;1-支出
+     * @param orderId 订单id
+     * @param sourceId 来源id
+     * @param sourceType 类型:-1-提现;0-商品出售;1-用户分佣;2-商户分佣;3-平台分佣;4-商家所得
+     * @param amount 操作金额
+     * @param deduct 扣除金额:提现-手续费;分佣扣税
+     * @param realityAmount 实际金额
+     */
+    void recordFlow(Long userId, Integer type, Integer currencyType, Long orderId, Long sourceId, Integer sourceType,
+                    BigDecimal amount, BigDecimal deduct, BigDecimal realityAmount);
 }

+ 12 - 2
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/IOmsOrderOperateHistoryService.java

@@ -34,10 +34,20 @@ public interface IOmsOrderOperateHistoryService
     /**
      * 新增订单操作历史记录
      * 
-     * @param omsOrderOperateHistory 订单操作历史记录
+     * @param orderId 订单标识
+     * @param userId 用户标识
+     * @param orderStatus 订单状态
+     * @return 结果
+     */
+    public int insertOmsOrderOperateHistory(Long orderId, Long userId, Integer orderStatus);
+
+    /**
+     * 批量新增订单操作历史记录
+     *
+     * @param historyList 订单操作历史记录
      * @return 结果
      */
-    public int insertOmsOrderOperateHistory(OmsOrderOperateHistory omsOrderOperateHistory);
+    public int batchInsertOmsOrderOperateHistory(List<OmsOrderOperateHistory> historyList);
 
     /**
      * 修改订单操作历史记录

+ 36 - 12
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/AssetServiceImpl.java

@@ -1,8 +1,5 @@
 package com.chelvc.cloud.vehicle.server.service.impl;
 
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -14,6 +11,9 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
 @Service
 @RequiredArgsConstructor(onConstructor = @__(@Autowired))
 public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements AssetService {
@@ -37,21 +37,45 @@ public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements
     }
 
     @Override
-    public BigDecimal updateAsset(Integer operateType, BigDecimal operateAmount, Long userId, Integer type) {
+    public BigDecimal updateAsset(Integer operateType, BigDecimal operateAmount, Long userId, Integer type, Integer amountType) {
         Asset asset = queryAsset(userId, type);
-        BigDecimal total = asset.getTotal();
-        if (operateType == 1 && total.compareTo(operateAmount) < 0) {
-            throw new ResourceUnavailableException("账户余额不足");
-        }
-        if (operateType == 0) {
-            asset.setTotal(total.add(operateAmount));
-        } else if (operateType == 1) {
-            asset.setTotal(total.subtract(operateAmount));
+        if(amountType == 1){
+            BigDecimal total = asset.getTotal();
+            if (operateType == 1 && total.compareTo(operateAmount) < 0) {
+                throw new ResourceUnavailableException("账户余额不足");
+            }
+            if (operateType == 0) {
+                asset.setTotal(total.add(operateAmount));
+            } else if (operateType == 1) {
+                asset.setTotal(total.subtract(operateAmount));
+            }
+            return asset.getTotal();
+        } else if(amountType == 2){
+            BigDecimal frozen = asset.getFrozen();
+            if (operateType == 1 && frozen.compareTo(operateAmount) < 0) {
+                throw new ResourceUnavailableException("账户冻结余额不足");
+            }
+            if (operateType == 0) {
+                asset.setFrozen(frozen.add(operateAmount));
+            } else if (operateType == 1) {
+                asset.setFrozen(frozen.subtract(operateAmount));
+            }
         }
+        asset.setUpdateTime(LocalDateTime.now());
         int i = baseMapper.updateById(asset);
         if (i != 1) {
             throw new ResourceUnavailableException("操作失败");
         }
         return asset.getTotal();
     }
+
+    @Override
+    public void updatePlatformAsset(BigDecimal platformRealityAmount, BigDecimal payAmount) {
+        Asset asset = queryAsset(1L, 0);
+        BigDecimal frozen = asset.getFrozen();
+        if(frozen.compareTo(payAmount) < 0){
+            throw new ResourceUnavailableException("账户冻结余额不足");
+        }
+        baseMapper.updatePlatformAsset(platformRealityAmount, payAmount, LocalDateTime.now());
+    }
 }

+ 2 - 2
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/BalanceDetailServiceImpl.java

@@ -57,8 +57,8 @@ public class BalanceDetailServiceImpl extends ServiceImpl<BalanceDetailMapper, B
         QueryWrapper<BalanceDetail> lqw = Wrappers.query();
         lqw.eq("t1.type", type);
         lqw.eq("t1.user_id", userId);
-        if(param.getType() != null){
-            lqw.eq("t1.type", param.getType());
+        if(param.getFlowType() != null){
+            lqw.eq("t1.flow_type", param.getFlowType());
         }
         if(param.getOperateType() != null){
             lqw.eq("t1.operate_type", param.getOperateType());

+ 56 - 29
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/CategoryServiceImpl.java

@@ -46,18 +46,18 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
         Integer count = this.lambdaQuery().eq(Category::getName, param.getName()).count();
         AssertUtils.available(count <= 0, "分类名称已存在");
         Category category = CategoryCopier.INSTANCE.copying(param);
-//        Long userId = SessionContextHolder.getId();
-//        Scope scope = StringUtils.ifEmpty(SessionContextHolder.getScope(), Scope::parse);
-//        if (scope == Scope.ADMIN) {
-//            category.setType("0");
-//        }else {
-//            List<Long> merchants = this.merchantService.getMerchantIdsByUserId(userId);
-//            if (ObjectUtils.isEmpty(merchants)) {
-//                return null;
-//            }
-//            category.setMerchantId(merchants.get(0));
-//            category.setType("1");
-//        }
+        Long userId = SessionContextHolder.getId();
+        Scope scope = StringUtils.ifEmpty(SessionContextHolder.getScope(), Scope::parse);
+        if (scope == Scope.ADMIN) {
+            category.setType("0");
+        }else {
+            List<Long> merchants = this.merchantService.getMerchantIdsByUserId(userId);
+            if (ObjectUtils.isEmpty(merchants)) {
+                return null;
+            }
+            category.setMerchantId(merchants.get(0));
+            category.setType("1");
+        }
         if (StringUtils.isEmpty(category.getParentId())){
             category.setParentId(0l);
         }
@@ -86,9 +86,9 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
         }
         Page<Category> page = this.lambdaQuery()
                 .like(StringUtils.notEmpty(param.getName()), Category::getName, param.getName())
-//                .eq(StringUtils.notEmpty(param.getMerchantId()),Category::getMerchantId,param.getMerchantId())
+                .eq(StringUtils.notEmpty(param.getMerchantId()),Category::getMerchantId,param.getMerchantId())
                 .eq(Objects.nonNull(param.getEnabled()), Category::getEnabled, param.getEnabled())
-//                .eq(StringUtils.notEmpty(param.getType()),Category::getType,param.getType())
+                .eq(StringUtils.notEmpty(param.getType()),Category::getType,param.getType())
                 .orderByAsc(Category::getSort).page(DatabaseContextHolder.page(param.getPaging()));
         return DatabaseContextHolder.pagination(page, CategoryCopier.INSTANCE::copying);
     }
@@ -105,11 +105,13 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
                 return null;
             }
             param.setMerchantId(merchants.get(0));
-            param.setType("1");
+            if (StringUtils.isEmpty(param.getType())){
+                param.setType("1");
+            }
         }
         List<Category> categories = this.lambdaQuery().eq(Category::getEnabled, true)
-//                .eq(StringUtils.notEmpty(param.getType()),Category::getType,param.getType())
-//                .eq(StringUtils.notEmpty(param.getMerchantId()),Category::getMerchantId,param.getMerchantId())
+                .eq(StringUtils.notEmpty(param.getType()),Category::getType,param.getType())
+                .eq(StringUtils.notEmpty(param.getMerchantId()),Category::getMerchantId,param.getMerchantId())
                 .orderByAsc(Category::getSort).list();
         categories.sort(Comparator.comparing(Category::getType).thenComparing(Category::getSort));
         List<CategoryDTO> categoryDTOS = CategoryCopier.INSTANCE.copying(categories);
@@ -131,6 +133,31 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
         return categoryList;
     }
 
+    @Override
+    public List<CategoryDTO> listCategory(CategoryListParam param) {
+        List<Category> categories = this.lambdaQuery().eq(Category::getEnabled, true)
+                .eq(StringUtils.notEmpty(param.getType()),Category::getType,param.getType())
+                .orderByAsc(Category::getSort).list();
+        categories.sort(Comparator.comparing(Category::getType).thenComparing(Category::getSort));
+        List<CategoryDTO> categoryDTOS = CategoryCopier.INSTANCE.copying(categories);
+        List<CategoryDTO> categoryList = new ArrayList<>();
+        for (CategoryDTO categoryDTO:categoryDTOS){
+            if (categoryDTO.getParentId() == 0){
+                categoryList.add(categoryDTO);
+            }
+        }
+        for (CategoryDTO categoryDTO:categoryList){
+            List<CategoryDTO> categorys = new ArrayList<>();
+            for (CategoryDTO categorydto:categoryDTOS){
+                if (categorydto.getParentId().equals(categoryDTO.getId()) ){
+                    categorys.add(categorydto);
+                }
+            }
+            categoryDTO.setChildren(categorys);
+        }
+        return categoryList;
+    }
+
     @Override
     public List<CategoryDTO> listRecommendCategories(int size) {
         List<Category> categories = this.baseMapper.listRecommendCategories(size);
@@ -143,18 +170,18 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
     }
     @Override
     public List<CategoryDTO> getRootCategories(CategoryListParam param){
-        Long userId = SessionContextHolder.getId();
-        Scope scope = StringUtils.ifEmpty(SessionContextHolder.getScope(), Scope::parse);
-        if (scope == Scope.ADMIN) {
-            param.setType("0");
-        }else {
-            List<Long> merchants = this.merchantService.getMerchantIdsByUserId(userId);
-            if (ObjectUtils.isEmpty(merchants)) {
-                return null;
-            }
-            param.setMerchantId(merchants.get(0));
-            param.setType("1");
-        }
+//        Long userId = SessionContextHolder.getId();
+//        Scope scope = StringUtils.ifEmpty(SessionContextHolder.getScope(), Scope::parse);
+//        if (scope == Scope.ADMIN) {
+//            param.setType("0");
+//        }else {
+//            List<Long> merchants = this.merchantService.getMerchantIdsByUserId(userId);
+//            if (ObjectUtils.isEmpty(merchants)) {
+//                return null;
+//            }
+//            param.setMerchantId(merchants.get(0));
+//            param.setType("1");
+//        }
         List<Category> categories = this.lambdaQuery()
                 .eq(Category::getEnabled, true)
 //                .eq(StringUtils.notEmpty(param.getType()),Category::getType,param.getType())

+ 56 - 15
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/CurrencyRecordServiceImpl.java

@@ -1,25 +1,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.vehicle.api.dto.CarouselImagesDTO;
-import com.chelvc.cloud.vehicle.api.param.CarouselImagesModifyParam;
-import com.chelvc.cloud.vehicle.api.param.CarouselImagesPagingParam;
-import com.chelvc.cloud.vehicle.server.copier.CarouselImagesCopier;
-import com.chelvc.cloud.vehicle.server.dao.CarouselImagesMapper;
+import com.chelvc.cloud.vehicle.api.dto.CurrencyRecordDTO;
+import com.chelvc.cloud.vehicle.api.dto.EarningsDTO;
+import com.chelvc.cloud.vehicle.server.copier.CurrencyRecordCopier;
 import com.chelvc.cloud.vehicle.server.dao.CurrencyRecordMapper;
-import com.chelvc.cloud.vehicle.server.entity.CarouselImages;
+import com.chelvc.cloud.vehicle.server.entity.Asset;
 import com.chelvc.cloud.vehicle.server.entity.CurrencyRecord;
-import com.chelvc.cloud.vehicle.server.service.CarouselImagesService;
+import com.chelvc.cloud.vehicle.server.service.AssetService;
 import com.chelvc.cloud.vehicle.server.service.CurrencyRecordService;
-import com.chelvc.framework.common.model.Pagination;
-import com.chelvc.framework.common.util.AssertUtils;
-import com.chelvc.framework.common.util.StringUtils;
-import com.chelvc.framework.database.context.DatabaseContextHolder;
-import lombok.NonNull;
+import com.chelvc.framework.base.context.SessionContextHolder;
+import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboService;
+import org.springframework.beans.factory.annotation.Autowired;
 
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.List;
-import java.util.Objects;
 
 /**
  * 收益流水记录表操作接口
@@ -27,8 +24,52 @@ import java.util.Objects;
  * @author liude
  * @date 2024/03/15
  */
+@RequiredArgsConstructor(onConstructor = @__(@Autowired))
 @DubboService(interfaceClass = com.chelvc.cloud.vehicle.api.service.CurrencyRecordService.class)
 public class CurrencyRecordServiceImpl extends ServiceImpl<CurrencyRecordMapper, CurrencyRecord> implements CurrencyRecordService,
         com.chelvc.cloud.vehicle.api.service.CurrencyRecordService {
 
- }
+    private final AssetService assetService;
+
+     @Override
+     public List<CurrencyRecordDTO> listCurrencyRecord(Integer type){
+      Long userId = SessionContextHolder.getId();
+         List<CurrencyRecord> currencyRecords = this.lambdaQuery()
+                 .eq(CurrencyRecord::getUserId,userId)
+                 .eq(CurrencyRecord::getType, type)
+                 .list();
+      return CurrencyRecordCopier.INSTANCE.copying(currencyRecords);
+     }
+    @Override
+    public EarningsDTO getCurrencyRecord(Integer type){
+        Long userId = SessionContextHolder.getId();
+        EarningsDTO currencyRecord = this.baseMapper.getCurrencyRecord(userId, type);
+        if(currencyRecord == null){
+            currencyRecord = new EarningsDTO();
+        }
+        Asset asset = assetService.queryAsset(userId, type);
+        if(asset == null){
+            currencyRecord.setWithdrawAmount(BigDecimal.ZERO);
+        } else {
+            currencyRecord.setWithdrawAmount(asset.getTotal());
+        }
+        return currencyRecord;
+    }
+
+    @Override
+    public void recordFlow(Long userId, Integer type, Integer currencyType, Long orderId, Long sourceId,
+                           Integer sourceType, BigDecimal amount, BigDecimal deduct, BigDecimal realityAmount) {
+        CurrencyRecord currencyRecord = new CurrencyRecord();
+        currencyRecord.setUserId(userId);
+        currencyRecord.setType(type);
+        currencyRecord.setCurrencyType(currencyType);
+        currencyRecord.setOrderId(orderId);
+        currencyRecord.setSourceId(sourceId);
+        currencyRecord.setSourceType(sourceType);
+        currencyRecord.setAmount(amount);
+        currencyRecord.setDeduct(deduct);
+        currencyRecord.setRealityAmount(realityAmount);
+        currencyRecord.setCreateTime(LocalDateTime.now());
+        baseMapper.insert(currencyRecord);
+    }
+}

+ 6 - 7
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/DynamicCommentServiceImpl.java

@@ -24,9 +24,11 @@ import com.chelvc.cloud.vehicle.server.service.DynamicCommentService;
 import com.chelvc.cloud.vehicle.server.service.DynamicContentService;
 import com.chelvc.cloud.vehicle.server.service.DynamicEvaluateRecordService;
 import com.chelvc.framework.common.exception.ResourceUnavailableException;
+import com.chelvc.framework.common.function.Executor;
 import com.chelvc.framework.common.model.Pagination;
 import com.chelvc.framework.common.model.Paging;
 import com.chelvc.framework.common.util.ObjectUtils;
+import com.chelvc.framework.database.context.DatabaseContextHolder;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -34,7 +36,6 @@ import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.List;
@@ -115,9 +116,6 @@ public class DynamicCommentServiceImpl implements DynamicCommentService,
         Paging paging = param.getPaging();
         Page<DynamicCommentDTO> page = new Page<>(paging.getNumber(), paging.getSize());
         IPage<DynamicCommentDTO> result = null;
-        if (param == null) {
-            return new Pagination<>();
-        }
         result = baseMapper
                 .queryAll(page, queryManagerWrapper(param));
         IPage<DynamicCommentDTO> resultDto = getResult(result);
@@ -225,7 +223,6 @@ public class DynamicCommentServiceImpl implements DynamicCommentService,
     }
 
     @Override
-    @Transactional(rollbackFor = RuntimeException.class)
     public void examine(Long id, ExamineType examine) {
         DynamicComment DynamicComment = baseMapper.selectById(id);
         if (DynamicComment == null) {
@@ -242,8 +239,10 @@ public class DynamicCommentServiceImpl implements DynamicCommentService,
             throw new ResourceUnavailableException("操作失败");
         }
         if (ExamineType.PASS.equals(examine)) {
-            addParentComment(DynamicComment.getParentId());
-            dynamicContentService.addComment(DynamicComment.getDynamicId());
+            DatabaseContextHolder.transactional((Executor) () -> {
+                addParentComment(DynamicComment.getParentId());
+                dynamicContentService.addComment(DynamicComment.getDynamicId());
+            });
         }
     }
 

+ 33 - 32
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/DynamicContentServiceImpl.java

@@ -25,8 +25,10 @@ import com.chelvc.cloud.vehicle.server.service.DynamicContentService;
 import com.chelvc.cloud.vehicle.server.service.DynamicEvaluateRecordService;
 import com.chelvc.cloud.vehicle.server.service.DynamicResourceService;
 import com.chelvc.framework.common.exception.ResourceUnavailableException;
+import com.chelvc.framework.common.function.Executor;
 import com.chelvc.framework.common.model.Pagination;
 import com.chelvc.framework.common.model.Paging;
+import com.chelvc.framework.database.context.DatabaseContextHolder;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -34,7 +36,6 @@ import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.ArrayList;
@@ -208,9 +209,6 @@ public class DynamicContentServiceImpl implements DynamicContentService, com.che
     Paging paging = param.getPaging();
     Page<DynamicContentDTO> page = new Page<>(paging.getNumber(), paging.getSize());
     IPage<DynamicContentDTO> result = null;
-    if (param == null) {
-      return new Pagination<>();
-    }
     result = baseMapper
         .queryAll(page, queryManagerWrapper(param));
     IPage<DynamicContentDTO> resultDto = getResult(result, false, null);
@@ -262,7 +260,6 @@ public class DynamicContentServiceImpl implements DynamicContentService, com.che
   }
 
   @Override
-  @Transactional(rollbackFor = Exception.class)
   public void insertByBo(AddDynamicContentParam param, Long userId) {
     addValidEntityBeforeSave(param);
     String textContent = param.getTextContent();
@@ -272,21 +269,23 @@ public class DynamicContentServiceImpl implements DynamicContentService, com.che
     contentDynamic.setTextContent(textContent);
     contentDynamic.setType(type.getValue());
     contentDynamic.setLocation(param.getLocation());
-    baseMapper.insert(contentDynamic);
-    log.info("用户[{}]:发送动态信息{}", userId, contentDynamic);
-    List<AddDynamicResourceParam> list = param.getList();
-    if (list != null && !list.isEmpty()) {
-      List<DynamicResource> resources = new ArrayList<>();
-      list.forEach(e -> {
-        DynamicResource resource = new DynamicResource();
-        resource.setDynamicId(contentDynamic.getId());
-        resource.setResourceKey(e.getResourceKey());
-        resource.setSort(e.getSort());
-        resource.setResourceFrame(e.getResourceFrame());
-        resources.add(resource);
-      });
-      contentDynamicResourceService.batchInsert(resources);
-    }
+    DatabaseContextHolder.transactional((Executor) () -> {
+      baseMapper.insert(contentDynamic);
+      log.info("用户[{}]:发送动态信息{}", userId, contentDynamic);
+      List<AddDynamicResourceParam> list = param.getList();
+      if (list != null && !list.isEmpty()) {
+        List<DynamicResource> resources = new ArrayList<>();
+        list.forEach(e -> {
+          DynamicResource resource = new DynamicResource();
+          resource.setDynamicId(contentDynamic.getId());
+          resource.setResourceKey(e.getResourceKey());
+          resource.setSort(e.getSort());
+          resource.setResourceFrame(e.getResourceFrame());
+          resources.add(resource);
+        });
+        contentDynamicResourceService.batchInsert(resources);
+      }
+    });
     //异步处理审核
     //contentAuditHelper.asyncContentHandle(contentDynamic);
   }
@@ -308,19 +307,20 @@ public class DynamicContentServiceImpl implements DynamicContentService, com.che
   }
 
   @Override
-  @Transactional(rollbackFor = Exception.class)
   public void deleteByIds(Long id, Long userId) {
     LambdaQueryWrapper<DynamicContent> wrapper = Wrappers.lambdaQuery();
     wrapper.eq(DynamicContent::getId, id);
     wrapper.eq(DynamicContent::getUserId, userId);
-    boolean b = baseMapper.delete(wrapper) > 0;
-    if (!b) {
-      throw new ResourceUnavailableException("动态删除失败");
-    }
-    LambdaQueryWrapper<DynamicComment> lwq = Wrappers.lambdaQuery();
-    lwq.eq(DynamicComment::getDynamicId, id);
-    //删除评论
-    dynamicCommentMapper.delete(lwq);
+    DatabaseContextHolder.transactional((Executor) () -> {
+      boolean b = baseMapper.delete(wrapper) > 0;
+      if (!b) {
+        throw new ResourceUnavailableException("动态删除失败");
+      }
+      LambdaQueryWrapper<DynamicComment> lwq = Wrappers.lambdaQuery();
+      lwq.eq(DynamicComment::getDynamicId, id);
+      //删除评论
+      dynamicCommentMapper.delete(lwq);
+    });
   }
 
   @Override
@@ -378,10 +378,11 @@ public class DynamicContentServiceImpl implements DynamicContentService, com.che
   }
 
   @Override
-  @Transactional(rollbackFor = Exception.class)
   public void shieldByUserId(Long userId, Integer type) {
-    baseMapper.shieldByUserId(userId, type);
-    dynamicCommentMapper.shieldByUserId(userId, type);
+    DatabaseContextHolder.transactional((Executor) () -> {
+      baseMapper.shieldByUserId(userId, type);
+      dynamicCommentMapper.shieldByUserId(userId, type);
+    });
   }
 
   @Override

+ 24 - 25
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/DynamicEvaluateRecordServiceImpl.java

@@ -1,9 +1,5 @@
 package com.chelvc.cloud.vehicle.server.service.impl;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -21,6 +17,7 @@ import com.chelvc.cloud.vehicle.server.service.DynamicCommentService;
 import com.chelvc.cloud.vehicle.server.service.DynamicContentService;
 import com.chelvc.cloud.vehicle.server.service.DynamicEvaluateRecordService;
 import com.chelvc.framework.common.exception.ResourceUnavailableException;
+import com.chelvc.framework.common.function.Executor;
 import com.chelvc.framework.common.model.Pagination;
 import com.chelvc.framework.common.model.Paging;
 import com.chelvc.framework.common.util.ObjectUtils;
@@ -30,7 +27,10 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
-import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * @PACKAGE_NAME: net.yeeu.collision.dynamic.service.impl
@@ -44,8 +44,6 @@ import org.springframework.transaction.annotation.Transactional;
 public class DynamicEvaluateRecordServiceImpl extends ServiceImpl<DynamicEvaluateRecordMapper, DynamicEvaluateRecord>
         implements DynamicEvaluateRecordService, com.chelvc.cloud.vehicle.api.service.DynamicEvaluateRecordService {
 
-    private final DynamicEvaluateRecordMapper baseMapper;
-
     private final DynamicContentService iDynamicContentService;
 
     private final DynamicCommentService iDynamicCommentService;
@@ -61,31 +59,32 @@ public class DynamicEvaluateRecordServiceImpl extends ServiceImpl<DynamicEvaluat
      * 新增内容评价(点赞/踩)列
      */
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public Boolean updateRecord(AddDynamicEvaluateRecordParam param, Long userId) {
         Integer actionType = param.getActionType().getValue();
         Integer recordType = param.getRecordType().getValue();
         Integer dynamicStatusType = param.getDynamicStatusType().getValue();
         LambdaQueryWrapper<DynamicEvaluateRecord> lqw =
                 buildAddWrapper(param.getContentId(), userId);
-        if (Objects.equals(ActionType.ADD.getValue(), actionType)) {
-            //判断该用户是否有点赞/踩记录,点击新增记录,取消删除记录
-            executeWrapper(lqw, param, true, userId);
-            if (Objects.equals(RecordType.COMMENT.getValue(), recordType)) {
-                iDynamicCommentService.addNum(dynamicStatusType, param.getContentId());
-            } else if (Objects.equals(RecordType.DYNAMIC.getValue(), recordType)) {
-                iDynamicContentService.addNum(dynamicStatusType, param.getContentId());
-            }
-        } else if (Objects.equals(ActionType.CANCEL.getValue(), actionType)) {
-            lqw.eq(DynamicEvaluateRecord::getOperaterType, dynamicStatusType);
-            //判断该用户是否有点赞/踩记录,点击新增记录,取消删除记录
-            executeWrapper(lqw, param, false, userId);
-            if (Objects.equals(RecordType.COMMENT.getValue(), recordType)) {
-                iDynamicCommentService.reduceNum(dynamicStatusType, param.getContentId());
-            } else if (Objects.equals(RecordType.DYNAMIC.getValue(), recordType)) {
-                iDynamicContentService.reduceNum(dynamicStatusType, param.getContentId());
+        DatabaseContextHolder.transactional((Executor) () -> {
+            if (Objects.equals(ActionType.ADD.getValue(), actionType)) {
+                //判断该用户是否有点赞/踩记录,点击新增记录,取消删除记录
+                executeWrapper(lqw, param, true, userId);
+                if (Objects.equals(RecordType.COMMENT.getValue(), recordType)) {
+                    iDynamicCommentService.addNum(dynamicStatusType, param.getContentId());
+                } else if (Objects.equals(RecordType.DYNAMIC.getValue(), recordType)) {
+                    iDynamicContentService.addNum(dynamicStatusType, param.getContentId());
+                }
+            } else if (Objects.equals(ActionType.CANCEL.getValue(), actionType)) {
+                lqw.eq(DynamicEvaluateRecord::getOperaterType, dynamicStatusType);
+                //判断该用户是否有点赞/踩记录,点击新增记录,取消删除记录
+                executeWrapper(lqw, param, false, userId);
+                if (Objects.equals(RecordType.COMMENT.getValue(), recordType)) {
+                    iDynamicCommentService.reduceNum(dynamicStatusType, param.getContentId());
+                } else if (Objects.equals(RecordType.DYNAMIC.getValue(), recordType)) {
+                    iDynamicContentService.reduceNum(dynamicStatusType, param.getContentId());
+                }
             }
-        }
+        });
         return true;
     }
 

+ 7 - 5
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantServiceImpl.java

@@ -80,9 +80,6 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
 
     private final OmsCartItemService omsCartItemService;
 
-    @DubboReference
-    EmployeeService employeeService;
-
     @DubboReference
     UserService userService;
 
@@ -159,8 +156,13 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
                 .eq(Merchant::getName, param.getName())
                 .eq(Merchant::getStatus, MerchantStatus.ONLINE).count();
         AssertUtils.available(count < 1, "商家名称已存在");
+        Long userId = SessionContextHolder.getId();
+        // 判断商家名称是否存在
+        Integer count1 = this.lambdaQuery()
+                .eq(Merchant::getUserId, userId).count();
+        AssertUtils.available(count < 1, "暂时不支持多商家模式");
         Merchant merchant = MerchantCopier.INSTANCE.copying(param);
-        merchant.setUserId(0L);
+        merchant.setUserId(userId);
         merchant.setScore(0D);
         merchant.setSale(0);
         merchant.setStatus(MerchantStatus.ONLINE);
@@ -325,7 +327,7 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
     /**
      * 每天定时更新商家得营业状态
      */
-    @Scheduled(cron = "5 * * * * ?")
+//    @Scheduled(cron = "5 * * * * ?")
     public void batchMerchantBusinessStatus() {
         List<Merchant> merchantList = this.lambdaQuery().list();
         merchantList.forEach(item -> {

+ 56 - 23
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OderHandleServiceImpl.java

@@ -1,5 +1,16 @@
 package com.chelvc.cloud.vehicle.server.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.chelvc.cloud.vehicle.api.service.UserInviteService;
+import com.chelvc.cloud.vehicle.server.dao.OmsOrderMapper;
+import com.chelvc.cloud.vehicle.server.entity.OmsOrder;
+import com.chelvc.cloud.vehicle.server.service.*;
+import com.chelvc.framework.common.exception.ResourceUnavailableException;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
 import java.io.BufferedInputStream;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
@@ -15,22 +26,6 @@ import java.security.cert.X509Certificate;
 import java.util.Date;
 import java.util.Objects;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.chelvc.cloud.vehicle.api.service.UserInviteService;
-import com.chelvc.cloud.vehicle.server.dao.OmsOrderMapper;
-import com.chelvc.cloud.vehicle.server.entity.OmsOrder;
-import com.chelvc.cloud.vehicle.server.service.AssetService;
-import com.chelvc.cloud.vehicle.server.service.BalanceDetailService;
-import com.chelvc.cloud.vehicle.server.service.OrderHandleService;
-import com.chelvc.cloud.vehicle.server.service.PlatformProfitRatioService;
-import com.chelvc.cloud.vehicle.server.service.UserProfitRatioService;
-import com.chelvc.framework.common.exception.ResourceUnavailableException;
-import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
 @Service
 @RequiredArgsConstructor(onConstructor = @__(@Autowired))
 public class OderHandleServiceImpl implements OrderHandleService {
@@ -40,6 +35,8 @@ public class OderHandleServiceImpl implements OrderHandleService {
     private final PlatformProfitRatioService platformProfitRatioService;
     private final AssetService assetService;
     private final BalanceDetailService balanceDetailService;
+    private final CurrencyRecordService currencyRecordService;
+    private final IOmsOrderOperateHistoryService omsOrderOperateHistoryService;
 
     @Override
     public void orderPay(Long orderId) {
@@ -71,7 +68,6 @@ public class OderHandleServiceImpl implements OrderHandleService {
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public void handleOrder(OmsOrder omsOrder) {
         omsOrder.setStatus(4);
         omsOrder.setConfirmStatus(1);
@@ -81,6 +77,7 @@ public class OderHandleServiceImpl implements OrderHandleService {
         if (i != 1) {
             throw new ResourceUnavailableException("处理失败");
         }
+        Long orderId = omsOrder.getId();
         //分佣逻辑=====================================
         //实际支付金额
         BigDecimal payAmount = omsOrder.getPayAmount();
@@ -115,9 +112,44 @@ public class OderHandleServiceImpl implements OrderHandleService {
         }
         //商家应得金额
         BigDecimal operateAmount = payAmount.subtract(platformAmount);
-        BigDecimal surplusAmount = assetService.updateAsset(0, operateAmount, merchantId, 2);
+        //记录流水--------------------------
+        //商家流水
+        BigDecimal merchantDeduct = BigDecimal.ZERO;  //扣税
+        BigDecimal merchantRealityAmount = operateAmount.subtract(merchantDeduct);
+        BigDecimal surplusAmount = assetService.updateAsset(0, merchantRealityAmount, merchantId, 2, 1);
+        currencyRecordService.recordFlow(merchantId, 2, 0, orderId, userId, 0, operateAmount, merchantDeduct, merchantRealityAmount);
+        //记录商家余额明细
         balanceDetailService.recordFlow(omsOrder.getId(), 2, merchantId, operateAmount, surplusAmount, 0, 1, userId);
-        BigDecimal platformSurplusAmount = assetService.updateAsset(1, operateAmount, 1L, 0);
+        //邀请用户---分得佣金
+        if (userAmount.compareTo(BigDecimal.ZERO) > 0) {
+            platformAmount = platformAmount.subtract(userAmount);
+            BigDecimal deduct = BigDecimal.ZERO;  //扣税
+            BigDecimal realityAmount = userAmount.subtract(deduct);
+            //更新用户资产
+            assetService.updateAsset(0, realityAmount, inviteUserId, 1, 1);
+            //邀请用户流水
+            currencyRecordService.recordFlow(inviteUserId, 1, 0, orderId, userId, 1, userAmount, deduct, realityAmount);
+        }
+        //邀请商家---分得佣金
+        if (merchantAmount.compareTo(BigDecimal.ZERO) > 0) {
+            platformAmount = platformAmount.subtract(merchantAmount);
+            BigDecimal deduct = BigDecimal.ZERO;  //扣税
+            BigDecimal realityAmount = merchantAmount.subtract(deduct);
+            //更新用户资产
+            assetService.updateAsset(0, realityAmount, inviteMerchantId, 1, 1);
+            //邀请商家流水
+            currencyRecordService.recordFlow(inviteMerchantId, 1, 0, orderId, userId, 2, merchantAmount, deduct, realityAmount);
+        }
+        //平台流水
+        BigDecimal deduct = BigDecimal.ZERO;  //扣税
+        BigDecimal platformRealityAmount = platformAmount.subtract(deduct);
+        //更新平台资产
+        assetService.updatePlatformAsset(platformRealityAmount, payAmount);
+        //平台流水
+        currencyRecordService.recordFlow(1L, 0, 0, orderId, userId, 3, platformAmount, deduct, platformRealityAmount);
+
+        omsOrderOperateHistoryService.insertOmsOrderOperateHistory(omsOrder.getId(), userId, omsOrder.getStatus());
+        /*BigDecimal platformSurplusAmount = assetService.updateAsset(1, operateAmount, 1L, 0);
         balanceDetailService.recordFlow(omsOrder.getId(), 0, 1L, operateAmount, platformSurplusAmount, 1, 1,
                 merchantId);
         //邀请用户---分得佣金
@@ -137,16 +169,17 @@ public class OderHandleServiceImpl implements OrderHandleService {
             BigDecimal platformSurplusAmount2 = assetService.updateAsset(1, merchantAmount, 1L, 0);
             balanceDetailService.recordFlow(omsOrder.getId(), 0, 1L, merchantAmount, platformSurplusAmount2, 1, 1,
                     inviteMerchantId);
-        }
+        }*/
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public void paySuccess(OmsOrder order) {
         omsOrderMapper.updateById(order);
-        BigDecimal surplusAmount = assetService.updateAsset(0, order.getPayAmount(), 1L, 0);
+        assetService.updateAsset(0, order.getPayAmount(), 1L, 0, 2);
+        omsOrderOperateHistoryService.insertOmsOrderOperateHistory(order.getId(), order.getUserId(), order.getStatus());
+       /* BigDecimal surplusAmount = assetService.updateAsset(0, order.getPayAmount(), 1L, 0);
         balanceDetailService.recordFlow(order.getId(), 0, 1L, order.getPayAmount(), surplusAmount, 0, 1,
-                order.getUserId());
+                order.getUserId());*/
     }
 
     public static void main(String[] args) {

+ 16 - 5
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OmsOrderOperateHistoryServiceImpl.java

@@ -14,7 +14,7 @@ import com.chelvc.framework.common.util.ObjectUtils;
 import com.chelvc.framework.database.context.DatabaseContextHolder;
 import org.springframework.stereotype.Service;
 
-import java.util.Date;
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -54,14 +54,25 @@ public class OmsOrderOperateHistoryServiceImpl extends ServiceImpl<OmsOrderOpera
     /**
      * 新增订单操作历史记录
      * 
-     * @param omsOrderOperateHistory 订单操作历史记录
+     * @param orderId 订单标识
+     * @param userId 用户标识
+     * @param orderStatus 订单状态
      * @return 结果
      */
     @Override
-    public int insertOmsOrderOperateHistory(OmsOrderOperateHistory omsOrderOperateHistory)
+    public int insertOmsOrderOperateHistory(Long orderId, Long userId, Integer orderStatus)
     {
-        omsOrderOperateHistory.setCreateTime(new Date());
-        return this.baseMapper.insertOmsOrderOperateHistory(omsOrderOperateHistory);
+        OmsOrderOperateHistory history = new OmsOrderOperateHistory();
+        history.setOrderId(orderId);
+        history.setOrderStatus(orderStatus);
+        history.setCreateTime(LocalDateTime.now());
+        history.setUserId(userId);
+        return this.baseMapper.insertOmsOrderOperateHistory(history);
+    }
+
+    @Override
+    public int batchInsertOmsOrderOperateHistory(List<OmsOrderOperateHistory> historyList) {
+        return this.baseMapper.batchInsertOmsOrderOperateHistory(historyList);
     }
 
     /**

+ 31 - 12
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OmsOrderServiceImpl.java

@@ -13,6 +13,7 @@ import com.chelvc.cloud.vehicle.server.dao.OmsOrderMapper;
 import com.chelvc.cloud.vehicle.server.entity.*;
 import com.chelvc.cloud.vehicle.server.service.*;
 import com.chelvc.framework.base.context.SessionContextHolder;
+import com.chelvc.framework.common.function.Executor;
 import com.chelvc.framework.common.model.Pagination;
 import com.chelvc.framework.common.util.AssertUtils;
 import com.chelvc.framework.common.util.ObjectUtils;
@@ -54,6 +55,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
     private final MerchantService merchantService;
 
     private final OrderHandleService orderHandleService;
+    private final IOmsOrderOperateHistoryService omsOrderOperateHistoryService;
 
     @Override
     public ConfirmOrderResultDTO generateConfirmOrder(OmsOrderModifyParam orderParam) {
@@ -223,6 +225,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
             orderItem.setOrderSn(order.getOrderSn());
         }
         omsOrderItemService.add(orderItemList);
+        omsOrderOperateHistoryService.insertOmsOrderOperateHistory(order.getId(), userId, order.getStatus());
         //如使用优惠券更新优惠券使用状态
         if (orderParam.getCouponId() != null) {
             updateCouponStatus(orderParam.getCouponId(), userId, 1);
@@ -252,7 +255,9 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         order.setStatus(1);
         order.setPaymentTime(new Date());
         order.setPayType(payType);
-        orderHandleService.paySuccess(order);
+        DatabaseContextHolder.transactional((Executor) () ->
+            orderHandleService.paySuccess(order)
+        );
         //恢复所有下单商品的锁定库存,扣减真实库存
 //        List<OmsOrderItemDTO> orderDetailList = this.baseMapper.getDetail(orderId);
 //        int count = this.baseMapper.updateSkuStock(orderDetailList);
@@ -275,10 +280,18 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         }
         //修改订单状态为交易取消
         List<Long> ids = new ArrayList<>();
+        List<OmsOrderOperateHistory> histories = new ArrayList<>();
         for (OmsOrderDetailDTO timeOutOrder : timeOutOrders) {
             ids.add(timeOutOrder.getId());
-        }
-        this.baseMapper.updateOrderStatus(ids, 4);
+            OmsOrderOperateHistory history = new OmsOrderOperateHistory();
+            history.setOrderId(timeOutOrder.getId());
+            history.setUserId(timeOutOrder.getUserId());
+            history.setOrderStatus(5);
+            history.setCreateTime(LocalDateTime.now());
+            histories.add(history);
+        }
+        this.baseMapper.updateOrderStatus(ids, 5);
+        omsOrderOperateHistoryService.batchInsertOmsOrderOperateHistory(histories);
         for (OmsOrderDetailDTO timeOutOrder : timeOutOrders) {
             //解除订单商品库存锁定
 //            omsOrderMapper.releaseSkuStockLock(timeOutOrder.getOrderItemList());
@@ -297,20 +310,23 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
     @Override
     public void cancelOrder(Long orderId) {
         //查询未付款的取消订单
-        OmsOrderExampleDTO example = new OmsOrderExampleDTO();
-        example.createCriteria().andIdEqualTo(orderId).andStatusEqualTo(0).andDeleteStatusEqualTo(0);
-        List<OmsOrder> cancelOrderList = this.baseMapper.selectByExample(example);
+        List<OmsOrder> cancelOrderList = this.lambdaQuery()
+                .eq(OmsOrder::getId,orderId)
+                .eq(OmsOrder::getStatus,0)
+                .list();
         if (CollectionUtils.isEmpty(cancelOrderList)) {
             return;
         }
         OmsOrder cancelOrder = cancelOrderList.get(0);
         if (cancelOrder != null) {
-            //修改订单状态为取消
-            cancelOrder.setStatus(5);
-//            this.baseMapper.updateByPrimaryKeySelective(cancelOrder);
+            //修改订单状态为交易取消
+            List<Long> ids = new ArrayList<>();
+            ids.add(cancelOrder.getId());
+            this.baseMapper.updateOrderStatus(ids, 5);
+            omsOrderOperateHistoryService.insertOmsOrderOperateHistory(cancelOrder.getId(), cancelOrder.getUserId(), 5);
             OmsOrderItem orderItem = new OmsOrderItem();
             orderItem.setOrderId(orderId);
-            List<OmsOrderItem> orderItemList = this.omsOrderItemService.selectByExample(orderItem);
+//            List<OmsOrderItem> orderItemList = this.omsOrderItemService.selectByExample(orderItem);
             //解除订单商品库存锁定
 //            if (!CollectionUtils.isEmpty(orderItemList)) {
 //                this.baseMapper.releaseSkuStockLock(orderItemList);
@@ -349,6 +365,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         order.setConfirmStatus(1);
         order.setReceiveTime(new Date());
         this.baseMapper.updateById(order);
+        omsOrderOperateHistoryService.insertOmsOrderOperateHistory(orderId, userId, 4);
     }
 
     @Override
@@ -814,8 +831,10 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         AssertUtils.available(omsOrder.getMerchantId() != null && omsOrder.getMerchantId().equals(merchantId),
                 "该订单商品不属于此商家");
         Integer status = omsOrder.getStatus();
-        AssertUtils.available(status == 1, "该订单不可用");
-        orderHandleService.handleOrder(omsOrder);
+        AssertUtils.available(status != 1, "该订单不可用");
+        DatabaseContextHolder.transactional((Executor) () -> {
+            orderHandleService.handleOrder(omsOrder);
+        });
     }
 
 

+ 5 - 6
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/ProfitRatioConfigServiceImpl.java

@@ -13,13 +13,13 @@ import com.chelvc.cloud.vehicle.server.dao.ProfitRatioConfigMapper;
 import com.chelvc.cloud.vehicle.server.entity.ProfitRatioConfig;
 import com.chelvc.cloud.vehicle.server.service.ProfitRatioConfigService;
 import com.chelvc.framework.common.exception.ResourceUnavailableException;
+import com.chelvc.framework.common.function.Executor;
 import com.chelvc.framework.common.model.Pagination;
 import com.chelvc.framework.common.model.Paging;
 import com.chelvc.framework.database.context.DatabaseContextHolder;
 import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
 import java.util.List;
@@ -29,8 +29,6 @@ import java.util.List;
 public class ProfitRatioConfigServiceImpl extends ServiceImpl<ProfitRatioConfigMapper, ProfitRatioConfig> implements
         ProfitRatioConfigService, com.chelvc.cloud.vehicle.api.service.ProfitRatioConfigService {
 
-//    private final ProfitRatioConfigMapper baseMapper;
-
     @Override
     public void add(AddProfitRatioConfigParams params) {
         ProfitRatioConfig config = new ProfitRatioConfig();
@@ -60,7 +58,6 @@ public class ProfitRatioConfigServiceImpl extends ServiceImpl<ProfitRatioConfigM
     }
 
     @Override
-    @Transactional
     public void delete(Long id, Long userId) {
         ProfitRatioConfig profitRatioConfig = baseMapper.selectById(id);
         if(profitRatioConfig == null){
@@ -72,8 +69,10 @@ public class ProfitRatioConfigServiceImpl extends ServiceImpl<ProfitRatioConfigM
         }
         profitRatioConfig.setUpdater(userId);
         profitRatioConfig.setUpdateTime(new Date());
-        baseMapper.update(profitRatioConfig, null);
-        baseMapper.deleteById(id);
+        DatabaseContextHolder.transactional((Executor) () -> {
+            baseMapper.update(profitRatioConfig, null);
+            baseMapper.deleteById(id);
+        });
     }
 
     @Override

+ 8 - 4
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/ReservationServiceImpl.java

@@ -136,13 +136,17 @@ public class ReservationServiceImpl extends ServiceImpl<ReservationMapper, Reser
                 .list();
         List<ReservationDTO> reservations = ReservationCopier.INSTANCE.copying(list);
         reservations.forEach(item -> {
-//            EmployeeDTO employeeDTO = this.employeeService.getEmployee(item.getUserId());
-//            if (employeeDTO != null) {
-//                item.setUsername(employeeDTO.getUsername());
-//            }
+            UserDTO user = this.userService.getUser(item.getUserId());
+            if (user != null) {
+                item.setUsername(user.getNickname());
+            }
             MerchantDTO merchantDTO = this.merchantService.getMerchantById(item.getMerchantId());
             item.setMerchant(merchantDTO);
         });
         return reservations;
     }
+    @Override
+    public void updateReservationsStatus(Long id,String status){
+
+    }
 }

+ 46 - 44
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/UserInviteServiceImpl.java

@@ -18,12 +18,13 @@ import com.chelvc.cloud.vehicle.server.entity.UserInvite;
 import com.chelvc.cloud.vehicle.server.entity.UserProfitRatio;
 import com.chelvc.cloud.vehicle.server.service.MerchantService;
 import com.chelvc.framework.common.exception.ResourceUnavailableException;
+import com.chelvc.framework.common.function.Executor;
 import com.chelvc.framework.common.model.Paging;
+import com.chelvc.framework.database.context.DatabaseContextHolder;
 import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.time.LocalDateTime;
@@ -46,7 +47,6 @@ public class UserInviteServiceImpl extends ServiceImpl<UserInviteMapper, UserInv
     private final MerchantService merchantService;
 
     @Override
-    @Transactional
     public void bindInvite(UserInviteParams params) {
         Long userId = params.getUserId();
         Long targetId = params.getTargetId();
@@ -66,50 +66,52 @@ public class UserInviteServiceImpl extends ServiceImpl<UserInviteMapper, UserInv
         userInvite.setTargetId(targetId);
         userInvite.setType(type);
         userInvite.setCreateTime(LocalDateTime.now());
-        int i = baseMapper.insert(userInvite);
-        if(i < 1){
-            throw new ResourceUnavailableException("绑定失败");
-        }
-        LambdaQueryWrapper<UserInvite> lwq = Wrappers.lambdaQuery();
-        lwq.eq(UserInvite::getUserId, userId);
-        lwq.eq(UserInvite::getType, type);
-        Integer total = baseMapper.selectCount(lwq);
-        int ratio = 0;
-        LambdaQueryWrapper<UserProfitRatio> lambdaQuery = Wrappers.lambdaQuery();
-        lambdaQuery.eq(UserProfitRatio::getUserId, userId);
-        lambdaQuery.eq(UserProfitRatio::getType, type);
-        UserProfitRatio userProfitRatio = userProfitRatioMapper.selectOne(lambdaQuery);
-        if(userProfitRatio == null){
-            userProfitRatio = new UserProfitRatio();
-            userProfitRatio.setRatio(ratio);
-            userProfitRatio.setUserId(userId);
-            userProfitRatio.setType(type);
-            userProfitRatio.setCreateTime(LocalDateTime.now());
-            userProfitRatio.setUpdateTime(LocalDateTime.now());
-            userProfitRatio.setUpdater(1L);
-            userProfitRatioMapper.insert(userProfitRatio);
-        }
-        int oldRatio = userProfitRatio.getRatio();
-        LambdaQueryWrapper<ProfitRatioConfig> config = Wrappers.lambdaQuery();
-        config.eq(ProfitRatioConfig::getType, type);
-        config.eq(ProfitRatioConfig::getStatus, 0);
-        config.orderByDesc(ProfitRatioConfig::getNum);
-        List<ProfitRatioConfig> list = profitRatioConfigMapper.selectList(config);
-        if(!CollectionUtils.isEmpty(list)){
-            for(ProfitRatioConfig profitRatioConfig : list){
-                int num = profitRatioConfig.getNum();
-                if(total >= num){
-                    ratio = profitRatioConfig.getRatio();
-                    break;
+        DatabaseContextHolder.transactional((Executor) () -> {
+            int i = baseMapper.insert(userInvite);
+            if (i < 1) {
+                throw new ResourceUnavailableException("绑定失败");
+            }
+            LambdaQueryWrapper<UserInvite> lwq = Wrappers.lambdaQuery();
+            lwq.eq(UserInvite::getUserId, userId);
+            lwq.eq(UserInvite::getType, type);
+            Integer total = baseMapper.selectCount(lwq);
+            int ratio = 0;
+            LambdaQueryWrapper<UserProfitRatio> lambdaQuery = Wrappers.lambdaQuery();
+            lambdaQuery.eq(UserProfitRatio::getUserId, userId);
+            lambdaQuery.eq(UserProfitRatio::getType, type);
+            UserProfitRatio userProfitRatio = userProfitRatioMapper.selectOne(lambdaQuery);
+            if (userProfitRatio == null) {
+                userProfitRatio = new UserProfitRatio();
+                userProfitRatio.setRatio(ratio);
+                userProfitRatio.setUserId(userId);
+                userProfitRatio.setType(type);
+                userProfitRatio.setCreateTime(LocalDateTime.now());
+                userProfitRatio.setUpdateTime(LocalDateTime.now());
+                userProfitRatio.setUpdater(1L);
+                userProfitRatioMapper.insert(userProfitRatio);
+            }
+            int oldRatio = userProfitRatio.getRatio();
+            LambdaQueryWrapper<ProfitRatioConfig> config = Wrappers.lambdaQuery();
+            config.eq(ProfitRatioConfig::getType, type);
+            config.eq(ProfitRatioConfig::getStatus, 0);
+            config.orderByDesc(ProfitRatioConfig::getNum);
+            List<ProfitRatioConfig> list = profitRatioConfigMapper.selectList(config);
+            if (!CollectionUtils.isEmpty(list)) {
+                for (ProfitRatioConfig profitRatioConfig : list) {
+                    int num = profitRatioConfig.getNum();
+                    if (total >= num) {
+                        ratio = profitRatioConfig.getRatio();
+                        break;
+                    }
                 }
             }
-        }
-        if(ratio != 0 && ratio != oldRatio){
-            userProfitRatio.setRatio(ratio);
-            userProfitRatio.setUpdateTime(LocalDateTime.now());
-            userProfitRatio.setUpdater(1L);
-            userProfitRatioMapper.update(userProfitRatio, null);
-        }
+            if (ratio != 0 && ratio != oldRatio) {
+                userProfitRatio.setRatio(ratio);
+                userProfitRatio.setUpdateTime(LocalDateTime.now());
+                userProfitRatio.setUpdater(1L);
+                userProfitRatioMapper.update(userProfitRatio, null);
+            }
+        });
     }
 
     @Override

+ 19 - 0
vehicle-server/src/main/resources/mapper/CurrencyRecordMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!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.CurrencyRecordMapper">
+    
+    <select id="getCurrencyRecord" resultType="com.chelvc.cloud.vehicle.api.dto.EarningsDTO">
+        SELECT
+        SUM(reality_amount) AS totalAmount, -- 总数据
+        SUM(CASE WHEN DATE_FORMAT(create_time, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m') THEN reality_amount ELSE 0 END) AS monthAmount, -- 本月数据
+        SUM(CASE WHEN DATE_FORMAT(create_time, '%Y-%m-%d') >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) AND DATE_FORMAT(create_time, '%Y-%m-%d') <![CDATA[ >=]]> DATE_ADD(DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY), INTERVAL 7 DAY) THEN reality_amount ELSE 0 END) AS weekAmount -- 本周数据
+        FROM
+        currency_record
+        WHERE
+        user_id = #{userId}
+        and currency_type = 0
+        and type = #{type}
+    </select>
+</mapper>

+ 10 - 2
vehicle-server/src/main/resources/mapper/MerchantMapper.xml

@@ -4,7 +4,7 @@
     <sql id="BASIC_MERCHANT_SELECT">
         select mt.id, mt.user_id, mt.name, mt.logo, mt.banners, mt.liaison, mt.mobile, mt.opening, mt.address,mt.business_status,
         mt.score, mt.sale, mt.good_review,mt.region, mt.longitude, mt.latitude, mt.recommend, mt.status, mt.creator,
-        mt.create_time,mt.updater, mt.update_time
+        mt.create_time,mt.updater, mt.update_time,mt.main_business,mt.ancillary_business
         from `merchant` mt
     </sql>
 
@@ -229,7 +229,15 @@
                         DATE_FORMAT( payment_time, '%Y%m%d' ) = DATE_FORMAT( CURDATE()- 1, '%Y%m%d' )
         <if test="merchantId != null">
             and merchant_id = #{merchantId}
-        </if>) yesteramount
+        </if>) yesteramount,
+               (select
+                    sum(pay_amount)
+               from
+                    oms_order where 1=1
+        <if test="merchantId != null">
+            and merchant_id = #{merchantId}
+        </if>) totalAmount
+
         FROM
             DUAL
 

+ 6 - 0
vehicle-server/src/main/resources/mapper/OmsOrderPayHistoryMapper.xml

@@ -12,4 +12,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ${ew.getCustomSqlSegment}
     </select>
 
+    <insert id="batchInsertOmsOrderOperateHistory" keyColumn="id" keyProperty="list.id" parameterType="java.util.List" useGeneratedKeys="true">
+        insert into oms_order_pay_history (id,order_id,user_id,order_status,create_time) values
+        <foreach collection="list" item="item" index="index" separator="," >
+            (#{item.id},#{item.orderId},#{item.userId},#{item.orderStatus},#{item.createTime})
+        </foreach>
+    </insert>
 </mapper>

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

@@ -18,7 +18,7 @@
             t.*,m.name
         FROM
             platform_profit_ratio t
-            left join merchant m on t.user_id = t.user_id
+            left join merchant m on m.user_id = t.user_id
             ${ew.getCustomSqlSegment}
     </select>
 

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

@@ -12,6 +12,8 @@
         <result column="creator" property="creator" jdbcType="BIGINT"/>
         <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
         <result column="updater" property="updater" jdbcType="BIGINT"/>
+        <result column="goods_id" property="goodsId" jdbcType="BIGINT"/>
+        <result column="goods_name" property="goodsName" jdbcType="VARCHAR"/>
         <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
         <association property="merchant" javaType="com.chelvc.cloud.vehicle.api.dto.MerchantDTO">
             <id column="merchant_id" property="id" jdbcType="BIGINT"/>
@@ -26,7 +28,7 @@
 
     <select id="listUserReservations" resultMap="RESERVATION_RESULT_MAP">
         select rn.id,rn.user_id,rn.merchant_id,rn.mobile,rn.appoint_time,rn.status, mt.name, mt.logo, mt.score,
-        mt.sale, mt.address
+        mt.sale, mt.address,rn.goods_id,rn.goods_name
         from reservation rn
         inner join merchant mt on merchant_id = mt.id and mt.status = 'ONLINE'
         where rn.user_id = #{userId}
@@ -39,4 +41,8 @@
         order by rn.appoint_time asc
         limit #{param.size}
     </select>
+
+    <update id="updateReservationsStatus">
+        update reservation set status = #{status} where id = #{id}
+    </update>
 </mapper>