Sfoglia il codice sorgente

fix 小店申请提现、代码融合

zoujiajian 2 anni fa
parent
commit
cfbc789db2
26 ha cambiato i file con 355 aggiunte e 123 eliminazioni
  1. 3 0
      netflix-dao/src/main/java/com/cyksj/mapper/UserMapper.java
  2. 3 3
      netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopDistributeMoneyApplyMapper.java
  3. 1 1
      netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopGeneralGoodsRateMapper.java
  4. 1 1
      netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopGoodsRateMapper.java
  5. 3 0
      netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopMapper.java
  6. 1 1
      netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopUserBusinessDefaultRateConfigMapper.java
  7. 1 1
      netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopUserDistributeBusinessRateMapper.java
  8. 1 1
      netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopUserPlatDistributeRateMapper.java
  9. 7 0
      netflix-dao/src/main/java/com/cyksj/model/entity/TransferAccountsRecord.java
  10. 2 0
      netflix-dao/src/main/java/com/cyksj/model/request/ApplyMoneyReq.java
  11. 2 0
      netflix-dao/src/main/java/com/cyksj/model/request/TransferAccountsReq.java
  12. 38 0
      netflix-dao/src/main/java/com/cyksj/model/request/YhShopApplyMoneyReq.java
  13. 6 0
      netflix-dao/src/main/resources/mapper/YhShopMapper.xml
  14. 4 0
      netflix-service/src/main/java/com/cyksj/service/cps/shop/YhShopManageService.java
  15. 112 0
      netflix-service/src/main/java/com/cyksj/service/cps/shop/YhShopManageServiceImpl.java
  16. 1 1
      netflix-service/src/main/java/com/cyksj/service/distribute/impl/UserBusinessFrontServiceImpl.java
  17. 3 4
      netflix-service/src/main/java/com/cyksj/service/mange/goods/CmsYhShopCommonServiceImpl.java
  18. 1 1
      netflix-service/src/main/java/com/cyksj/service/mange/goods/CmsYhShopGoodsRateServiceImpl.java
  19. 0 7
      netflix-service/src/main/java/com/cyksj/service/order/OrderDonService.java
  20. 4 85
      netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java
  21. 17 0
      netflix-service/src/main/java/com/cyksj/service/pay/TransferFuncService.java
  22. 121 0
      netflix-service/src/main/java/com/cyksj/service/pay/impl/TransferFuncServiceImpl.java
  23. 1 1
      netflix-service/src/main/java/com/cyksj/service/shop/YhShopUserPlatDistributeRateServiceImpl.java
  24. 2 6
      netflix-service/src/main/java/com/cyksj/service/shop/impl/YhShopDistributeServiceImpl.java
  25. 16 7
      netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/shop/YhShopUserController.java
  26. 4 3
      netflix-web/src/main/java/com/cyksj/web/controller/user/DistributePopularizeController.java

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/mapper/UserMapper.java

@@ -56,4 +56,7 @@ public interface UserMapper extends BaseMapper<User> {
 
     @Update("update user set yhs_money = yhs_money - #{deductMoney} where id = #{shopUserId} and yhs_money = #{yhsMoney}")
     Integer subYhShopUserMoney(@Param("shopUserId") Long shopUserId, @Param("yhsMoney") BigDecimal yhsMoney, @Param("deductMoney") BigDecimal deductMoney);
+
+    @Update("update user set yhs_money = yhs_money - #{subMoney} where id = #{shopUserId} and yhs_money > #{subMoney}")
+    Integer subYhsMoney(@Param("shopUserId") Long shopUserId, @Param("subMoney") BigDecimal subMoney);
 }

+ 3 - 3
netflix-dao/src/main/java/com/cyksj/mapper/YhShopDistributeMoneyApplyMapper.java → netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopDistributeMoneyApplyMapper.java

@@ -1,13 +1,13 @@
-package com.cyksj.mapper;
+package com.cyksj.mapper.shop;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.YhShopDistributeMoneyApply;
 
 /*
  *项目名: yhlxj
- *文件名: YhShopDistributeMoneyApplyMapper
+ *文件名: yhShopApplyMoneyMapper
  *创建者: JavaZou
- *创建时间:2023/9/18 17:46
+ *创建时间:2023/9/20 18:41
  */
 public interface YhShopDistributeMoneyApplyMapper extends BaseMapper<YhShopDistributeMoneyApply> {
 }

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/mapper/YhShopGeneralGoodsRateMapper.java → netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopGeneralGoodsRateMapper.java

@@ -1,4 +1,4 @@
-package com.cyksj.mapper;
+package com.cyksj.mapper.shop;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.YhShopGeneralGoodsRate;

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/mapper/YhShopGoodsRateMapper.java → netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopGoodsRateMapper.java

@@ -1,4 +1,4 @@
-package com.cyksj.mapper;
+package com.cyksj.mapper.shop;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.YhShopGoodsRate;

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopMapper.java

