zhaoyun 2 روز پیش
والد
کامیت
ef87d83e7a
23فایلهای تغییر یافته به همراه1144 افزوده شده و 93 حذف شده
  1. 5 6
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/ExpressOrderService.java
  2. 7 0
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/ProductService.java
  3. 101 0
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/RiderBalanceRecordService.java
  4. 41 0
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/RiderService.java
  5. 1 1
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/SecondHandOrderDetailService.java
  6. 8 0
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/UserService.java
  7. 80 0
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/WhatTodayEatTagService.java
  8. 0 5
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExpressOrderDetailServiceImpl.java
  9. 16 20
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExpressOrderServiceImpl.java
  10. 1 29
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExpressPayServiceImpl.java
  11. 1 1
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/GameNotesRelationServiceImpl.java
  12. 5 5
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/GameNotesServiceImpl.java
  13. 1 1
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/PayCallbackServiceImpl.java
  14. 30 1
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/ProductServiceImpl.java
  15. 318 0
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/RiderBalanceRecordServiceImpl.java
  16. 2 9
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/RiderOrderServiceImpl.java
  17. 230 1
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/RiderServiceImpl.java
  18. 1 5
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/SecondHandOrderDetailServiceImpl.java
  19. 0 2
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/SecondHandPayServiceImpl.java
  20. 0 2
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/SecondHandRefundOrderManagerServiceImpl.java
  21. 77 5
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserClosingServiceImpl.java
  22. 10 0
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserServiceImpl.java
  23. 209 0
      ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/WhatTodayEatTagServiceImpl.java

+ 5 - 6
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/ExpressOrderService.java → ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/ExpressOrderService.java

@@ -1,16 +1,15 @@
-package com.zbkj.service;
+package com.zbkj.service.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.pagehelper.PageInfo;
 import com.zbkj.common.model.express.ExpressOrder;
-import com.zbkj.common.model.order.Order;
-import com.zbkj.common.request.OrderFrontListRequest;
 import com.zbkj.common.request.OrderSearchRequest;
 import com.zbkj.common.request.OrderTabsHeaderRequest;
 import com.zbkj.common.request.express.ExpressOrderFrontListRequest;
 import com.zbkj.common.response.OrderCountItemResponse;
+import com.zbkj.common.response.express.PlatformExpressOrderAdminDetailResponse;
+import com.zbkj.common.response.express.PlatformExpressOrderPageResponse;
 import com.zbkj.common.response.PlatformOrderAdminDetailResponse;
-import com.zbkj.common.response.PlatformOrderPageResponse;
 
 import java.util.List;
 
@@ -61,7 +60,7 @@ public interface ExpressOrderService extends IService<ExpressOrder> {
      * @param request 查询参数
      * @return PageInfo
      */
-    PageInfo<PlatformOrderPageResponse> getPlatformAdminPage(OrderSearchRequest request);
+    PageInfo<PlatformExpressOrderPageResponse> getPlatformAdminPage(OrderSearchRequest request);
 
     /**
      * 获取平台端订单各状态数量
@@ -73,7 +72,7 @@ public interface ExpressOrderService extends IService<ExpressOrder> {
      * @param orderNo 订单编号
      * @return PlatformOrderAdminDetailResponse
      */
-    PlatformOrderAdminDetailResponse platformInfo(String orderNo);
+    PlatformExpressOrderAdminDetailResponse platformInfo(String orderNo);
 
     /**
      * 收件

+ 7 - 0
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/ProductService.java

@@ -676,4 +676,11 @@ public interface ProductService extends IService<Product> {
      * @return
      */
     List<Product> findProductByMerIdAndCateId(Integer merId,Integer cateId);
+
+    /**
+     *
+     * @param request
+     * @return
+     */
+    List<ProductFrontResponse> getWhatTodayEatByTag(WhatTodayEatSearchRequest request);
 }

+ 101 - 0
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/RiderBalanceRecordService.java

@@ -0,0 +1,101 @@
+package com.zbkj.service.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.pagehelper.PageInfo;
+import com.zbkj.common.model.rider.RiderBalanceRecord;
+import com.zbkj.common.model.user.UserBrokerageRecord;
+import com.zbkj.common.request.PageParamRequest;
+import com.zbkj.common.request.RetailStoreSubUserSearchRequest;
+import com.zbkj.common.request.UserRecordSearchRequest;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+public interface RiderBalanceRecordService extends IService<RiderBalanceRecord> {
+
+    /**
+     * 通过订单号获取佣金记录
+     * @param orderNo 订单号
+     * @return List
+     */
+    List<RiderBalanceRecord> getByOrderNo(String orderNo);
+    /**
+     * 获取记录列表
+     * @param linkNo 关联单号
+     * @param linkType 关联类型
+     * @return 记录列表
+     */
+    List<RiderBalanceRecord> findListByLinkNoAndLinkType(String linkNo, String linkType);
+
+    /**
+     * 获取佣金明细列表根据uid
+     * @param uid uid
+     * @param pageParamRequest 分页参数
+     * @return PageInfo
+     */
+    PageInfo<RiderBalanceRecord> findDetailListByUid(Integer uid, PageParamRequest pageParamRequest);
+
+    /**
+     * 获取推广记录列表
+     * @param uid 用户uid
+     * @param pageParamRequest 分页参数
+     * @return List
+     */
+    List<RiderBalanceRecord> findSpreadListByUid(Integer uid, PageParamRequest pageParamRequest);
+
+    /**
+     * 获取推广记录列表
+     * @param request 用户uid
+     * @param pageParamRequest 分页参数
+     * @return PageInfo
+     */
+    PageInfo<RiderBalanceRecord> findAdminSpreadListByUid(RetailStoreSubUserSearchRequest request, PageParamRequest pageParamRequest);
+    /**
+     * 获取累计条数
+     * @param uid 用户uid
+     * @return Integer
+     */
+    Integer getSpreadCountByUid(Integer uid);
+
+    /**
+     * 获取月份对应的订单数
+     * @param uid 用户uid
+     * @param monthList 月份列表
+     * @return Map
+     */
+    Map<String, Integer> getSpreadCountByUidAndMonth(Integer uid, List<String> monthList);
+
+    /**
+     * 获取冻结期佣金
+     * @param uid uid
+     * @return BigDecimal
+     */
+    BigDecimal getFreezePrice(Integer uid);
+
+    /**
+     * 根据关联单号获取唯一记录
+     * @param linkNo 关联单号
+     * @return UserBrokerageRecord
+     */
+    RiderBalanceRecord getOneByLinkNo(String linkNo);
+
+    /**
+     * 获取用户佣金记录(管理端)
+     */
+    PageInfo<RiderBalanceRecord> getAdminUserBrokerageRecord(UserRecordSearchRequest request);
+
+    /**
+     * 佣金解冻
+     */
+    void brokerageThaw();
+
+
+    /**
+     * 获取已结算佣金
+     * @param uid uid
+     * @return BigDecimal
+     */
+    BigDecimal getSettledCommission(Integer uid);
+
+}

+ 41 - 0
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/RiderService.java

@@ -4,13 +4,18 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.pagehelper.PageInfo;
 import com.zbkj.common.model.rider.Rider;
 import com.zbkj.common.model.rider.RiderFeeConfig;
+import com.zbkj.common.request.BrokerageToYueRequest;
 import com.zbkj.common.request.PageParamRequest;
+import com.zbkj.common.request.UserClosingApplyRequest;
 import com.zbkj.common.request.rider.*;
 import com.zbkj.common.response.*;
+import com.zbkj.common.response.rider.RiderAccountResponse;
 import com.zbkj.common.response.rider.RiderPageResponse;
 import com.zbkj.common.response.rider.RiderPlatformDetailResponse;
 import com.zbkj.common.response.rider.RiderSettledResponse;
 
+import java.math.BigDecimal;
+
 /**
  * RiderService 接口
  * +----------------------------------------------------------------------
@@ -160,4 +165,40 @@ public interface RiderService extends IService<Rider> {
      */
     RiderPlatformDetailResponse getInfo();
 
+    /**
+     * 骑手个人账户
+     * @return
+     */
+    RiderAccountResponse getMyAccount() ;
+
+    /**
+     * 用户结算申请
+     *
+     * @param request 申请参数
+     * @return Boolean
+     */
+    Boolean userClosingApply(UserClosingApplyRequest request);
+
+    /**
+     * 获取用户可提现配置
+     * @return
+     */
+    UserClosingConfigResponse getUserClosingConfig();
+
+    /**
+     * 转入余额
+     *
+     * @param request 请求参数
+     * @return Boolean
+     */
+    Boolean brokerageToYue(BrokerageToYueRequest request);;
+
+    /**
+     * 更新余额
+     * @param uid
+     * @param price
+     * @param type
+     * @return
+     */
+    Boolean updateBalance(Integer uid, BigDecimal price, String type);
 }

+ 1 - 1
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/SecondHandOrderDetailService.java → ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/SecondHandOrderDetailService.java

@@ -1,4 +1,4 @@
-package com.zbkj.service.service.impl;
+package com.zbkj.service.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.pagehelper.PageInfo;

+ 8 - 0
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/UserService.java

