From a473fd6457ab187edc6aa33f87d089ffca00deab Mon Sep 17 00:00:00 2001 From: liuyingfang <1357764963@qq.com> Date: Thu, 6 Jul 2023 17:01:21 +0800 Subject: [PATCH] =?UTF-8?q?D1D0=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=EF=BC=8C=E6=8F=90=E7=8E=B0=E5=AE=A1=E6=A0=B8=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/controller/CashController.java | 34 +++++ .../controller/MerchantOrderController.java | 45 +++++-- .../cn/pluss/platform/mapper/CashMapper.java | 3 + .../src/main/resources/mapper/Cash-sqlmap.xml | 28 ++++ .../java/cn/pluss/platform/entity/Cash.java | 13 +- .../cn/pluss/platform/cash/CashService.java | 3 + .../platform/cash/impl/CashServiceImpl.java | 126 +++++++++++++++++- .../platform/impl/BankCardServiceImpl.java | 7 +- .../impl/account/AccountServiceImpl.java | 34 ++--- .../impl/MerchantProfitServiceImpl.java | 15 ++- 10 files changed, 271 insertions(+), 37 deletions(-) diff --git a/pluss-api-page/src/main/java/cn/pluss/platform/controller/CashController.java b/pluss-api-page/src/main/java/cn/pluss/platform/controller/CashController.java index 316db89..dec83c8 100644 --- a/pluss-api-page/src/main/java/cn/pluss/platform/controller/CashController.java +++ b/pluss-api-page/src/main/java/cn/pluss/platform/controller/CashController.java @@ -7,6 +7,7 @@ import cn.pluss.platform.cash.CashService; import cn.pluss.platform.entity.Cash; import cn.pluss.platform.entity.UserApp; import cn.pluss.platform.entity.WxBankCode; +import cn.pluss.platform.userApp.UserAppService; import cn.pluss.platform.util.*; import cn.pluss.platform.wxBankCode.WxBankCodeService; import io.swagger.annotations.Api; @@ -18,6 +19,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import java.math.BigDecimal; import java.util.HashMap; import java.util.List; @@ -33,6 +35,8 @@ public class CashController { private final CashService cashService; private final WxBankCodeService wxBankCodeService; + @Resource + private UserAppService userAppService; @GetMapping({ "", "/v3" }) @ApiOperation(tags = { "页面-提现记录" }, value = "获取分页提现记录", notes = "返回分页过后的数据", httpMethod = "GET") @@ -91,4 +95,34 @@ public class CashController { return ResultGenerator.genSuccessResult(); } + /** + * 下级相关 + * @param + * @return + */ + @GetMapping("/subordinate") + public Result subordinate(@RequestParam("status") String status, @RequestParam("size") Integer size, + @RequestParam("page") Integer page){ + + UserApp tokenUa = userAppService.queryUserAppByToken(); + List subordinate = cashService.subordinate(tokenUa.getUserId().toString(),status, size, page); + return ResultGenerator.genSuccessResult(subordinate); + } + /** + * 提现审核 + */ + @GetMapping ("/examine") + public Result examine(@RequestParam("id") Integer id,@RequestParam("status") String status, + @RequestParam("remark") String remark){ + UserApp tokenUa = userAppService.queryUserAppByToken(); + try { + Boolean aBoolean = cashService.modifyOutFlow(id, String.valueOf(tokenUa.getUserId()), status, remark); + if (aBoolean){ + return ResultGenerator.genSuccessResult(); + } + }catch (Exception e){ + e.printStackTrace(); + } + return ResultGenerator.genFailResult(""); + } } diff --git a/pluss-api-page/src/main/java/cn/pluss/platform/controller/MerchantOrderController.java b/pluss-api-page/src/main/java/cn/pluss/platform/controller/MerchantOrderController.java index 0dbb18d..b37234e 100644 --- a/pluss-api-page/src/main/java/cn/pluss/platform/controller/MerchantOrderController.java +++ b/pluss-api-page/src/main/java/cn/pluss/platform/controller/MerchantOrderController.java @@ -21,6 +21,7 @@ import cn.pluss.platform.merchantIncome.MerchantIncomeService; import cn.pluss.platform.merchantMenber.MerchantMenberService; import cn.pluss.platform.merchantMenberRecharge.MerchantMenberRechargeService; import cn.pluss.platform.merchantOrder.MerchantOrderService; +import cn.pluss.platform.merchantProfit.MerchantProfitService; import cn.pluss.platform.notice.NoticeService; import cn.pluss.platform.pay.PayService; import cn.pluss.platform.pos.BasePosReq; @@ -54,8 +55,10 @@ import org.springframework.context.annotation.Lazy; import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; @@ -534,17 +537,41 @@ public class MerchantOrderController { } + @Resource + private MerchantProfitService profitService; + @PostMapping("/orderTest") + public Result orderTest(@RequestBody MerchantOrder merchantOrder){ + UserApp tokenUa = userAppService.queryUserAppByToken(); + merchantOrder.setOrderNumber("TEST"+StringUtil.getBillno()); + merchantOrder.setOrderType("2"); + + merchantOrder.setMerchantCode(tokenUa.getMerchantCode()); + merchantOrder.setMerchantName("尖愁"); + merchantOrder.setPayTypeCode("wechatPay"); + merchantOrder.setPayTypeName("微信"); + merchantOrder.setStoreId("0ZZC7Q"); + merchantOrder.setStoreName("尖愁"); + merchantOrder.setTransDt(new Date()); + merchantOrder.setCreateDt(new Date()); + merchantOrder.setStatus("1"); + merchantOrder.setEnterFee(merchantOrder.getConsumeFee()); + merchantOrder.setAisleSwitch("0"); + merchantOrder.setRate(new BigDecimal("38.00")); + merchantOrder.setSettlementType(1); + merchantOrder.setChannelRate(new BigDecimal("21.00")); + merchantOrder.setChannelFee(new BigDecimal("0.00")); + merchantOrder.setMercFee(new BigDecimal("0.00")); + + boolean save = merchantOrderService.save(merchantOrder); + profitService.createOrderProfitV2(merchantOrder,"1"); + if (save){ + return ResultGenerator.genSuccessResult(); + }else { + return ResultGenerator.genFailResult("失败"); + } - - - - - - - - - + } /** * 主扫会员支付 diff --git a/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/CashMapper.java b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/CashMapper.java index 1f842d4..c2a5370 100644 --- a/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/CashMapper.java +++ b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/CashMapper.java @@ -71,5 +71,8 @@ public interface CashMapper extends BaseMapper { * @return 提现总金额 */ BigDecimal selectCashAmtTotal(@Param("userId") String userId, @Param("statusArr") int... statusArr); + + List subordinate(@Param("userId") Long userId, @Param("size") Integer size, @Param("page")Integer page, + @Param("status") String status); } diff --git a/pluss-dao-bundle/src/main/resources/mapper/Cash-sqlmap.xml b/pluss-dao-bundle/src/main/resources/mapper/Cash-sqlmap.xml index b0853ae..acbaf50 100644 --- a/pluss-dao-bundle/src/main/resources/mapper/Cash-sqlmap.xml +++ b/pluss-dao-bundle/src/main/resources/mapper/Cash-sqlmap.xml @@ -217,4 +217,32 @@ + + diff --git a/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/Cash.java b/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/Cash.java index 1b77b12..ab4da27 100644 --- a/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/Cash.java +++ b/pluss-model-bundle/src/main/java/cn/pluss/platform/entity/Cash.java @@ -70,11 +70,11 @@ public class Cash { private String updator; private Integer type; - /** - * 备注 - */ - @TableField(exist = false) - private String remark; +// /** +// * 备注 +// */ +// @TableField(exist = false) +// private String remark; @TableField(exist = false) private String phone; @@ -159,5 +159,8 @@ public class Cash { @TableField("cashStatus") private String cashStatus; + + @TableField("remark") + private String remark; } diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/cash/CashService.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/cash/CashService.java index d385e60..f837267 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/cash/CashService.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/cash/CashService.java @@ -125,5 +125,8 @@ public interface CashService extends IService { default BigDecimal getSumCheckingCashAmtTotal(@Param("userId") String userId) { return ((CashMapper) getBaseMapper()).selectCashAmtTotal(userId, Cash.STATUS_CHECKING); } + List subordinate(String userId,String status,Integer size, Integer page); + + Boolean modifyOutFlow(Integer id,String userId,String status, String remark) throws Exception; } diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/cash/impl/CashServiceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/cash/impl/CashServiceImpl.java index db77f50..abaa7c7 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/cash/impl/CashServiceImpl.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/cash/impl/CashServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.DesensitizedUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.crypto.SecureUtil; +import cn.hutool.json.JSONArray; import cn.hutool.json.JSONUtil; import cn.pluss.platform.ali.AlipayService; import cn.pluss.platform.cash.CashService; @@ -34,6 +35,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.time.DateUtils; +import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -46,6 +48,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.text.ParseException; import java.util.*; +import java.util.stream.Collectors; @Slf4j @Service("cashService") @@ -89,6 +92,8 @@ public class CashServiceImpl extends ServiceImpl implements Ca @Resource private MerchantProfitMapper mpMapper; + @Resource + private CashMapper cashMapper; private void checkStatus(Integer userId) { RiskBlacklist condition = new RiskBlacklist(); @@ -371,7 +376,7 @@ public class CashServiceImpl extends ServiceImpl implements Ca cashStatus.setUserId(promotion.getUserId().toString()); cashStatus.setUserType(promotion.getTypeCode()); cashStatus.setStatus("0"); - cashStatus.setLoginName(promotion.getLoginName()); + cashStatus.setLoginName(promotion.getLoginName() == null?"null":promotion.getLoginName()); list.add(cashStatus); promotion.setCashStatusVOList(list); return list; @@ -612,5 +617,124 @@ public class CashServiceImpl extends ServiceImpl implements Ca public Map getCashCountData(Map params) { return baseMapper.getCashCountData(params); } + + @Override + public List subordinate(String userId,String status, Integer size, Integer page) { + page = page-1; + return cashMapper.subordinate(Long.valueOf(userId),size,page, status); + } + + @Override + public Boolean modifyOutFlow(Integer id, String userId, String status, String remark) throws Exception { + Boolean flag=false; + if(ObjectUtil.isEmpty(id)||ObjectUtil.isEmpty(userId)||ObjectUtil.isEmpty(status)){ + log.error("参数错误"); + MsgException.checkNull(null,"参数错误"); + } + Cash cash = getById(id); + if(ObjectUtil.isEmpty(cash)){ + log.error("对应的提现信息不存在:{}",id); + MsgException.checkNull(null,"对应的提现信息不存在"); + } + + if(cash.getStatus()==1 || cash.getStatus()==2){ + log.error("订单已处理完成: id :{}, status:{}",id,cash.getStatus()); + MsgException.checkNull(null,"订单已处理完成"); + } + + UserPromotion promotion= userPromotionMapper.selectByUserId(userId); + if(ObjectUtil.isEmpty(promotion)){ + log.error("审核员信息不存在"); + MsgException.checkNull(null,"审核员信息不存在"); + } + + + Map map=new HashMap<>(); + + List cashStatusList= JSONUtil.toList(new JSONArray(cash.getCashStatus()),CashStatusVO.class); + + if(ObjectUtil.isEmpty(cashStatusList)||cashStatusList.size()<=0){ + log.error("审核信息为空"); + MsgException.checkNull(null,"审核信息为空"); + } + + for (CashStatusVO cashStatus : cashStatusList) { + map.put(cashStatus.getUserType(),cashStatus); + } + + CashStatusVO cashStatus=null; + + CashStatusVO upStatus=null; + switch (promotion.getTypeCode()){ + case "AG": + cashStatus=map.get("AG"); + upStatus=map.get("SO"); + break; + case "SO": + cashStatus=map.get("AG"); + upStatus=map.get("FO"); + break; + case "FO": + cashStatus=map.get("SO"); + upStatus=map.get("MG"); + break; + case "MG": + cashStatus=map.get("FO"); + upStatus=map.get("MG"); + break; + } +// if(!userId.equals(cashStatus.getUserId().toString())){ +// log.error("操作权限不足"); +// return new RespBody("000025"); +// } + + if("0".equals(cashStatus.getStatus())){ + log.error("请等待下级审核完成"); + MsgException.checkNull(null,"请等待下级审核完成"); + } + + if("2".equals(cashStatus.getStatus())){ + log.error("提现已被拒绝"); + MsgException.checkNull(null,"提现已被拒绝"); + } + + if(!upStatus.getStatus().equals("0")){ + log.error("已被上级审核"); + MsgException.checkNull(null,"已被上级审核"); + } + + + + switch (status){ + case "1": + cashStatusList.stream().filter(it->{ + if(it.getUserId().toString().equals(userId)) + it.setStatus("1"); + return true; + }).collect(Collectors.toList()); + if(promotion.getTypeCode().equals("MG")){ + cash.setStatus(1); + } + cash.setCashStatus(JSONUtil.toJsonStr(cashStatusList)); + break; + case "2": + cashStatusList.stream().filter(it->{ + if(it.getUserId().toString().equals(userId)) + it.setStatus("2"); + return true; + }).collect(Collectors.toList()); + cash.setStatus(2); + cash.setRemark(remark); + cash.setCashStatus(JSONUtil.toJsonStr(cashStatusList)); + break; + default: + log.error("错误的操作类型"); + MsgException.checkNull(null,"错误的操作类型"); + } + + updateById(cash); + flag=true; + return flag; + } } diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/impl/BankCardServiceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/impl/BankCardServiceImpl.java index f3a00e0..bafb335 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/impl/BankCardServiceImpl.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/impl/BankCardServiceImpl.java @@ -103,7 +103,12 @@ public class BankCardServiceImpl extends ServiceImpl i d0Data.put("type", Account.CHANNEL_TYPE_D0); d0Data.put("data", BankCard.desensitized(d0.getBankCard())); if (MerchantChannelStatus.AUDIT_STATUS_DATA_EDIT.equals(mcs.getStatus())) { - BankCard edit = d0.getBak().toJavaObject(BankCard.class); + BankCard edit = null; + if (d0.getBak() != null) { + edit = d0.getBak().toJavaObject(BankCard.class); + }else { + edit = null; + } d0Data.put("editData", BankCard.desensitized(edit)); } diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/merchant/impl/account/AccountServiceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/merchant/impl/account/AccountServiceImpl.java index 70305f3..ae798bb 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/merchant/impl/account/AccountServiceImpl.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/merchant/impl/account/AccountServiceImpl.java @@ -409,22 +409,24 @@ public class AccountServiceImpl extends ServiceImpl impl // } // 如果不存在D0的结算信息,则直接将D1的结算信息带过来 -// LambdaQueryWrapper qWrapperAccountD1 = Wrappers.lambdaQuery(); -// qWrapperAccountD1.eq(Account::getUserId, accountDTO.getUserId()).eq(Account::getChannelType, Account.CHANNEL_TYPE_D0); -// int count = baseMapper.selectCount(qWrapperAccountD1); -// if (count == 0) { -// account.setChannelType(Account.CHANNEL_TYPE_D0); -// save(account); -// } -// //TODO -// // 如果不存在D1的结算信息,则直接将D0的结算信息带过来 -// LambdaQueryWrapper qWrapperAccountD0 = Wrappers.lambdaQuery(); -// qWrapperAccountD0.eq(Account::getUserId, accountDTO.getUserId()).eq(Account::getChannelType, Account.CHANNEL_TYPE_D1); -// int countD0 = baseMapper.selectCount(qWrapperAccountD0); -// if (countD0 == 0) { -// account.setChannelType(Account.CHANNEL_TYPE_D1); -// save(account); -// } + LambdaQueryWrapper qWrapperAccountD1New = Wrappers.lambdaQuery(); + qWrapperAccountD1New.eq(Account::getUserId, accountDTO.getUserId()).eq(Account::getChannelType, Account.CHANNEL_TYPE_D0); + int countNew = baseMapper.selectCount(qWrapperAccountD1New); + if (countNew == 0) { + account.setChannelType(Account.CHANNEL_TYPE_D0); + account.setValid(0); + save(account); + } + //TODO + // 如果不存在D1的结算信息,则直接将D0的结算信息带过来 + LambdaQueryWrapper qWrapperAccountD0 = Wrappers.lambdaQuery(); + qWrapperAccountD0.eq(Account::getUserId, accountDTO.getUserId()).eq(Account::getChannelType, Account.CHANNEL_TYPE_D1); + int countD0 = baseMapper.selectCount(qWrapperAccountD0); + if (countD0 == 0) { + account.setChannelType(Account.CHANNEL_TYPE_D1); + account.setValid(0); + save(account); + } } @Override diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/merchantProfit/impl/MerchantProfitServiceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/merchantProfit/impl/MerchantProfitServiceImpl.java index 4e885fc..c9b3241 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/merchantProfit/impl/MerchantProfitServiceImpl.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/merchantProfit/impl/MerchantProfitServiceImpl.java @@ -113,10 +113,7 @@ public class MerchantProfitServiceImpl extends ServiceImpl queryWrapper=new QueryWrapper<>(); - queryWrapper.eq("parentId",userPromotion.getParentUserId()); + queryWrapper.eq("userId",userPromotion.getParentUserId()); UserApp pUserApp=userAppMapper.selectOne(queryWrapper); + if(ObjectUtil.isEmpty(pUserApp)){ + log.error("订单号:{},分润结束,获取分润数为:{}",order.getOrderNumber(),profits.size()); + return; + } BigDecimal profitAmt = profitRate.divide(BigDecimal.valueOf(10000)).multiply(BigDecimal.valueOf(order.getConsumeFee())).setScale(4, BigDecimal.ROUND_DOWN); MerchantProfit profit = new MerchantProfit(nowUserApp, pUserApp, order, profitAmt, profitRate, "1", "1");