@@ -2,6 +2,7 @@ package com.cyksj.mapper.shop;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.YhShop;
+import com.cyksj.model.entity.YhShopDistributeMoneyApply;
 import com.cyksj.model.views.YhShopDistributeView;
 import org.apache.ibatis.annotations.Param;
 
@@ -25,4 +26,6 @@ public interface YhShopMapper extends BaseMapper<YhShop> {
 	BigDecimal selectYhShopTakeMoney(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
 
 	Map<String, Integer> selectYhShopApplyMoney(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
+
+	YhShopDistributeMoneyApply selectRelationBusiness(Long userId);
 }

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/mapper/YhShopUserBusinessDefaultRateConfigMapper.java → netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopUserBusinessDefaultRateConfigMapper.java

@@ -1,4 +1,4 @@
-package com.cyksj.mapper;
+package com.cyksj.mapper.shop;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.YhShopUserBusinessDefaultRateConfig;

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/mapper/YhShopUserDistributeBusinessRateMapper.java → netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopUserDistributeBusinessRateMapper.java

@@ -1,4 +1,4 @@
-package com.cyksj.mapper;
+package com.cyksj.mapper.shop;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.YhShopUserDistributeBusinessRate;

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/mapper/YhShopUserPlatDistributeRateMapper.java → netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopUserPlatDistributeRateMapper.java

@@ -1,4 +1,4 @@
-package com.cyksj.mapper;
+package com.cyksj.mapper.shop;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.YhShopUserPlatDistributeRate;

+ 7 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/TransferAccountsRecord.java

@@ -65,4 +65,11 @@ public class TransferAccountsRecord extends BaseEntity{
 	 * 转账日期
 	 */
 	private Date transferTime;
+
+	/**
+	 * 渠道类型
+	 * 1分销
+	 * 2店铺提现
+	 */
+	private Integer channelType;
 }

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/request/ApplyMoneyReq.java

@@ -33,4 +33,6 @@ public class ApplyMoneyReq {
 	 * 备注
 	 */
 	private String remark;
+
+	private Long userId;
 }

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/request/TransferAccountsReq.java

@@ -47,4 +47,6 @@ public class TransferAccountsReq {
 	private Integer scope;
 
 	private Long userId;
+
+	private Integer channelType;
 }

+ 38 - 0
netflix-dao/src/main/java/com/cyksj/model/request/YhShopApplyMoneyReq.java

@@ -0,0 +1,38 @@
+package com.cyksj.model.request;
+
+import com.cyksj.model.entity.YhShopDistributeMoneyApply;
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: yhlxj
+ *文件名: YhShopApplyMoneyReq
+ *创建者: JavaZou
+ *创建时间:2023/9/20 18:33
+ */
+@Getter
+@Setter
+public class YhShopApplyMoneyReq {
+	private String account;
+
+	private YhShopDistributeMoneyApply.Type type;
+
+	private String realName;
+
+	/**
+	 * true提现所有积分金额
+	 */
+	private Boolean isTakeAll;
+
+	/**
+	 * 钱包地址
+	 */
+	private String walletAddr;
+
+	/**
+	 * 备注
+	 */
+	private String remark;
+
+	private Long userId;
+}

+ 6 - 0
netflix-dao/src/main/resources/mapper/YhShopMapper.xml

@@ -55,4 +55,10 @@
             and created_time &lt; #{endDate}
         </if>
     </select>
+
+    <select id="selectRelationBusiness" resultType="com.cyksj.model.entity.YhShopDistributeMoneyApply">
+        select ys.business_id, cu.nickanem as businessName
+        from (select * from yh_shop where user_id limit 1) ys
+                 left join cms_user cu on cu.id = ys.business_id
+    </select>
 </mapper>

+ 4 - 0
netflix-service/src/main/java/com/cyksj/service/cps/shop/YhShopManageService.java

@@ -1,7 +1,9 @@
 package com.cyksj.service.cps.shop;
 
 import cn.hutool.core.date.DateTime;
+import com.cyksj.dto.Result;
 import com.cyksj.model.entity.User;
+import com.cyksj.model.request.YhShopApplyMoneyReq;
 import com.cyksj.model.views.YhShopBrokenLineCpsUserWMoneyView;
 import com.cyksj.model.views.YhShopUserWMoneyStatisticsDataView;
 
@@ -29,4 +31,6 @@ public interface YhShopManageService {
 	List<YhShopUserWMoneyStatisticsDataView> getWMoneyStatisticsDataView(long yhShopUserId, DateTime first, DateTime end);
 
 	User yhShopManageRedirect(long userId);
+
+	Result applyMoney(YhShopApplyMoneyReq applyMoneyReq) throws Exception;
 }

+ 112 - 0
netflix-service/src/main/java/com/cyksj/service/cps/shop/YhShopManageServiceImpl.java

@@ -3,24 +3,38 @@ package com.cyksj.service.cps.shop;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.lang.Validator;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alipay.api.AlipayResponse;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.cyksj.common.constant.Constant;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.util.SmsUtil;
 import com.cyksj.common.util.StringUtil;
+import com.cyksj.dto.Result;
+import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.UserMapper;
+import com.cyksj.mapper.shop.YhShopDistributeMoneyApplyMapper;
 import com.cyksj.mapper.shop.YhShopMapper;
 import com.cyksj.mapper.shop.YhShopWaitingSendPointsMapper;
 import com.cyksj.model.entity.User;
 import com.cyksj.model.entity.YhShop;
+import com.cyksj.model.entity.YhShopDistributeMoneyApply;
+import com.cyksj.model.request.TransferAccountsReq;
+import com.cyksj.model.request.YhShopApplyMoneyReq;
 import com.cyksj.model.views.YhShopBrokenLineCpsUserWMoneyView;
 import com.cyksj.model.views.YhShopUserWMoneyStatisticsDataView;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.mail.MailService;
+import com.cyksj.service.pay.TransferFuncService;
+import com.cyksj.service.user.UserBenefitsService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.List;
+import java.util.Optional;
 
 /*
  *项目名: yhlxj
@@ -39,8 +53,14 @@ public class YhShopManageServiceImpl implements YhShopManageService{
 
 	private final MailService mailService;
 
+	private final TransferFuncService transferFuncService;
+
+	private final UserBenefitsService userBenefitsService;
+
 	private final YhShopWaitingSendPointsMapper yhShopWaitingSendPointsMapper;
 
+	private final YhShopDistributeMoneyApplyMapper yhShopDistributeMoneyApplyMapper;
+
 	@Override
 	public void getLoginCode(Integer type, String login, Integer cid) {
 		if (type > 2) {
@@ -156,6 +176,98 @@ public class YhShopManageServiceImpl implements YhShopManageService{
 		return null;
 	}
 
+	@Override
+	@Transactional(rollbackFor = Throwable.class)
+	public Result applyMoney(YhShopApplyMoneyReq applyMoneyReq) throws Exception {
+		Long userId = applyMoneyReq.getUserId();
+		User user = userMapper.selectById(userId);
+		if (user == null) {
+			throw BusinessRuntimeException.getInstance("请先授权登录");
+		}
+		Boolean isTakeAll = applyMoneyReq.getIsTakeAll();
+		YhShopDistributeMoneyApply.Type type = applyMoneyReq.getType();
+		if (type == null) type = YhShopDistributeMoneyApply.Type.zfb;
+		if (type == YhShopDistributeMoneyApply.Type.zfb) {
+			if (ObjectUtil.hasEmpty(applyMoneyReq.getAccount(), applyMoneyReq.getRealName())) {
+				throw BusinessRuntimeException.getInstance("必填项不能为空");
+			}
+			if (applyMoneyReq.getAccount().length() > 255 || applyMoneyReq.getRealName().length() > 32) {
+				throw BusinessRuntimeException.getInstance("请输入正确的账户信息");
+			}
+		}
+		if (type == YhShopDistributeMoneyApply.Type.usdt) {
+			if (StrUtil.isEmpty(applyMoneyReq.getWalletAddr())) {
+				throw BusinessRuntimeException.getInstance("USDT提现钱包地址不能为空");
+			}
+			if (applyMoneyReq.getWalletAddr().length() > 1000) {
+				throw BusinessRuntimeException.getInstance("请输入正确的钱包地址");
+			}
+			if (StrUtil.isNotBlank(applyMoneyReq.getRemark()) && applyMoneyReq.getRemark().length() > 512) {
+				throw BusinessRuntimeException.getInstance("备注过多");
+			}
+			isTakeAll = true;
+
+		}
+		YhShopDistributeMoneyApply distributeMoneyApply = null;
+		if (type == YhShopDistributeMoneyApply.Type.pwdRed) {
+			distributeMoneyApply = yhShopMapper.selectRelationBusiness(userId);
+			isTakeAll = true;
+		}
+
+		BigDecimal needApplyMoney = user.getYhsMoney();
+		BigDecimal fourHundred = BigDecimal.valueOf(4 * 10000);
+		if (isTakeAll == null || !isTakeAll) {
+			if (needApplyMoney.compareTo(fourHundred) > 0) {
+				needApplyMoney = fourHundred;
+			}
+		}
+		Integer update = userMapper.subYhsMoney(user.getId(), needApplyMoney);
+		if (update == 1) {
+			distributeMoneyApply = Optional.ofNullable(distributeMoneyApply).orElse(new YhShopDistributeMoneyApply());
+			distributeMoneyApply.setUserId(userId);
+			distributeMoneyApply.setMoney(needApplyMoney);
+			distributeMoneyApply.setAccount(applyMoneyReq.getAccount());
+			distributeMoneyApply.setRealName(applyMoneyReq.getRealName());
+			distributeMoneyApply.setWalletAddr(applyMoneyReq.getWalletAddr());
+			distributeMoneyApply.setRemark(applyMoneyReq.getRemark());
+			distributeMoneyApply.setType(applyMoneyReq.getType());
+			if (isTakeAll != null && isTakeAll) {
+				distributeMoneyApply.setVerifyStatus(YhShopDistributeMoneyApply.Status.verifying);
+			} else {
+				TransferAccountsReq req = new TransferAccountsReq();
+				req.setMoney(needApplyMoney);
+				req.setAccount(applyMoneyReq.getAccount());
+				req.setName(applyMoneyReq.getRealName());
+				req.setChannelType(2);
+				req.setUserId(userId);
+				AlipayResponse alipayResponse = transferFuncService.transferAccounts(req);
+				if (alipayResponse.isSuccess()) {
+					distributeMoneyApply.setVerifyStatus(YhShopDistributeMoneyApply.Status.success);
+				} else {
+					distributeMoneyApply.setVerifyStatus(YhShopDistributeMoneyApply.Status.fail);
+					distributeMoneyApply.setReason(alipayResponse.getSubMsg());
+					userBenefitsService.addYhsMoney(userId, distributeMoneyApply.getMoney());
+					if (StrUtil.equals(alipayResponse.getSubCode(), "SECURITY_CHECK_FAILED")) {
+						return GatewayResponse.FAIL.newBuilder().setMsg("当前支付宝提现人数较多,请稍后再试").toResult();
+					}
+					return GatewayResponse.FAIL.newBuilder().setMsg(alipayResponse.getSubMsg()).toResult();
+				}
+			}
+			try {
+				yhShopDistributeMoneyApplyMapper.insert(distributeMoneyApply);
+				//大额提现 超过400
+				if (distributeMoneyApply.getVerifyStatus() == YhShopDistributeMoneyApply.Status.verifying && distributeMoneyApply.getMoney().compareTo(fourHundred) > 0) {
+					SmsUtil.sendLuoKey2Msg(Constant.ZK_MOBILE, "推广有大额提现申请【银河录像局】");
+				}
+			} catch (Exception e) {
+				userBenefitsService.addYhsMoney(userId, distributeMoneyApply.getMoney());
+				return GatewayResponse.FAIL.newBuilder().setMsg("网络错误,请重试").toResult();
+			}
+			return GatewayResponse.SUCCESS.newBuilder().toResult(distributeMoneyApply);
+		}
+		throw BusinessRuntimeException.getInstance("系统异常,请重新提交提现申请");
+	}
+
 	public boolean isToday(DateTime first, DateTime end) {
 		boolean today = false;
 		if (first != null && end != null) {

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/distribute/impl/UserBusinessFrontServiceImpl.java

@@ -6,11 +6,11 @@ import com.cyksj.common.constant.Constant;
 import com.cyksj.mapper.OrderDonMapper;
 import com.cyksj.mapper.UserDistributeSpecialMapper;
 import com.cyksj.mapper.UserRenewChangeTicketRecordMapper;
-import com.cyksj.mapper.YhShopUserDistributeBusinessRateMapper;
 import com.cyksj.mapper.manage.distribute.UserBusinessDefaultRateConfigMapper;
 import com.cyksj.mapper.manage.distribute.UserDistributeBusinessOrderDonRecordMapper;
 import com.cyksj.mapper.manage.distribute.UserDistributeBusinessRateMapper;
 import com.cyksj.mapper.shop.YhShopUserDistributeBusinessOrderDonRecordMapper;
+import com.cyksj.mapper.shop.YhShopUserDistributeBusinessRateMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.distribute.UserBusinessFrontService;

+ 3 - 4
netflix-service/src/main/java/com/cyksj/service/mange/goods/CmsYhShopCommonServiceImpl.java

@@ -7,17 +7,16 @@ import cn.hutool.core.lang.Assert;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.exception.BusinessRuntimeException;
-import com.cyksj.mapper.*;
-import com.cyksj.mapper.shop.YhShopMapper;
+import com.cyksj.mapper.GoodsDonMapper;
+import com.cyksj.mapper.shop.*;
 import com.cyksj.model.entity.*;
-import com.cyksj.model.entity.YhShop;
 import com.cyksj.model.request.DistributeApplyMoneyReq;
 import com.cyksj.model.request.ShopGeneralGoodsRateReq;
 import com.cyksj.model.request.YhShopVerifyReq;
 import com.cyksj.model.views.GoodsDonSkuView;
-import com.cyksj.service.shop.YhShopUserPlatDistributeRateService;
 import com.cyksj.service.mange.CmsYhShopCommonService;
 import com.cyksj.service.mange.business.UserBusinessRateService;
+import com.cyksj.service.shop.YhShopUserPlatDistributeRateService;
 import com.cyksj.service.user.UserBenefitsService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.util.MapUtils;

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/mange/goods/CmsYhShopGoodsRateServiceImpl.java

@@ -1,7 +1,7 @@
 package com.cyksj.service.mange.goods;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.cyksj.mapper.YhShopGoodsRateMapper;
+import com.cyksj.mapper.shop.YhShopGoodsRateMapper;
 import com.cyksj.model.entity.YhShopGoodsRate;
 import com.cyksj.service.mange.CmsYhShopGoodsRateService;
 import lombok.RequiredArgsConstructor;

+ 0 - 7
netflix-service/src/main/java/com/cyksj/service/order/OrderDonService.java

@@ -1,7 +1,6 @@
 package com.cyksj.service.order;
 
 import com.alipay.api.AlipayApiException;
-import com.alipay.api.AlipayResponse;
 import com.alipay.api.response.AlipayFundTransCommonQueryResponse;
 import com.alipay.api.response.AlipayTradeFastpayRefundQueryResponse;
 import com.alipay.api.response.AlipayTradeQueryResponse;
@@ -12,7 +11,6 @@ import com.cyksj.model.entity.OrderDetailView;
 import com.cyksj.model.entity.OrderDon;
 import com.cyksj.model.entity.RealGoodsInterestUser;
 import com.cyksj.model.request.OrderPayRequest;
-import com.cyksj.model.request.TransferAccountsReq;
 
 import java.util.Date;
 import java.util.List;
@@ -70,11 +68,6 @@ public interface OrderDonService extends IService<OrderDon> {
 
     void saveTransport(Long addressId, Long orderId);
 
-    /**
-     * 支付宝红包转账
-     */
-    AlipayResponse transferAccounts(TransferAccountsReq transferAccountsReq) throws Exception;
-
     /**
      * 查询支付宝转账状态
      */

+ 4 - 85
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -6,12 +6,13 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONObject;
 import com.alipay.api.AlipayApiException;
 import com.alipay.api.AlipayClient;
 import com.alipay.api.AlipayRequest;
-import com.alipay.api.AlipayResponse;
-import com.alipay.api.domain.*;
+import com.alipay.api.domain.AlipayFundTransCommonQueryModel;
+import com.alipay.api.domain.AlipayTradePagePayModel;
+import com.alipay.api.domain.AlipayTradeRefundModel;
+import com.alipay.api.domain.AlipayTradeWapPayModel;
 import com.alipay.api.internal.util.AlipaySignature;
 import com.alipay.api.request.*;
 import com.alipay.api.response.AlipayFundTransCommonQueryResponse;
@@ -48,14 +49,12 @@ import com.cyksj.mapper.manage.distribute.*;
 import com.cyksj.mapper.market.task.TaskTypeMapper;
 import com.cyksj.mapper.market.task.UserBindDetailMapper;
 import com.cyksj.model.dto.*;
-import com.cyksj.model.entity.Address;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.views.GroupsRelationView;
 import com.cyksj.model.manage.views.OrderDonView;
 import com.cyksj.model.request.OrderAttach;
 import com.cyksj.model.request.OrderPayRequest;
 import com.cyksj.model.request.TelegramBotMsgReq;
-import com.cyksj.model.request.TransferAccountsReq;
 import com.cyksj.model.views.CouponNewUserView;
 import com.cyksj.model.views.CouponUserView;
 import com.cyksj.model.views.GoodsDonSkuView;
@@ -1087,35 +1086,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		saveTransportByAddress(address, orderId);
 	}
 
-	@Override
-	public AlipayResponse transferAccounts(TransferAccountsReq transferAccountsReq) throws Exception {
-		Long userId = transferAccountsReq.getUserId();
-		String account = transferAccountsReq.getAccount();
-		String name = transferAccountsReq.getName();
-		BigDecimal money = transferAccountsReq.getMoney();
-		String type = transferAccountsReq.getType();
-		BigDecimal points = transferAccountsReq.getPoints();
-		/* 生成商户转账订单号 */
-		String donNo = SEQUENCE.nextId().toString();
-		if (StrUtil.isEmpty(type)) {
-			type = TransferConstant.ALIPAY;
-		}
-		Integer scope = transferAccountsReq.getScope();
-		AlipayClient alipayClient = AliPayClientFactory.getAlipayClient(ShopConfig.DISTRIBUTE_ZFB_DEFAULT_APP_ID);
-
-		AlipayRequest alipayRequest = aliPayTransferAccountsRequest(donNo, account, name, money);
-
-		AlipayResponse response = alipayClient.certificateExecute(alipayRequest);
-		if (response.isSuccess()) {
-			log.info("支付宝转账金额:{}至用户:{}成功", money.divide(BigDecimal.valueOf(100)), userId);
-			saveTransferRecord(userId, donNo, account, name, money, points, type, scope, response.getBody(), null);
-			return response;
-		}
-		log.info("支付宝转账金额:{}至用户:{}失败", money.divide(BigDecimal.valueOf(100)), userId);
-		saveTransferRecord(userId, donNo, account, name, money, points, type, scope, response.getBody(), response.getSubMsg());
-		return response;
-	}
-
 	@Override
 	public AlipayFundTransCommonQueryResponse getTransFerStatusByTid(String translationId) throws Exception {
 		AlipayClient alipayClient = AliPayClientFactory.getAlipayClient(ShopConfig.ZFB_DEFAULT_APP_ID);
@@ -1129,31 +1099,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		return response;
 	}
 
-	private AlipayRequest aliPayTransferAccountsRequest(String donNo, String account, String name, BigDecimal money) {
-		//支付宝转账
-		AlipayFundTransUniTransferRequest transUniTransferRequest = new AlipayFundTransUniTransferRequest();
-		//转账参数
-		AlipayFundTransUniTransferModel model = new AlipayFundTransUniTransferModel();
-		model.setOutBizNo(donNo);
-		//单位元
-		model.setTransAmount(money.divide(BigDecimal.valueOf(100)).toString());
-		model.setProductCode(ZfbProductCode.STD_RED_PACKET.getProductCode());
-		model.setBizScene(TransferConstant.DIRECT_TRANSFER);
-		model.setOrderTitle("分销提现");
-		//红包业务必传,取值REDPACKET
-		JSONObject businessParams = new JSONObject();
-		businessParams.putOpt(TransferConstant.SUB_BIZ_SCENE, TransferConstant.RED_PACKET);
-		model.setBusinessParams(businessParams.toString());
-		Participant payeeInfo = new Participant();
-		payeeInfo.setIdentity(account);
-		payeeInfo.setIdentityType(TransferConstant.ALIPAY_LOGON_ID);
-		payeeInfo.setName(name);
-		model.setPayeeInfo(payeeInfo);
-		model.setRemark("分销提现转账");
-		transUniTransferRequest.setBizModel(model);
-		return transUniTransferRequest;
-	}
-
 	/**
 	 * 查询支付宝订单详情
 	 */
@@ -1771,32 +1716,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		}
 	}
 