@@ -226,6 +226,14 @@ public interface UserService extends IService<User> {
     Boolean brokerageToYue(Integer uid, BigDecimal price);
 
     /**
+     * 佣金转余额
+     * @param uid 用户ID
+     * @param price 转入金额
+     * @return Boolean
+     */
+    Boolean incomeToYue(Integer uid, BigDecimal price);
+
+    /**
      * 操作用户积分
      * @param request 请求参数
      * @return Boolean

+ 80 - 0
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/WhatTodayEatTagService.java

@@ -0,0 +1,80 @@
+package com.zbkj.service.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zbkj.common.model.product.ProductCategory;
+import com.zbkj.common.model.product.ProductTag;
+import com.zbkj.common.model.product.WhatTodayEatTag;
+import com.zbkj.common.request.PageParamRequest;
+import com.zbkj.common.request.ProductCategoryRequest;
+import com.zbkj.common.request.WhatTodayEatTagRequest;
+import com.zbkj.common.request.producttag.ProductTagSearchRequest;
+import com.zbkj.common.vo.ProCategoryCacheVo;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+*  ProductCategoryService 接口
+*  +----------------------------------------------------------------------
+*  | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+*  +----------------------------------------------------------------------
+*  | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+*  +----------------------------------------------------------------------
+*  | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+*  +----------------------------------------------------------------------
+*  | Author: CRMEB Team <admin@crmeb.com>
+*  +----------------------------------------------------------------------
+*/
+public interface WhatTodayEatTagService extends IService<WhatTodayEatTag> {
+    /**
+     * 列表
+     * @param request 请求参数
+     * @param pageParamRequest 分页类参数
+     * @author dazongzi
+     * @since 2023-10-11
+     * @return List<ProductTag>
+     */
+    List<WhatTodayEatTag> getList(ProductTagSearchRequest request, PageParamRequest pageParamRequest);
+
+    /**
+     * 获取分类列表
+     */
+    List<WhatTodayEatTag> getFrontShowList();
+
+    /**
+     *
+     * @return
+     */
+    List<WhatTodayEatTag> getAdminList();
+
+    /**
+     * 添加商品分类
+     * @param request 添加参数
+     * @return Boolean
+     */
+    Boolean add(WhatTodayEatTagRequest request);
+
+    /**
+     * 删除分类
+     * @param id 分类ID
+     * @return Boolean
+     */
+    Boolean delete(Integer id);
+
+    /**
+     * 修改分类
+     * @param request 修改参数
+     * @return Boolean
+     */
+    Boolean edit(WhatTodayEatTagRequest request);
+
+    /**
+     * 修改分类显示状态
+     * @param id 分类ID
+     * @return Boolean
+     */
+    Boolean updateShowStatus(Integer id, Integer status);
+
+
+
+}

+ 0 - 5
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExpressOrderDetailServiceImpl.java

@@ -3,14 +3,9 @@ package com.zbkj.service.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zbkj.common.model.express.ExpressOrder;
 import com.zbkj.common.model.express.ExpressOrderDetail;
-import com.zbkj.common.model.order.OrderDetail;
-import com.zbkj.service.ExpressOrderService;
-import com.zbkj.service.dao.ExpressOrderDao;
 import com.zbkj.service.dao.ExpressOrderDetailDao;
 import com.zbkj.service.service.ExpressOrderDetailService;
-import com.zbkj.service.service.OrderDetailService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;

+ 16 - 20
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExpressOrderServiceImpl.java

@@ -17,31 +17,27 @@ import com.zbkj.common.constants.*;
 import com.zbkj.common.exception.CrmebException;
 import com.zbkj.common.model.express.ExpressOrder;
 import com.zbkj.common.model.express.ExpressOrderDetail;
-import com.zbkj.common.model.merchant.Merchant;
-import com.zbkj.common.model.order.MerchantOrder;
 import com.zbkj.common.model.order.Order;
-import com.zbkj.common.model.order.OrderDetail;
-import com.zbkj.common.model.secondhand.SecondHandOrder;
-import com.zbkj.common.model.secondhand.SecondHandRefundOrder;
 import com.zbkj.common.model.user.User;
 import com.zbkj.common.page.CommonPage;
 import com.zbkj.common.request.OrderSearchRequest;
 import com.zbkj.common.request.OrderTabsHeaderRequest;
 import com.zbkj.common.request.express.ExpressOrderFrontListRequest;
-import com.zbkj.common.response.OrderCountItemResponse;
-import com.zbkj.common.response.OrderInfoFrontDataResponse;
-import com.zbkj.common.response.PlatformOrderAdminDetailResponse;
-import com.zbkj.common.response.PlatformOrderPageResponse;
+import com.zbkj.common.response.*;
+import com.zbkj.common.response.express.ExpressOrderInfoFrontDataResponse;
+import com.zbkj.common.response.express.PlatformExpressOrderAdminDetailResponse;
+import com.zbkj.common.response.express.PlatformExpressOrderPageResponse;
 import com.zbkj.common.result.CommonResultCode;
 import com.zbkj.common.result.OrderResultCode;
 import com.zbkj.common.utils.CrmebDateUtil;
 import com.zbkj.common.utils.CrmebUtil;
 import com.zbkj.common.utils.ValidateFormUtil;
 import com.zbkj.common.vo.DateLimitUtilVo;
-import com.zbkj.service.ExpressOrderService;
+import com.zbkj.service.service.ExpressOrderService;
 import com.zbkj.service.dao.ExpressOrderDao;
 import com.zbkj.service.service.ExpressOrderDetailService;
 import com.zbkj.service.service.RiderOrderService;
+import com.zbkj.service.service.SystemAttachmentService;
 import com.zbkj.service.service.UserService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -71,6 +67,8 @@ public class ExpressOrderServiceImpl extends ServiceImpl<ExpressOrderDao, Expres
     private RiderOrderService riderOrderService;
     @Autowired
     private TransactionTemplate transactionTemplate;
+    @Autowired
+    private SystemAttachmentService systemAttachmentService;
     private static final Logger logger = LoggerFactory.getLogger(ExpressOrderServiceImpl.class);
     /**
      * 根据订单编号获取订单
@@ -164,7 +162,7 @@ public class ExpressOrderServiceImpl extends ServiceImpl<ExpressOrderDao, Expres
     }
 
     @Override
-    public PageInfo<PlatformOrderPageResponse> getPlatformAdminPage(OrderSearchRequest request) {
+    public PageInfo<PlatformExpressOrderPageResponse> getPlatformAdminPage(OrderSearchRequest request) {
         Page<Order> startPage = PageHelper.startPage(request.getPage(), request.getLimit());
         Map<String, Object> map = CollUtil.newHashMap();
         map.put("status", request.getStatus());
@@ -199,16 +197,14 @@ public class ExpressOrderServiceImpl extends ServiceImpl<ExpressOrderDao, Expres
                 map.put("endTime", dateLimit.getEndTime());
             }
         }
-        if (StrUtil.isNotBlank(request.getMerName())) {
-            map.put("merName", request.getMerName());
-        }
+
         if (StrUtil.isNotBlank(request.getOrderNo())) {
             map.put("orderNo", URLUtil.decode(request.getOrderNo()));
         }
         if (ObjectUtil.isNotNull(request.getType())) {
             map.put("type", request.getType());
         }
-        List<PlatformOrderPageResponse> responseList = dao.getPlatformAdminPage(map);
+        List<PlatformExpressOrderPageResponse> responseList = dao.getPlatformAdminPage(map);
         if (CollUtil.isEmpty(responseList)) {
             return CommonPage.copyPageInfo(startPage, CollUtil.newArrayList());
         }
@@ -242,14 +238,15 @@ public class ExpressOrderServiceImpl extends ServiceImpl<ExpressOrderDao, Expres
     }
 
     @Override
-    public PlatformOrderAdminDetailResponse platformInfo(String orderNo) {
+    public PlatformExpressOrderAdminDetailResponse platformInfo(String orderNo) {
         ExpressOrder order = getByOrderNo(orderNo);
-        PlatformOrderAdminDetailResponse response = new PlatformOrderAdminDetailResponse();
+        PlatformExpressOrderAdminDetailResponse response = new PlatformExpressOrderAdminDetailResponse();
         BeanUtils.copyProperties(order, response);
         List<ExpressOrderDetail> orderDetailList = orderDetailService.getByOrderNo(orderNo);
-        List<OrderInfoFrontDataResponse> orderInfoList = orderDetailList.stream().map(e -> {
-            OrderInfoFrontDataResponse dataResponse = new OrderInfoFrontDataResponse();
+        List<ExpressOrderInfoFrontDataResponse> orderInfoList = orderDetailList.stream().map(e -> {
+            ExpressOrderInfoFrontDataResponse dataResponse = new ExpressOrderInfoFrontDataResponse();
             BeanUtils.copyProperties(e, dataResponse);
+            dataResponse.setImage(systemAttachmentService.clearPrefix(e.getImage()));
             return dataResponse;
         }).collect(Collectors.toList());
         response.setOrderDetailList(orderInfoList);
@@ -258,7 +255,6 @@ public class ExpressOrderServiceImpl extends ServiceImpl<ExpressOrderDao, Expres
         User user = userService.getById(order.getUid());
         response.setNickname(user.getNickname());
         response.setPhone(user.getPhone());
-        response.setIsLogoff(user.getIsLogoff());
         if (crmebConfig.getPhoneMaskSwitch()) {
             response.setPhone(CrmebUtil.maskMobile(response.getPhone()));
             if (StrUtil.isNotBlank(response.getUserPhone())) {

+ 1 - 29
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/ExpressPayServiceImpl.java

@@ -8,44 +8,21 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
-import com.alipay.api.AlipayApiException;
-import com.alipay.api.AlipayClient;
-import com.alipay.api.DefaultAlipayClient;
-import com.alipay.api.domain.AlipayTradeQueryModel;
-import com.alipay.api.request.AlipayTradeQueryRequest;
-import com.alipay.api.response.AlipayTradeQueryResponse;
 import com.zbkj.common.config.CrmebConfig;
 import com.zbkj.common.constants.*;
 import com.zbkj.common.exception.CrmebException;
-import com.zbkj.common.model.admin.SystemAdmin;
-import com.zbkj.common.model.alipay.AliPayInfo;
-import com.zbkj.common.model.bill.Bill;
-import com.zbkj.common.model.bill.MerchantBill;
-import com.zbkj.common.model.coupon.CouponUser;
 import com.zbkj.common.model.express.ExpressOrder;
-import com.zbkj.common.model.member.PaidMemberOrder;
-import com.zbkj.common.model.merchant.Merchant;
-import com.zbkj.common.model.merchant.MerchantBalanceRecord;
-import com.zbkj.common.model.order.*;
-import com.zbkj.common.model.product.ProductCoupon;
-import com.zbkj.common.model.system.SystemNotification;
 import com.zbkj.common.model.user.*;
 import com.zbkj.common.model.wechat.WechatPayInfo;
-import com.zbkj.common.model.wechat.video.PayComponentProduct;
 import com.zbkj.common.request.OrderPayRequest;
 import com.zbkj.common.request.WechatPaymentQueryRequest;
-import com.zbkj.common.response.CashierInfoResponse;
 import com.zbkj.common.response.OrderPayResultResponse;
-import com.zbkj.common.response.PayConfigResponse;
 import com.zbkj.common.result.CommonResultCode;
-import com.zbkj.common.result.MemberResultCode;
 import com.zbkj.common.result.OrderResultCode;
 import com.zbkj.common.result.UserResultCode;
 import com.zbkj.common.utils.*;
 import com.zbkj.common.vo.*;
-import com.zbkj.common.vo.wxvedioshop.ShopOrderAddResultVo;
-import com.zbkj.common.vo.wxvedioshop.order.*;
-import com.zbkj.service.ExpressOrderService;
+import com.zbkj.service.service.ExpressOrderService;
 import com.zbkj.service.service.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -53,13 +30,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.support.TransactionTemplate;
 
-import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
-import java.net.URLDecoder;
 import java.util.*;
-import java.util.stream.Collectors;
-
-import static com.zbkj.common.constants.OrderConstants.ORDER_SHIPPING_TYPE_EXPRESS;
 
 /**
  * PayServiceImpl 接口实现

+ 1 - 1
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/GameNotesRelationServiceImpl.java

@@ -99,7 +99,7 @@ public class GameNotesRelationServiceImpl extends ServiceImpl<GameNotesRelationD
         LambdaQueryWrapper<GameNotesRelation> lqw = Wrappers.lambdaQuery();
         lqw.eq(GameNotesRelation::getNoteId, noteId);
         lqw.eq(GameNotesRelation::getUid, userId);
-        lqw.eq(GameNotesRelation::getType, CommunityConstants.COMMUNITY_NOTE_RELATION_LIKE);
+        lqw.eq(GameNotesRelation::getType, CommunityConstants.COMMUNITY_NOTE_RELATION_JOIN);
         lqw.last(" limit 1");
         return dao.selectOne(lqw);
     }

+ 5 - 5
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/GameNotesServiceImpl.java

@@ -450,7 +450,7 @@ public class GameNotesServiceImpl extends ServiceImpl<GameNotesDao, GameNotes> i
         }
         note.setSchool(user.getSchool());
 
-        List<CommunityNotesProduct> notesProductList = new ArrayList<>();
+       // List<CommunityNotesProduct> notesProductList = new ArrayList<>();
         note.setAuditStatus(CommunityConstants.COMMUNITY_NOTE_AUDIT_SUCCESS);
         if (CommunityConstants.COMMUNITY_NOTE_TYPE_IMAGE_CONTENT.equals(request.getType())) {
             String textAuditSwitch = systemConfigService.getValueByKeyException(CommunityConstants.COMMUNITY_IMAGE_TEXT_AUDIT_SWITCH);
@@ -479,7 +479,7 @@ public class GameNotesServiceImpl extends ServiceImpl<GameNotesDao, GameNotes> i
         }
         if (note.getAuditStatus().equals(CommunityConstants.COMMUNITY_NOTE_AUDIT_SUCCESS)) {
             // 异步掉用添加用户经验
-            asyncService.noteUpExp(user.getId(), note.getId());
+            //asyncService.noteUpExp(user.getId(), note.getId());
         }
     }
 
@@ -524,7 +524,7 @@ public class GameNotesServiceImpl extends ServiceImpl<GameNotesDao, GameNotes> i
             note.setAuditStatus(CommunityConstants.COMMUNITY_NOTE_AUDIT_SUCCESS);
         }
 
-        List<CommunityNotesProduct> notesProductList = new ArrayList<>();
+       // List<CommunityNotesProduct> notesProductList = new ArrayList<>();
 
         Boolean execute = transactionTemplate.execute(e -> {
             boolean update = updateById(note);
@@ -578,9 +578,9 @@ public class GameNotesServiceImpl extends ServiceImpl<GameNotesDao, GameNotes> i
     public void operationJoin(Integer noteId, String operationType) {
         LambdaUpdateWrapper<GameNotes> wrapper = Wrappers.lambdaUpdate();
         if (operationType.equals(Constants.OPERATION_TYPE_ADD)) {
-            wrapper.setSql("join_num = like_num + 1");
+            wrapper.setSql("join_num = join_num + 1");
         } else {
-            wrapper.setSql("join_num = like_num - 1");
+            wrapper.setSql("join_num = join_num - 1");
         }
         wrapper.eq(GameNotes::getId, noteId);
         update(wrapper);

+ 1 - 1
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/PayCallbackServiceImpl.java

@@ -30,7 +30,7 @@ import com.zbkj.common.utils.WxPayUtil;
 import com.zbkj.common.vo.AttachVo;
 import com.zbkj.common.vo.MyRecord;
 import com.zbkj.common.vo.WechatPayCallbackVo;
-import com.zbkj.service.ExpressOrderService;
+import com.zbkj.service.service.ExpressOrderService;
 import com.zbkj.service.service.*;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import org.slf4j.Logger;

+ 30 - 1
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/ProductServiceImpl.java

@@ -1,6 +1,7 @@
 package com.zbkj.service.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.URLUtil;
@@ -46,6 +47,7 @@ import com.zbkj.service.dao.ProductDao;
 import com.zbkj.service.service.*;
 import com.zbkj.service.service.groupbuy.GroupBuyActivitySkuService;
 import com.zbkj.service.util.ProductUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -142,6 +144,8 @@ public class ProductServiceImpl extends ServiceImpl<ProductDao, Product>
     private ProductAttributeService productAttributeService;
     @Autowired
     private ProductAttributeOptionService productAttributeOptionService;
+    @Autowired
+    private WhatTodayEatTagService whatTodayEatTagService;
 
     /**
      * 获取产品列表Admin
@@ -285,6 +289,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductDao, Product>
         product.setAuditStatus(ProductConstants.AUDIT_STATUS_EXEMPTION);
         product.setIsAudit(false);
         product.setIsShow(false);
+        product.setWhatEatTag(String.join(",", request.getTagIds()));
         if (product.getIsPaidMember()) {
             product.setVipPrice(minAttrValue.getVipPrice());
         }
@@ -579,6 +584,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductDao, Product>
         product.setAuditStatus(tempProduct.getAuditStatus());
         product.setType(tempProduct.getType());
         product.setMarketingType(tempProduct.getMarketingType());
+        product.setWhatEatTag(String.join(",", productRequest.getTagIds()));
         Merchant merchant = merchantService.getByIdException(tempProduct.getMerId());
 
         String cdnUrl = systemAttachmentService.getCdnUrl();
@@ -828,7 +834,10 @@ public class ProductServiceImpl extends ServiceImpl<ProductDao, Product>
 
         ProductInfoResponse productInfoResponse = new ProductInfoResponse();
         BeanUtils.copyProperties(product, productInfoResponse);
-
+        if(StrUtil.isNotBlank(product.getWhatEatTag())) {
+            String[] whatEatTag = product.getWhatEatTag().split(",");  // 以逗号为分隔符
+            productInfoResponse.setTagIds(Arrays.asList(whatEatTag));
+        }
         List<ProductAttribute> attrList = productAttributeService.findListByProductId(product.getId());
         attrList.forEach(attr -> {
             List<ProductAttributeOption> optionList = productAttributeOptionService.findListByAttrId(attr.getId());
@@ -4037,5 +4046,25 @@ public class ProductServiceImpl extends ServiceImpl<ProductDao, Product>
         lqw.orderByDesc(Product::getSort).orderByDesc(Product::getId);
         return dao.selectList(lqw);
     }
+
+    @Override
+    public List<ProductFrontResponse> getWhatTodayEatByTag(WhatTodayEatSearchRequest request) {
+        Map<String, Object> map = new HashMap<>();
+        if(ObjectUtil.isNotNull(request.getTagId())){
+            WhatTodayEatTag whatTodayEatTag= whatTodayEatTagService.getById(request.getTagId());
+            if(!whatTodayEatTag.getTagName().contains("不挑食")) {
+                map.put("tagId", request.getTagId());
+            }
+        }
+        if(ObjectUtil.isNotNull(request.getLatitude())){
+            map.put("latitude",request.getLatitude());
+        }
+        if(ObjectUtil.isNotNull(request.getLongitude())){
+            map.put("longitude",request.getLongitude());
+        }
+        List<ProductFrontResponse> productFrontResponseList=dao.getWhatTodayEatByTag(map);
+        Collections.shuffle(productFrontResponseList, new Random(100));
+        return CollectionUtil.isNotEmpty(productFrontResponseList) && productFrontResponseList.size()>=2?productFrontResponseList.subList(0,2): productFrontResponseList;
+    }
 }
 

+ 318 - 0
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/RiderBalanceRecordServiceImpl.java

@@ -0,0 +1,318 @@
+package com.zbkj.service.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.URLUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.zbkj.common.constants.BrokerageRecordConstants;
+import com.zbkj.common.constants.Constants;
+import com.zbkj.common.constants.DateConstants;
+import com.zbkj.common.model.rider.RiderBalanceRecord;
+import com.zbkj.common.model.user.User;
+import com.zbkj.common.model.user.UserBrokerageRecord;
+import com.zbkj.common.page.CommonPage;
+import com.zbkj.common.request.PageParamRequest;
+import com.zbkj.common.request.RetailStoreSubUserSearchRequest;
+import com.zbkj.common.request.UserRecordSearchRequest;
+import com.zbkj.common.utils.ArrayUtil;
+import com.zbkj.common.utils.CrmebDateUtil;
+import com.zbkj.common.vo.DateLimitUtilVo;
+import com.zbkj.service.dao.RiderBalanceRecordDao;
+import com.zbkj.service.dao.UserBrokerageRecordDao;
+import com.zbkj.service.service.RiderBalanceRecordService;
+import com.zbkj.service.service.UserBrokerageRecordService;
+import com.zbkj.service.service.UserService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.support.TransactionTemplate;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 用户佣金记录服务接口实现类
+ * +----------------------------------------------------------------------
+ * | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+ * +----------------------------------------------------------------------
+ * | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+ * +----------------------------------------------------------------------
+ * | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+ * +----------------------------------------------------------------------
+ * | Author: CRMEB Team <admin@crmeb.com>
+ * +----------------------------------------------------------------------
+ */
+@Service
+public class RiderBalanceRecordServiceImpl extends ServiceImpl<RiderBalanceRecordDao, RiderBalanceRecord> implements RiderBalanceRecordService {
+
+    private static final Logger logger = LoggerFactory.getLogger(RiderBalanceRecordServiceImpl.class);
+
+    @Resource
+    private RiderBalanceRecordDao dao;
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private TransactionTemplate transactionTemplate;
+
+    /**
+     * 通过订单号获取佣金记录
+     *
+     * @param orderNo 订单号
+     * @return List
+     */
+    @Override
+    public List<RiderBalanceRecord> getByOrderNo(String orderNo) {
+        LambdaQueryWrapper<RiderBalanceRecord> lqw = Wrappers.lambdaQuery();
+        lqw.eq(RiderBalanceRecord::getLinkNo, orderNo);
+        return dao.selectList(lqw);
+    }
+
+    /**
+     * 根据订单编号获取记录列表
+     *
+     * @param linkNo   关联单号
+     * @param linkType 关联类型
+     * @return 记录列表
+     */
+    @Override
+    public List<RiderBalanceRecord> findListByLinkNoAndLinkType(String linkNo, String linkType) {
+        LambdaQueryWrapper<RiderBalanceRecord> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(RiderBalanceRecord::getLinkNo, linkNo);
+        lqw.eq(RiderBalanceRecord::getLinkType, linkType);
+        return dao.selectList(lqw);
+    }
+
+    /**
+     * 佣金解冻
+     */
+    @Override
+    public void brokerageThaw() {
+        // 查询需要解冻的佣金
+        List<RiderBalanceRecord> thawList = findThawList();
+        if (CollUtil.isEmpty(thawList)) {
+            return;
+        }
+        for (RiderBalanceRecord record : thawList) {
+            // 查询对应的用户
+            User user = userService.getById(record.getUid());
+            if (ObjectUtil.isNull(user)) {
+                continue;
+            }
+            record.setStatus(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE);
+            // 计算佣金余额
+            BigDecimal balance = user.getBrokeragePrice().add(record.getPrice());
+            record.setBalance(balance);
+            record.setUpdateTime(DateUtil.date());
+            // 分佣
+            Boolean execute = transactionTemplate.execute(e -> {
+                updateById(record);
+                userService.updateBrokerage(record.getUid(), record.getPrice(), Constants.OPERATION_TYPE_ADD);
+                return Boolean.TRUE;
+            });
+            if (!execute) {
+                logger.error(StrUtil.format("解冻处理—数据库出错,记录id = {}", record.getId()));
+            }
+        }
+
+    }
+
+    /**
+     * 获取佣金明细列表根据uid
+     *
+     * @param uid              uid
+     * @param pageParamRequest 分页参数
+     * @return PageInfo
+     */
+    @Override
+    public PageInfo<RiderBalanceRecord> findDetailListByUid(Integer uid, PageParamRequest pageParamRequest) {
+        Page<RiderBalanceRecord> recordPage = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit());
+        QueryWrapper<RiderBalanceRecord> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("uid", uid);
+        queryWrapper.eq("status", BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE);
+        queryWrapper.orderByDesc("id");
+        List<RiderBalanceRecord> recordList = dao.selectList(queryWrapper);
+        return CommonPage.copyPageInfo(recordPage, recordList);
+    }
+
+    /**
+     * 获取累计条数
+     *
+     * @param uid 用户uid
+     * @return Integer
+     */
+    @Override
+    public Integer getSpreadCountByUid(Integer uid) {
+        LambdaQueryWrapper<RiderBalanceRecord> lqw = new LambdaQueryWrapper<>();
+        lqw.select(RiderBalanceRecord::getId);
+        lqw.eq(RiderBalanceRecord::getUid, uid);
+        lqw.eq(RiderBalanceRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER);
+        lqw.eq(RiderBalanceRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE);
+        return dao.selectCount(lqw);
+    }
+
+    /**
+     * 获取推广记录列表
+     *
+     * @param uid              用户uid
+     * @param pageParamRequest 分页参数
+     * @return List
+     */
+    @Override
+    public List<RiderBalanceRecord> findSpreadListByUid(Integer uid, PageParamRequest pageParamRequest) {
+        PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit());
+        LambdaQueryWrapper<RiderBalanceRecord> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(RiderBalanceRecord::getUid, uid);
+        lqw.eq(RiderBalanceRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER);
+        lqw.eq(RiderBalanceRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE);
+        lqw.orderByDesc(RiderBalanceRecord::getUpdateTime);
+        return dao.selectList(lqw);
+    }
+
+    /**
+     * 获取录列表
+     * @param request 用户uid
+     * @param pageParamRequest 分页参数
+     * @return PageInfo
+     */
+    @Override
+    public PageInfo<RiderBalanceRecord> findAdminSpreadListByUid(RetailStoreSubUserSearchRequest request, PageParamRequest pageParamRequest) {
+        Page<Object> page = PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit());
+        LambdaQueryWrapper<RiderBalanceRecord> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(RiderBalanceRecord::getUid, request.getUid());
+        lqw.eq(RiderBalanceRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER);
+        lqw.eq(RiderBalanceRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE);
+
+        if (StrUtil.isNotBlank(request.getKeywords())) {
+            String keywords = URLUtil.decode(request.getKeywords());
+            lqw.like(RiderBalanceRecord::getLinkNo, keywords);
+        }
+        if (StrUtil.isNotBlank(request.getDateLimit())) {
+            DateLimitUtilVo dateLimit = CrmebDateUtil.getDateLimit(request.getDateLimit());
+            lqw.between(RiderBalanceRecord::getUpdateTime, dateLimit.getStartTime(), dateLimit.getEndTime());
+        }
+        lqw.orderByDesc(RiderBalanceRecord::getUpdateTime);
+        return CommonPage.copyPageInfo(page, dao.selectList(lqw));
+    }
+
+    /**
+     * 获取月份对应的推广订单数
+     *
+     * @param uid       用户uid
+     * @param monthList 月份列表
+     * @return Map
+     */
+    @Override
+    public Map<String, Integer> getSpreadCountByUidAndMonth(Integer uid, List<String> monthList) {
+        QueryWrapper<RiderBalanceRecord> queryWrapper = new QueryWrapper<>();
+        queryWrapper.select("count(id) as uid, update_time");
+        queryWrapper.eq("uid", uid);
+        queryWrapper.eq("link_type", BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER);
+        queryWrapper.eq("status", BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE);
+        queryWrapper.apply(StrUtil.format("left(update_time, 7) in ({})", ArrayUtil.strListToSqlJoin(monthList)));
+        queryWrapper.groupBy("left(update_time, 7)");
+        List<RiderBalanceRecord> list = dao.selectList(queryWrapper);
+        Map<String, Integer> map = CollUtil.newHashMap();
+        if (CollUtil.isEmpty(list)) {
+            return map;
+        }
+        list.forEach(record -> {
+            map.put(CrmebDateUtil.dateToStr(record.getUpdateTime(), DateConstants.DATE_FORMAT_MONTH), record.getUid());
+        });
+        return map;
+    }
+
+
+    /**
+     * 获取冻结期佣金
+     *
+     * @param uid uid
+     * @return BigDecimal
+     */
+    @Override
+    public BigDecimal getFreezePrice(Integer uid) {
+        LambdaQueryWrapper<RiderBalanceRecord> lqw = new LambdaQueryWrapper<>();
+        lqw.select(RiderBalanceRecord::getPrice);
+        lqw.eq(RiderBalanceRecord::getUid, uid);
+        lqw.eq(RiderBalanceRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER);
+        lqw.in(RiderBalanceRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_FROZEN, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_CREATE);
+        List<RiderBalanceRecord> list = dao.selectList(lqw);
+        if (CollUtil.isEmpty(list)) {
+            return BigDecimal.ZERO;
+        }
+        return list.stream().map(RiderBalanceRecord::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+    }
+
+    /**
+     * 获取已结算佣金
+     *
+     * @param uid uid
+     * @return BigDecimal
+     */
+    @Override
+    public BigDecimal getSettledCommission(Integer uid) {
+        LambdaQueryWrapper<RiderBalanceRecord> lqw = new LambdaQueryWrapper<>();
+        lqw.select(RiderBalanceRecord::getPrice);
+        lqw.eq(RiderBalanceRecord::getUid, uid);
+        lqw.eq(RiderBalanceRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_WITHDRAW);
+        lqw.eq(RiderBalanceRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE);
+        List<RiderBalanceRecord> list = dao.selectList(lqw);
+        if (CollUtil.isEmpty(list)) {
+            return BigDecimal.ZERO;
+        }
+        return list.stream().map(RiderBalanceRecord::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
+    }
+
+    /**
+     * 根据关联单号获取唯一记录
+     *
+     * @param linkNo 关联单号
+     * @return UserBrokerageRecord
+     */
+    @Override
+    public RiderBalanceRecord getOneByLinkNo(String linkNo) {
+        LambdaQueryWrapper<RiderBalanceRecord> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(RiderBalanceRecord::getLinkNo, linkNo);
+        return dao.selectOne(lqw);
+    }
+
+    /**
+     * 获取用户佣金记录(管理端)
+     */
+    @Override
+    public PageInfo<RiderBalanceRecord> getAdminUserBrokerageRecord(UserRecordSearchRequest request) {
+        Page<RiderBalanceRecord> page = PageHelper.startPage(request.getPage(), request.getLimit());
+        LambdaQueryWrapper<RiderBalanceRecord> lqw = Wrappers.lambdaQuery();
+        lqw.eq(RiderBalanceRecord::getUid, request.getUserId());
+        lqw.orderByDesc(RiderBalanceRecord::getId);
+        List<RiderBalanceRecord> recordList = dao.selectList(lqw);
+        return CommonPage.copyPageInfo(page, recordList);
+    }
+
+    /**
+     * 获取需要解冻的记录列表
+     *
+     * @return 记录列表
+     */
+    private List<RiderBalanceRecord> findThawList() {
+        LambdaQueryWrapper<RiderBalanceRecord> lqw = new LambdaQueryWrapper<>();
+        lqw.le(RiderBalanceRecord::getThawTime, System.currentTimeMillis());
+        lqw.eq(RiderBalanceRecord::getLinkType, BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_ORDER);
+        lqw.eq(RiderBalanceRecord::getType, BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_ADD);
+        lqw.eq(RiderBalanceRecord::getStatus, BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_FROZEN);
+        return dao.selectList(lqw);
+    }
+}
+

+ 2 - 9
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/RiderOrderServiceImpl.java

@@ -16,12 +16,8 @@ import com.zbkj.common.constants.OrderConstants;
 import com.zbkj.common.constants.OrderStatusConstants;
 import com.zbkj.common.constants.UserConstants;
 import com.zbkj.common.exception.CrmebException;
-import com.zbkj.common.model.admin.SystemAdmin;
 import com.zbkj.common.model.express.ExpressOrder;
 import com.zbkj.common.model.order.MerchantOrder;
-import com.zbkj.common.model.order.Order;
-import com.zbkj.common.model.order.RefundOrder;
-import com.zbkj.common.model.order.RefundOrderInfo;
 import com.zbkj.common.model.rider.Rider;
 import com.zbkj.common.model.rider.RiderFeeConfig;
 import com.zbkj.common.model.rider.RiderOrder;
@@ -29,8 +25,6 @@ import com.zbkj.common.page.CommonPage;
 import com.zbkj.common.request.OrderTabsHeaderRequest;
 import com.zbkj.common.request.rider.RiderOrderCreateRequest;
 import com.zbkj.common.request.rider.RiderOrderSearchRequest;
-import com.zbkj.common.response.MerchantRefundOrderPageResponse;
-import com.zbkj.common.response.OrderCountItemResponse;
 import com.zbkj.common.response.rider.RiderOrderCountItemResponse;
 import com.zbkj.common.response.rider.RiderOrderResponse;
 import com.zbkj.common.result.CommonResultCode;
@@ -38,7 +32,7 @@ import com.zbkj.common.result.OrderResultCode;
 import com.zbkj.common.utils.CrmebDateUtil;
 import com.zbkj.common.utils.ValidateFormUtil;
 import com.zbkj.common.vo.DateLimitUtilVo;
-import com.zbkj.service.ExpressOrderService;
+import com.zbkj.service.service.ExpressOrderService;
 import com.zbkj.service.dao.RiderOrderDao;
 import com.zbkj.service.service.*;
 import org.apache.commons.lang3.StringUtils;
@@ -49,10 +43,9 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import com.zbkj.common.utils.GeoUtils;
+
 import org.springframework.transaction.support.TransactionTemplate;
 
 @Service

+ 230 - 1
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/RiderServiceImpl.java

@@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.URLUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.Page;
@@ -15,21 +16,30 @@ import com.zbkj.common.config.CrmebConfig;
 import com.zbkj.common.constants.*;
 import com.zbkj.common.exception.CrmebException;
 import com.zbkj.common.model.admin.SystemAdmin;
+import com.zbkj.common.model.bill.Bill;
 import com.zbkj.common.model.rider.Rider;
 import com.zbkj.common.model.rider.RiderApply;
+import com.zbkj.common.model.rider.RiderBalanceRecord;
 import com.zbkj.common.model.rider.RiderFeeConfig;
 import com.zbkj.common.model.system.SystemNotification;
 import com.zbkj.common.model.user.User;
+import com.zbkj.common.model.user.UserBalanceRecord;
+import com.zbkj.common.model.user.UserBrokerageRecord;
+import com.zbkj.common.model.user.UserClosing;
 import com.zbkj.common.page.CommonPage;
+import com.zbkj.common.request.BrokerageToYueRequest;
 import com.zbkj.common.request.PageParamRequest;
+import com.zbkj.common.request.UserClosingApplyRequest;
 import com.zbkj.common.request.UserUpdateRequest;
 import com.zbkj.common.request.rider.*;
 import com.zbkj.common.response.*;
+import com.zbkj.common.response.rider.RiderAccountResponse;
 import com.zbkj.common.response.rider.RiderPageResponse;
 import com.zbkj.common.response.rider.RiderPlatformDetailResponse;
 import com.zbkj.common.response.rider.RiderSettledResponse;
 import com.zbkj.common.result.CommonResultCode;
 import com.zbkj.common.result.MerchantResultCode;
+import com.zbkj.common.result.UserResultCode;
 import com.zbkj.common.utils.*;
 import com.zbkj.common.vo.DateLimitUtilVo;
 import com.zbkj.common.vo.LoginUserVo;
@@ -44,9 +54,12 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.support.TransactionTemplate;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static java.math.BigDecimal.ZERO;
+
 /**
  * StoreServiceImpl 接口实现
  * +----------------------------------------------------------------------
@@ -81,6 +94,16 @@ public class RiderServiceImpl extends ServiceImpl<RiderDao, Rider> implements Ri
     private SystemAttachmentService systemAttachmentService;
     @Autowired
     private SystemNotificationService systemNotificationService;
+    @Autowired
+    private SystemConfigService systemConfigService;
+    @Autowired
+    private UserClosingService userClosingService;
+    @Autowired
+    private RiderBalanceRecordService riderBalanceRecordService;
+    @Autowired
+    private BillService billService;
+    @Autowired
+    private UserBalanceRecordService userBalanceRecordService;
 
     private final Logger logger = LoggerFactory.getLogger(RiderServiceImpl.class);
 
@@ -203,6 +226,155 @@ public class RiderServiceImpl extends ServiceImpl<RiderDao, Rider> implements Ri
         return response;
     }
 
+    @Override
+    public RiderAccountResponse getMyAccount() {
+        User user = userService.getInfo();
+        Rider rider= getByUIdException(user.getId());
+        // 冻结的佣金
+        BigDecimal freezePrice = BigDecimal.ZERO;
+        //累计已提取
+        BigDecimal settledCommissionPrice = riderBalanceRecordService.getSettledCommission(user.getId());
+        RiderAccountResponse response = new RiderAccountResponse();
+        response.setFreezePrice(freezePrice);
+        response.setSettledCommissionPrice(settledCommissionPrice);
+        response.setNowMoney(rider.getBalance());
+        return response;
+    }
+
+    @Override
+    public Boolean userClosingApply(UserClosingApplyRequest request) {
+        userClosingApplyValidate(request);
+        Rider user = getByUIdException(userService.getUserId());
+        if (ObjectUtil.isNull(user)) {
+            throw new CrmebException(UserResultCode.USER_NOT_EXIST);
+        }
+        BigDecimal money = user.getBalance();//可提现总金额
+        if (money.compareTo(ZERO) < 1) {
+            throw new CrmebException(UserResultCode.USER_BROKERAGE_INSUFFICIENT);
+        }
+
+        if (money.compareTo(request.getClosingPrice()) < 0) {
+            throw new CrmebException(UserResultCode.USER_BROKERAGE_INSUFFICIENT.setMessage("你当前最多可提现 " + money + "元"));
+        }
+
+        UserClosing userClosing = new UserClosing();
+        userClosing.setClosingWay(1);
+        userClosing.setClosingType(request.getType());
+        BeanUtils.copyProperties(request, userClosing);
+        userClosing.setUid(user.getUid());
+        userClosing.setBalance(money.subtract(request.getClosingPrice()));
+        userClosing.setClosingNo(CrmebUtil.getOrderNo(OrderConstants.CLOSING_ORDER_PREFIX_USER));
+        //存入银行名称
+        if (StrUtil.isNotBlank(userClosing.getPaymentCode())) {
+            userClosing.setPaymentCode(systemAttachmentService.clearPrefix(userClosing.getPaymentCode()));
+        }
+
+        // 添加佣金记录
+        RiderBalanceRecord brokerageRecord = new RiderBalanceRecord();
+        brokerageRecord.setUid(user.getUid());
+        brokerageRecord.setLinkType(BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_WITHDRAW);
+        brokerageRecord.setType(BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_SUB);
+        brokerageRecord.setTitle(BrokerageRecordConstants.BROKERAGE_RECORD_TITLE_WITHDRAW_APPLY);
+        brokerageRecord.setPrice(userClosing.getClosingPrice());
+        brokerageRecord.setBalance(money.subtract(userClosing.getClosingPrice()));
+        brokerageRecord.setMark(StrUtil.format("提现申请扣除收益{}", userClosing.getClosingPrice()));
+        brokerageRecord.setStatus(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_WITHDRAW);
+        brokerageRecord.setCreateTime(DateUtil.date());
+        brokerageRecord.setLinkNo(userClosing.getClosingNo());
+
+        Boolean execute = transactionTemplate.execute(e -> {
+            // 保存提现记录
+            userClosingService.save(userClosing);
+            // 添加佣金记录
+            riderBalanceRecordService.save(brokerageRecord);
+            return Boolean.TRUE;
+        });
+        // 此处可添加提现申请通知
+
+        return execute;
+    }
+
+    @Override
+    public UserClosingConfigResponse getUserClosingConfig() {
+        Rider rider=getByUIdException(userService.getUserId());
+        // 提现最低金额
+        String minPrice = systemConfigService.getValueByKeyException(SysConfigConstants.RETAIL_STORE_EXTRACT_MIN_PRICE);
+        // 冻结天数
+        String freezeDay = systemConfigService.getValueByKeyException(SysConfigConstants.RETAIL_STORE_BROKERAGE_FREEZING_TIME);
+        // 可提现佣金
+        BigDecimal brokerage = rider.getBalance();
+        // 冻结佣金
+        BigDecimal freezeBrokerage = riderBalanceRecordService.getFreezePrice(rider.getUid());
+        // 获取提现银行
+        String bank = systemConfigService.getValueByKeyException(SysConfigConstants.RETAIL_STORE_EXTRACT_BANK);
+        UserClosingConfigResponse response = new UserClosingConfigResponse();
+        response.setMinPrice(minPrice);
+        response.setBrokerage(brokerage);
+        response.setFreezeBrokerage(freezeBrokerage);
+        response.setFreezeDay(freezeDay);
+        if (StrUtil.isNotBlank(bank)) {
+            response.setBankList(StrUtil.splitTrim(bank, ","));
+        }
+        return response;
+    }
+
+    @Override
+    public Boolean brokerageToYue(BrokerageToYueRequest request) {
+        Rider rider=getByUIdException(userService.getUserId());
+        User user = userService.getInfo();
+        if (rider.getBalance().compareTo(ZERO) <= 0) {
+            throw new CrmebException(UserResultCode.USER_BROKERAGE_INSUFFICIENT);
+        }
+        if (rider.getBalance().compareTo(request.getPrice()) < 0) {
+            throw new CrmebException(UserResultCode.USER_BROKERAGE_INSUFFICIENT);
+        }
+        BigDecimal price = request.getPrice();
+
+        RiderBalanceRecord brokerageRecord = new RiderBalanceRecord();
+        brokerageRecord.setUid(rider.getUid());
+        brokerageRecord.setLinkNo("0");
+        brokerageRecord.setLinkType(BrokerageRecordConstants.BROKERAGE_RECORD_LINK_TYPE_YUE);
+        brokerageRecord.setType(BrokerageRecordConstants.BROKERAGE_RECORD_TYPE_SUB);
+        brokerageRecord.setTitle(BrokerageRecordConstants.BROKERAGE_RECORD_TITLE_BROKERAGE_YUE);
+        brokerageRecord.setPrice(price);
+        brokerageRecord.setBalance(rider.getBalance().subtract(price));
+        brokerageRecord.setMark(StrUtil.format("收益转余额,减少{}", price));
+        brokerageRecord.setStatus(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE);
+        brokerageRecord.setCreateTime(DateUtil.date());
+
+        UserBalanceRecord balanceRecord = new UserBalanceRecord();
+        balanceRecord.setUid(rider.getUid());
+        balanceRecord.setLinkId("0");
+        balanceRecord.setLinkType(BalanceRecordConstants.BALANCE_RECORD_LINK_TYPE_BROKERAGE);
+        balanceRecord.setType(BalanceRecordConstants.BALANCE_RECORD_TYPE_ADD);
+        balanceRecord.setAmount(price);
+        balanceRecord.setBalance(user.getNowMoney().add(price));
+        balanceRecord.setRemark(StrUtil.format(BalanceRecordConstants.BALANCE_RECORD_REMARK_BROKERAGE, price));
+
+        Bill bill = new Bill();
+        bill.setUid(user.getId());
+        bill.setPm(BillConstants.BILL_PM_ADD);
+        bill.setAmount(price);
+        bill.setType(BillConstants.BILL_TYPE_SYSTEM);
+        bill.setMark(StrUtil.format("收益转余额,用户收益转余额{}元", price));
+        Boolean execute = transactionTemplate.execute(e -> {
+            Boolean result = userService.incomeToYue(user.getId(), brokerageRecord.getPrice());
+            if (!result) {
+                e.setRollbackOnly();
+                return Boolean.FALSE;
+            }
+            updateBalance(user.getId(),price,Constants.OPERATION_TYPE_SUBTRACT);
+            billService.save(bill);
+            userBalanceRecordService.save(balanceRecord);
+            riderBalanceRecordService.save(brokerageRecord);
+            return Boolean.TRUE;
+        });
+        if (!execute) {
+            throw new CrmebException("收益转余额失败");
+        }
+        return execute;
+    }
+
     /**
      * 修改骑手手机号
      *
@@ -338,7 +510,28 @@ public class RiderServiceImpl extends ServiceImpl<RiderDao, Rider> implements Ri
         }).collect(Collectors.toList());
         return CommonPage.copyPageInfo(pageInfo, responseList);
     }
-
+    /**
+     * 更新用户佣金
+     *
+     * @param uid   用户ID
+     * @param price 金额
+     * @param type  增加add、扣减sub
+     * @return Boolean
+     */
+    @Override
+    public Boolean updateBalance(Integer uid, BigDecimal price, String type) {
+        UpdateWrapper<Rider> wrapper = Wrappers.update();
+        if (type.equals(Constants.OPERATION_TYPE_ADD)) {
+            wrapper.setSql(StrUtil.format("balance = balance + {}", price));
+        } else {
+            wrapper.setSql(StrUtil.format("balance = balance - {}", price));
+        }
+        wrapper.eq("uid", uid);
+        if (type.equals(Constants.OPERATION_TYPE_SUBTRACT)) {
+            wrapper.apply(StrUtil.format(" balance - {} >= 0", price));
+        }
+        return update(wrapper);
+    }
     /**
      * 检查骑手手机号是否重复
      *
@@ -426,5 +619,41 @@ public class RiderServiceImpl extends ServiceImpl<RiderDao, Rider> implements Ri
         }
         return rider.getId()!=null&&rider.getId()>0?updateById(rider):save(rider);
     }
+    /**
+     * 用胡结算申请参数校验
+     */
+    private void userClosingApplyValidate(UserClosingApplyRequest request) {
+        if (request.getType().equals(ClosingConstant.CLOSING_TYPE_BANK)) {
+            if (StrUtil.isBlank(request.getCardholder())) {
+                throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "请填写持卡人姓名");
+            }
+            if (StrUtil.isBlank(request.getBankName())) {
+                throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "请选择银行");
+            }
+            if (StrUtil.isBlank(request.getBankCardNo())) {
+                throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "请填写银行卡卡号");
+            }
+        }
+        if (request.getType().equals(ClosingConstant.CLOSING_TYPE_ALIPAY)) {
+            if (StrUtil.isBlank(request.getAlipayAccount())) {
+                throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "请填写支付宝账号");
+            }
+        }
+        if (request.getType().equals(ClosingConstant.CLOSING_TYPE_WECHAT)) {
+            if (StrUtil.isBlank(request.getWechatNo())) {
+                throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "请填写微信号");
+            }
+            if (StrUtil.isBlank(request.getPaymentCode())) {
+                throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "请填写微信收款码");
+            }
+            if (StrUtil.isBlank(request.getRealName())) {
+                throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "请填写真实姓名");
+            }
+        }
+        String minPrice = systemConfigService.getValueByKeyException(SysConfigConstants.RETAIL_STORE_EXTRACT_MIN_PRICE);
+        if (request.getClosingPrice().compareTo(new BigDecimal(minPrice)) < 0) {
+            throw new CrmebException(CommonResultCode.VALIDATE_FAILED, StrUtil.format("最低提现金额{}元", minPrice));
+        }
+    }
 }
 

+ 1 - 5
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/SecondHandOrderDetailServiceImpl.java

@@ -12,17 +12,13 @@ import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.zbkj.common.constants.OrderConstants;
-import com.zbkj.common.model.order.Order;
-import com.zbkj.common.model.order.OrderDetail;
 import com.zbkj.common.model.secondhand.SecondHandOrder;
 import com.zbkj.common.model.secondhand.SecondHandOrderDetail;
 import com.zbkj.common.page.CommonPage;
 import com.zbkj.common.request.CommonSearchRequest;
 import com.zbkj.common.request.PageParamRequest;
-import com.zbkj.service.dao.OrderDetailDao;
 import com.zbkj.service.dao.SecondHandOrderDetailDao;
-import com.zbkj.service.service.OrderDetailService;
-import com.zbkj.service.service.OrderService;
+import com.zbkj.service.service.SecondHandOrderDetailService;
 import com.zbkj.service.service.SecondHandOrderService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;

+ 0 - 2
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/SecondHandPayServiceImpl.java

@@ -11,7 +11,6 @@ import com.alibaba.fastjson.JSONObject;
 import com.zbkj.common.config.CrmebConfig;
 import com.zbkj.common.constants.*;
 import com.zbkj.common.exception.CrmebException;
-import com.zbkj.common.model.express.ExpressOrder;
 import com.zbkj.common.model.secondhand.SecondHandOrder;
 import com.zbkj.common.model.secondhand.SecondHandOrderDetail;
 import com.zbkj.common.model.secondhand.SecondHandProd;