-	/**
-	 * 保存转账记录
-	 */
-	public void saveTransferRecord(Long userId, String donNo, String account, String name, BigDecimal money, BigDecimal points, String type, Integer scope, String body, String error) throws Exception {
-		TransferAccountsRecord record = new TransferAccountsRecord();
-		JSONObject re = Jsons.parseObject(body, JSONObject.class);
-		JSONObject response = Jsons.parseObject(re.get("alipay_fund_trans_uni_transfer_response"), JSONObject.class);
-		String transactionId = response.getStr("order_id");
-		String transDate = response.getStr("trans_date");
-		record.setUserId(userId);
-		record.setAccount(account);
-		record.setName(name);
-		record.setMoney(money);
-		record.setType(type);
-		record.setScope(scope);
-		Optional.ofNullable(error).ifPresent(msg -> {
-			record.setErrorMsg(msg);
-			record.setStatus(0);
-		});
-		record.setPoints(points);
-		record.setTransferOutNo(donNo);
-		record.setTransactionId(transactionId);
-		Optional.ofNullable(transDate).ifPresent(transferTime -> record.setTransferTime(DateTime.of(transferTime, "yyyy-MM-dd HH:mm:ss")));
-		transferAccountsRecordMapper.insert(record);
-	}
-
 	/**
 	 * @param orderDon       续费订单
 	 * @param afterSku      续费之后的规格

+ 17 - 0
netflix-service/src/main/java/com/cyksj/service/pay/TransferFuncService.java

@@ -0,0 +1,17 @@
+package com.cyksj.service.pay;
+
+import com.alipay.api.AlipayResponse;
+import com.cyksj.model.request.TransferAccountsReq;
+
+/*
+ *项目名: yhlxj
+ *文件名: TransferFuncService
+ *创建者: JavaZou
+ *创建时间:2023/9/20 18:54
+ */
+public interface TransferFuncService {
+	/**
+	 * 支付宝红包转账
+	 */
+	AlipayResponse transferAccounts(TransferAccountsReq transferAccountsReq) throws Exception;
+}

+ 121 - 0
netflix-service/src/main/java/com/cyksj/service/pay/impl/TransferFuncServiceImpl.java

@@ -0,0 +1,121 @@
+package com.cyksj.service.pay.impl;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONObject;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.AlipayRequest;
+import com.alipay.api.AlipayResponse;
+import com.alipay.api.domain.AlipayFundTransUniTransferModel;
+import com.alipay.api.domain.Participant;
+import com.alipay.api.request.AlipayFundTransUniTransferRequest;
+import com.cyksj.common.constant.TransferConstant;
+import com.cyksj.common.snowflake.Sequence;
+import com.cyksj.common.util.Jsons;
+import com.cyksj.config.zfb.AliPayClientFactory;
+import com.cyksj.config.zfb.ZfbProductCode;
+import com.cyksj.mapper.TransferAccountsRecordMapper;
+import com.cyksj.model.entity.ShopConfig;
+import com.cyksj.model.entity.TransferAccountsRecord;
+import com.cyksj.model.request.TransferAccountsReq;
+import com.cyksj.service.pay.TransferFuncService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Optional;
+
+/*
+ *项目名: yhlxj
+ *文件名: TransferFuncServiceImpl
+ *创建者: JavaZou
+ *创建时间:2023/9/20 18:55
+ */
+@Service
+@RequiredArgsConstructor
+@Slf4j
+public class TransferFuncServiceImpl implements TransferFuncService {
+	private static final Sequence SEQUENCE = new Sequence(0);
+
+	private final TransferAccountsRecordMapper transferAccountsRecordMapper;
+
+	@Override
+	public AlipayResponse transferAccounts(TransferAccountsReq transferAccountsReq) throws Exception {
+		Long userId = transferAccountsReq.getUserId();
+		String account = transferAccountsReq.getAccount();
+		String name = transferAccountsReq.getName();
+		BigDecimal money = transferAccountsReq.getMoney();
+		String type = transferAccountsReq.getType();
+		BigDecimal points = transferAccountsReq.getPoints();
+		Integer channelType = transferAccountsReq.getChannelType();
+		/* 生成商户转账订单号 */
+		String donNo = SEQUENCE.nextId().toString();
+		if (StrUtil.isEmpty(type)) {
+			type = TransferConstant.ALIPAY;
+		}
+		Integer scope = transferAccountsReq.getScope();
+		AlipayClient alipayClient = AliPayClientFactory.getAlipayClient(ShopConfig.DISTRIBUTE_ZFB_DEFAULT_APP_ID);
+
+		AlipayRequest alipayRequest = aliPayTransferAccountsRequest(donNo, account, name, money);
+
+		AlipayResponse response = alipayClient.certificateExecute(alipayRequest);
+		if (response.isSuccess()) {
+			log.info("支付宝转账金额:{}至用户:{}成功", money.divide(BigDecimal.valueOf(100)), userId);
+			saveTransferRecord(userId, donNo, account, name, money, points, type, scope, response.getBody(), null, channelType);
+			return response;
+		}
+		log.info("支付宝转账金额:{}至用户:{}失败", money.divide(BigDecimal.valueOf(100)), userId);
+		saveTransferRecord(userId, donNo, account, name, money, points, type, scope, response.getBody(), response.getSubMsg(), channelType);
+		return response;
+	}
+
+	private AlipayRequest aliPayTransferAccountsRequest(String donNo, String account, String name, BigDecimal money) {
+		//支付宝转账
+		AlipayFundTransUniTransferRequest transUniTransferRequest = new AlipayFundTransUniTransferRequest();
+		//转账参数
+		AlipayFundTransUniTransferModel model = new AlipayFundTransUniTransferModel();
+		model.setOutBizNo(donNo);
+		//单位元
+		model.setTransAmount(money.divide(BigDecimal.valueOf(100)).toString());
+		model.setProductCode(ZfbProductCode.STD_RED_PACKET.getProductCode());
+		model.setBizScene(TransferConstant.DIRECT_TRANSFER);
+		model.setOrderTitle("分销提现");
+		//红包业务必传,取值REDPACKET
+		JSONObject businessParams = new JSONObject();
+		businessParams.putOpt(TransferConstant.SUB_BIZ_SCENE, TransferConstant.RED_PACKET);
+		model.setBusinessParams(businessParams.toString());
+		Participant payeeInfo = new Participant();
+		payeeInfo.setIdentity(account);
+		payeeInfo.setIdentityType(TransferConstant.ALIPAY_LOGON_ID);
+		payeeInfo.setName(name);
+		model.setPayeeInfo(payeeInfo);
+		model.setRemark("分销提现转账");
+		transUniTransferRequest.setBizModel(model);
+		return transUniTransferRequest;
+	}
+
+
+	public void saveTransferRecord(Long userId, String donNo, String account, String name, BigDecimal money, BigDecimal points, String type, Integer scope, String body, String error, Integer channelType) throws Exception {
+		TransferAccountsRecord record = new TransferAccountsRecord();
+		JSONObject re = Jsons.parseObject(body, JSONObject.class);
+		JSONObject response = Jsons.parseObject(re.get("alipay_fund_trans_uni_transfer_response"), JSONObject.class);
+		String transactionId = response.getStr("order_id");
+		String transDate = response.getStr("trans_date");
+		record.setUserId(userId);
+		record.setAccount(account);
+		record.setName(name);
+		record.setMoney(money);
+		record.setType(type);
+		record.setScope(scope);
+		Optional.ofNullable(error).ifPresent(msg -> {
+			record.setErrorMsg(msg);
+			record.setStatus(0);
+		});
+		record.setPoints(points);
+		record.setTransferOutNo(donNo);
+		record.setTransactionId(transactionId);
+		Optional.ofNullable(transDate).ifPresent(transferTime -> record.setTransferTime(DateTime.of(transferTime, "yyyy-MM-dd HH:mm:ss")));
+		transferAccountsRecordMapper.insert(record);
+	}
+}

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/shop/YhShopUserPlatDistributeRateServiceImpl.java