@@ -27,7 +26,6 @@ import com.zbkj.common.result.OrderResultCode;
 import com.zbkj.common.result.UserResultCode;
 import com.zbkj.common.utils.*;
 import com.zbkj.common.vo.*;
-import com.zbkj.service.ExpressOrderService;
 import com.zbkj.service.service.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

+ 0 - 2
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/SecondHandRefundOrderManagerServiceImpl.java

@@ -16,7 +16,6 @@ import com.github.pagehelper.PageInfo;
 import com.zbkj.common.constants.*;
 import com.zbkj.common.exception.CrmebException;
 import com.zbkj.common.model.admin.SystemAdmin;
-import com.zbkj.common.model.merchant.MerchantAddress;
 import com.zbkj.common.model.order.*;
 import com.zbkj.common.model.secondhand.SecondHandOrder;
 import com.zbkj.common.model.secondhand.SecondHandOrderDetail;
@@ -34,7 +33,6 @@ import com.zbkj.common.utils.*;
 import com.zbkj.common.vo.DateLimitUtilVo;
 import com.zbkj.common.vo.RefundOrderDetailOrderInfoVo;
 import com.zbkj.common.vo.WxRefundVo;
-import com.zbkj.service.dao.RefundOrderDao;
 import com.zbkj.service.dao.secondhand.SecondHandRefundOrderDao;
 import com.zbkj.service.service.*;
 import org.slf4j.Logger;