@@ -1,7 +1,7 @@
 package com.cyksj.service.shop;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.cyksj.mapper.YhShopUserPlatDistributeRateMapper;
+import com.cyksj.mapper.shop.YhShopUserPlatDistributeRateMapper;
 import com.cyksj.model.entity.YhShopUserPlatDistributeRate;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;

+ 2 - 6
netflix-service/src/main/java/com/cyksj/service/shop/impl/YhShopDistributeServiceImpl.java

@@ -2,15 +2,11 @@ package com.cyksj.service.shop.impl;
 
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.cyksj.mapper.YhShopUserPlatDistributeRateMapper;
 import com.cyksj.mapper.shop.YhShopDistributeWaitingSendPointsMapper;
 import com.cyksj.mapper.shop.YhShopMapper;
 import com.cyksj.mapper.shop.YhShopUserDistributeSharedMapper;
-import com.cyksj.model.entity.OrderDon;
-import com.cyksj.model.entity.YhShopUserDistributeShared;
-import com.cyksj.model.entity.YhShopUserPlatDistributeRate;
-import com.cyksj.model.entity.YhShop;
-import com.cyksj.model.entity.YhShopDistributeWaitingSendPoints;
+import com.cyksj.mapper.shop.YhShopUserPlatDistributeRateMapper;
+import com.cyksj.model.entity.*;
 import com.cyksj.service.distribute.UserBusinessFrontService;
 import com.cyksj.service.shop.YhShopDistributeService;
 import com.cyksj.service.user.UserBenefitsService;

+ 16 - 7
netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/shop/YhShopDateController.java → netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/shop/YhShopUserController.java

@@ -9,11 +9,8 @@ import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.GoodsDonMapper;
 import com.cyksj.mapper.shop.YhShopMapper;
-import com.cyksj.model.entity.GoodsDon;
-import com.cyksj.model.entity.User;
-import com.cyksj.model.entity.YhShopDistributeMoneyApply;
-import com.cyksj.model.entity.YhShop;
-import com.cyksj.model.entity.YhShopDistributeWaitingSendPoints;
+import com.cyksj.model.entity.*;
+import com.cyksj.model.request.YhShopApplyMoneyReq;
 import com.cyksj.model.views.*;
 import com.cyksj.service.cps.shop.YhShopManageService;
 import com.cyksj.web.util.StpYhShopManageUser;
@@ -30,15 +27,16 @@ import java.util.List;
 import java.util.Optional;
 
 /*
+ * admin/小店店铺/用户店铺后台
  *项目名: yhlxj
- *文件名: YhShopDateController
+ *文件名: YhShopUserController
  *创建者: JavaZou
  *创建时间:2023/9/20 14:19
  */
 @RestController
 @RequestMapping("/yhShop/manage")
 @RequiredArgsConstructor
-public class YhShopDateController {
+public class YhShopUserController {
 	private final YhShopManageService yhShopManageService;
 
 	private final BeanSearcher beanSearcher;
@@ -220,4 +218,15 @@ public class YhShopDateController {
 		List<GoodsDon> goodsDons = goodsDonMapper.getYhShopDistributeGoodsDetail(yhShop.getId());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(goodsDons);
 	}
+
+	/**
+	 * 申请 提现
+	 */
+	@PostMapping("/apply/money")
+	public Result<String> yhShopApplyMoney(@RequestBody YhShopApplyMoneyReq applyMoneyReq) throws Exception {
+		long userId = StpYhShopManageUser.getLoginIdAsLong();
+		applyMoneyReq.setUserId(userId);
+		yhShopManageService.applyMoney(applyMoneyReq);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
 }

+ 4 - 3
netflix-web/src/main/java/com/cyksj/web/controller/user/DistributePopularizeController.java

@@ -31,7 +31,7 @@ import com.cyksj.model.request.ApplyMoneyReq;
 import com.cyksj.model.request.TransferAccountsReq;
 import com.cyksj.model.views.*;
 import com.cyksj.service.distribute.DistributeService;
-import com.cyksj.service.order.OrderDonService;
+import com.cyksj.service.pay.TransferFuncService;
 import com.cyksj.service.user.UserBenefitsService;
 import com.cyksj.service.user.UserService;
 import com.cyksj.web.util.StpUserUtil;
@@ -84,7 +84,7 @@ public class DistributePopularizeController {
 
 	private final OrderDonMapper orderDonMapper;
 
-	private final OrderDonService orderService;
+	private final TransferFuncService transferFuncService;
 
 	private final UserBenefitsService userBenefitsService;
 
@@ -317,7 +317,8 @@ public class DistributePopularizeController {
 				req.setName(applyMoneyReq.getRealName());
 				req.setPoints(needSubPoints);
 				req.setUserId(userId);
-				AlipayResponse alipayResponse = orderService.transferAccounts(req);
+				req.setChannelType(1);
+				AlipayResponse alipayResponse = transferFuncService.transferAccounts(req);
 				if (alipayResponse.isSuccess()) {
 					distributeMoneyApply.setVerifyStatus(DistributeMoneyApply.Status.success);
 				} else {