+ 77 - 5
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserClosingServiceImpl.java

@@ -17,6 +17,8 @@ import com.zbkj.common.constants.ClosingConstant;
 import com.zbkj.common.constants.Constants;
 import com.zbkj.common.exception.CrmebException;
 import com.zbkj.common.model.admin.SystemAdmin;
+import com.zbkj.common.model.rider.Rider;
+import com.zbkj.common.model.rider.RiderBalanceRecord;
 import com.zbkj.common.model.user.User;
 import com.zbkj.common.model.user.UserBrokerageRecord;
 import com.zbkj.common.model.user.UserClosing;
@@ -27,10 +29,7 @@ import com.zbkj.common.utils.CrmebDateUtil;
 import com.zbkj.common.utils.SecurityUtil;
 import com.zbkj.common.vo.DateLimitUtilVo;
 import com.zbkj.service.dao.UserClosingDao;
-import com.zbkj.service.service.SystemAttachmentService;
-import com.zbkj.service.service.UserBrokerageRecordService;
-import com.zbkj.service.service.UserClosingService;
-import com.zbkj.service.service.UserService;
+import com.zbkj.service.service.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.support.TransactionTemplate;
@@ -72,6 +71,12 @@ public class UserClosingServiceImpl extends ServiceImpl<UserClosingDao, UserClos
     @Autowired
     private UserBrokerageRecordService userBrokerageRecordService;
 
+    @Autowired
+    private RiderBalanceRecordService riderBalanceRecordService;
+    @Autowired
+    private RiderService riderService;
+
+
     /**
      * 根据uid获取分页结算记录
      *
@@ -159,7 +164,42 @@ public class UserClosingServiceImpl extends ServiceImpl<UserClosingDao, UserClos
         }
         userClosing.setAuditId(admin.getId());
         userClosing.setAuditTime(DateUtil.date());
+//
+//        UserBrokerageRecord brokerageRecord = userBrokerageRecordService.getOneByLinkNo(userClosing.getClosingNo());
+//        // 拒绝
+//        if (request.getAuditStatus().equals(ClosingConstant.CLOSING_AUDIT_STATUS_FAIL)) {//未通过时恢复用户总金额
+//            userClosing.setRefusalReason(request.getRefusalReason());
+//            userClosing.setAuditStatus(ClosingConstant.CLOSING_AUDIT_STATUS_FAIL);
+//            // 添加提现申请拒绝佣金记录
+//            brokerageRecord.setStatus(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_INVALIDATION);
+//            return transactionTemplate.execute(e -> {
+//                updateById(userClosing);
+//                userBrokerageRecordService.updateById(brokerageRecord);
+//                return Boolean.TRUE;
+//            });
+//        }
+//        // 同意
+//        userClosing.setAuditStatus(ClosingConstant.CLOSING_AUDIT_STATUS_SUCCESS);
+//        if (user.getBrokeragePrice().compareTo(userClosing.getClosingPrice()) < 0) {
+//            throw new CrmebException(UserResultCode.USER_BROKERAGE_INSUFFICIENT);
+//        }
+//        brokerageRecord.setStatus(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE);
+//        return transactionTemplate.execute(e -> {
+//            updateById(userClosing);
+//            // 修改用户佣金
+//            Boolean result = userService.updateBrokerage(user.getId(), userClosing.getClosingPrice(), Constants.OPERATION_TYPE_SUBTRACT);
+//            if (!result) {
+//                e.setRollbackOnly();
+//                return Boolean.FALSE;
+//            }
+//            userBrokerageRecordService.updateById(brokerageRecord);
+//            return Boolean.TRUE;
+//        });
+        return  1==userClosing.getClosingWay()? incomeAudit(request,userClosing,user):brokerageAudit(request, userClosing, user);
 
+    }
+
+    private Boolean brokerageAudit(ClosingAuditRequest request, UserClosing userClosing, User user){
         UserBrokerageRecord brokerageRecord = userBrokerageRecordService.getOneByLinkNo(userClosing.getClosingNo());
         // 拒绝
         if (request.getAuditStatus().equals(ClosingConstant.CLOSING_AUDIT_STATUS_FAIL)) {//未通过时恢复用户总金额
@@ -191,7 +231,39 @@ public class UserClosingServiceImpl extends ServiceImpl<UserClosingDao, UserClos
             return Boolean.TRUE;
         });
     }
-
+    private Boolean incomeAudit(ClosingAuditRequest request, UserClosing userClosing, User user){
+        RiderBalanceRecord brokerageRecord = riderBalanceRecordService.getOneByLinkNo(userClosing.getClosingNo());
+        // 拒绝
+        if (request.getAuditStatus().equals(ClosingConstant.CLOSING_AUDIT_STATUS_FAIL)) {//未通过时恢复用户总金额
+            userClosing.setRefusalReason(request.getRefusalReason());
+            userClosing.setAuditStatus(ClosingConstant.CLOSING_AUDIT_STATUS_FAIL);
+            // 添加提现申请拒绝佣金记录
+            brokerageRecord.setStatus(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_INVALIDATION);
+            return transactionTemplate.execute(e -> {
+                updateById(userClosing);
+                riderBalanceRecordService.updateById(brokerageRecord);
+                return Boolean.TRUE;
+            });
+        }
+        // 同意
+        Rider rider=riderService.getByUIdException(user.getId());
+        userClosing.setAuditStatus(ClosingConstant.CLOSING_AUDIT_STATUS_SUCCESS);
+        if (rider.getBalance().compareTo(userClosing.getClosingPrice()) < 0) {
+            throw new CrmebException(UserResultCode.USER_BROKERAGE_INSUFFICIENT);
+        }
+        brokerageRecord.setStatus(BrokerageRecordConstants.BROKERAGE_RECORD_STATUS_COMPLETE);
+        return transactionTemplate.execute(e -> {
+            updateById(userClosing);
+            // 修改用户佣金
+            Boolean result = riderService.updateBalance(user.getId(), userClosing.getClosingPrice(), Constants.OPERATION_TYPE_SUBTRACT);
+            if (!result) {
+                e.setRollbackOnly();
+                return Boolean.FALSE;
+            }
+            riderBalanceRecordService.updateById(brokerageRecord);
+            return Boolean.TRUE;
+        });
+    }
     /**
      * 根据结算单号查询
      *

+ 10 - 0
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserServiceImpl.java

@@ -822,6 +822,16 @@ public class UserServiceImpl extends ServiceImpl<UserDao, User> implements UserS
         return update(wrapper);
     }
 
+    @Override
+    public Boolean incomeToYue(Integer uid, BigDecimal price) {
+        UpdateWrapper<User> wrapper = Wrappers.update();
+        wrapper.setSql(StrUtil.format("now_money = now_money + {}", price));
+        //wrapper.setSql(StrUtil.format("brokerage_price = brokerage_price - {}", price));
+        wrapper.eq("id", uid);
+        //wrapper.apply(StrUtil.format(" brokerage_price - {} >= 0", price));
+        return update(wrapper);
+    }
+
     /**
      * 操作用户积分
      *

+ 209 - 0
ydd_mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/WhatTodayEatTagServiceImpl.java

@@ -0,0 +1,209 @@
+package com.zbkj.service.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.URLUtil;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.zbkj.common.config.CrmebConfig;
+import com.zbkj.common.constants.ProductConstants;
+import com.zbkj.common.exception.CrmebException;
+import com.zbkj.common.model.order.Order;
+import com.zbkj.common.model.order.OrderDetail;
+import com.zbkj.common.model.product.ProductTag;
+import com.zbkj.common.model.product.WhatTodayEatTag;
+import com.zbkj.common.model.seckill.SeckillProduct;
+import com.zbkj.common.request.PageParamRequest;
+import com.zbkj.common.request.WhatTodayEatTagRequest;
+import com.zbkj.common.request.producttag.ProductTagSearchRequest;
+import com.zbkj.common.response.ProductTagTaskItem;
+import com.zbkj.common.response.ProductTagsFrontResponse;
+import com.zbkj.common.response.productTag.ProductTagsForSearchResponse;
+import com.zbkj.common.result.CommonResultCode;
+import com.zbkj.common.result.ProductResultCode;
+import com.zbkj.common.utils.CrmebDateUtil;
+import com.zbkj.service.dao.*;
+import com.zbkj.service.service.ProductTagService;
+import com.zbkj.service.service.SystemAttachmentService;
+import com.zbkj.service.service.WhatTodayEatTagService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @author dazongzi
+ * @description ProductTagServiceImpl 接口实现
+ * @date 2023-10-11
+ */
+@Service
+public class WhatTodayEatTagServiceImpl extends ServiceImpl<WhatToayEatTagDao, WhatTodayEatTag> implements WhatTodayEatTagService {
+    private final Logger LOGGER = LoggerFactory.getLogger(ProductTagService.class);
+
+    @Autowired
+    CrmebConfig crmebConfig;
+
+    @Resource
+    private WhatToayEatTagDao dao;
+    @Resource
+    private SystemAttachmentService systemAttachmentService;
+
+
+
+
+    /**
+     * 列表
+     *
+     * @param request          请求参数
+     * @param pageParamRequest 分页类参数
+     * @return List<ProductTag>
+     * @author dazongzi
+     * @since 2023-10-11
+     */
+    @Override
+    public List<WhatTodayEatTag> getList(ProductTagSearchRequest request, PageParamRequest pageParamRequest) {
+        PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit());
+        //带 ProductTag 类的多条件查询
+        LambdaQueryWrapper<WhatTodayEatTag> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        if (StrUtil.isNotBlank(request.getKeywords())) {
+            lambdaQueryWrapper.like(WhatTodayEatTag::getTagName, URLUtil.decode(request.getKeywords()));
+        }
+        if (ObjectUtil.isNotNull(request.getStatus())) {
+            lambdaQueryWrapper.eq(WhatTodayEatTag::getStatus, request.getStatus());
+        }
+        lambdaQueryWrapper.eq(WhatTodayEatTag::getIsDel,0);
+        lambdaQueryWrapper.orderByAsc(WhatTodayEatTag::getSort);
+        List<WhatTodayEatTag> list=dao.selectList(lambdaQueryWrapper);
+        list.stream().forEach(whatTodayEatTag->{
+            whatTodayEatTag.setIcon(systemAttachmentService.clearPrefix(whatTodayEatTag.getIcon()));
+        });
+        return list;
+    }
+
+    @Override
+    public List<WhatTodayEatTag> getFrontShowList() {
+        LambdaQueryWrapper<WhatTodayEatTag> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.select(WhatTodayEatTag::getIcon,WhatTodayEatTag::getTagName,WhatTodayEatTag::getId);
+        lambdaQueryWrapper.eq(WhatTodayEatTag::getStatus,1);
+        lambdaQueryWrapper.eq(WhatTodayEatTag::getIsDel,0);
+        lambdaQueryWrapper.orderByAsc(WhatTodayEatTag::getSort);
+        List<WhatTodayEatTag> list=dao.selectList(lambdaQueryWrapper);
+        list.stream().forEach(whatTodayEatTag->{
+            whatTodayEatTag.setIcon(systemAttachmentService.clearPrefix(whatTodayEatTag.getIcon()));
+        });
+        return list;
+    }
+
+    @Override
+    public List<WhatTodayEatTag> getAdminList() {
+        LambdaQueryWrapper<WhatTodayEatTag> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(WhatTodayEatTag::getStatus,1);
+        lambdaQueryWrapper.eq(WhatTodayEatTag::getIsDel,0);
+        lambdaQueryWrapper.notLike(WhatTodayEatTag::getTagName,"不挑食");
+        lambdaQueryWrapper.orderByDesc(WhatTodayEatTag::getSort);
+        return dao.selectList(lambdaQueryWrapper);
+    }
+
+    /**
+     * 编辑商品标签
+     *
+     * @param productTag 标签对象
+     * @return 编辑结果
+     */
+    @Override
+    public Boolean edit(WhatTodayEatTagRequest productTag) {
+        // 检查标签名称是否存在
+        List<WhatTodayEatTag> exitProductTags = checkTagNameOnlyOne(productTag);
+        if (CollUtil.isNotEmpty(exitProductTags)) {
+            List<WhatTodayEatTag> seamTagNameList = exitProductTags.stream().filter(tag -> tag.getTagName().equals(productTag.getTagName())).collect(Collectors.toList());
+            if (CollUtil.isNotEmpty(seamTagNameList)) {
+                List<WhatTodayEatTag> otherNameSeam = seamTagNameList.stream().filter(tag -> !tag.getId().equals(productTag.getId())).collect(Collectors.toList());
+                if (CollUtil.isNotEmpty(otherNameSeam)) {
+                    throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "标签名称已经存在!");
+                }
+            }
+        }
+        WhatTodayEatTag forProductTagUpdate = new WhatTodayEatTag();
+        forProductTagUpdate.setId(productTag.getId());
+        forProductTagUpdate.setSort(productTag.getSort());
+        forProductTagUpdate.setStatus(productTag.getStatus());
+        forProductTagUpdate.setTagName(productTag.getTagName());
+        forProductTagUpdate.setIcon(productTag.getIcon());
+        return updateById(forProductTagUpdate);
+    }
+
+    /**
+     * 新增商品标签
+     *
+     * @param productTag 待新增对象
+     * @return 新增结果
+     */
+    @Override
+    public Boolean add(WhatTodayEatTagRequest productTag) {
+        // 检查标签名称是否存在
+        List<WhatTodayEatTag> exitProductTags = checkTagNameOnlyOne(productTag);
+        if (CollUtil.isNotEmpty(exitProductTags)) {
+            throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "标签名称已存在!");
+        }
+        WhatTodayEatTag whatTodayEatTag=new WhatTodayEatTag();
+        BeanUtils.copyProperties(productTag,whatTodayEatTag);
+        return dao.insert(whatTodayEatTag) > 0;
+    }
+
+
+    /**
+     * 更新商品标签
+     *
+     * @param id     标签id
+     * @param status 状态#0关闭|1开启
+     * @return 结果
+     */
+    @Override
+    public Boolean updateShowStatus(Integer id, Integer status) {
+        LambdaUpdateWrapper<WhatTodayEatTag> updateWrapper = Wrappers.lambdaUpdate();
+        updateWrapper.eq(WhatTodayEatTag::getId, id);
+        updateWrapper.set(WhatTodayEatTag::getStatus, status);
+        return update(updateWrapper);
+    }
+
+
+    /**
+     * 删除商品标签 仅仅能删除平台自建的
+     *
+     * @param id 待删除id
+     * @return 删除结果
+     */
+    @Override
+    public Boolean delete(Integer id) {
+        WhatTodayEatTag productTagForDelete = getById(id);
+        if (null == productTagForDelete || ObjectUtil.isNull(productTagForDelete.getId())) return Boolean.TRUE;
+        if (productTagForDelete.getStatus() == 1) {
+            throw new CrmebException(ProductResultCode.PRODUCT_TAG_STATUS_TRUE);
+        }
+        return removeById(id);
+    }
+
+    /**
+     * 检查商品标签名称是否重复
+     *
+     * @param productTag 待检查的商品标签对象
+     */
+    private List<WhatTodayEatTag> checkTagNameOnlyOne(WhatTodayEatTagRequest productTag) {
+        LambdaQueryWrapper<WhatTodayEatTag> queryForTagNameOnlyOne = Wrappers.lambdaQuery();
+        queryForTagNameOnlyOne.eq(WhatTodayEatTag::getTagName, productTag.getTagName());
+        queryForTagNameOnlyOne.ne(WhatTodayEatTag::getId,productTag.getId());
+        return dao.selectList(queryForTagNameOnlyOne);
+    }
+}
+