From fc0236dd9b25dc0f071bd4744fc50dae435dc2d6 Mon Sep 17 00:00:00 2001 From: liuyingfang <1357764963@qq.com> Date: Mon, 28 Aug 2023 15:44:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E7=8E=B0=E5=88=97=E8=A1=A8=EF=BC=8C?= =?UTF-8?q?=E5=88=9B=E5=AE=A2=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 | 12 +- .../controller/MainPageController.java | 21 ++- .../platform/mapper/MerchantProfitMapper.java | 11 +- .../platform/mapper/UserMakerFlowMapper.java | 2 +- .../mapper/MerchantProfit-sqlmap.xml | 2 + .../UserMakerQuota/UserMakerQuotaService.java | 1 + .../impl/UserMakerQuotaServiceImpl.java | 121 ++++++++++-------- .../app/impl/PromoterMainPageServiceImpl.java | 2 +- .../merchantProfit/MerchantProfitService.java | 1 + .../impl/MerchantProfitServiceImpl.java | 52 ++++++-- 10 files changed, 149 insertions(+), 76 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 29c2eeb..1663612 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 @@ -46,13 +46,13 @@ public class CashController { @ApiImplicitParam(name = "type", value = "提现类型 0粉丝分润 1推广分润 99其他 ", paramType = "type", dataType = "Integer", required = true), @ApiImplicitParam(name = "status", value = "提现状态 0 申请提现 1 提现成功 2 提现失败", paramType = "status", dataType = "Integer"), @ApiImplicitParam(name = "merchantCode", value = "商家Code", paramType = "merchantCode", dataType = "String", required = true), }) - public Result> list(@RequestParam(defaultValue = "1") Integer page, - @RequestParam(defaultValue = "10") Integer size, Integer type, Integer status, String merchantCode, + public Result> list(@RequestParam(defaultValue = "1") Integer offset, + @RequestParam(defaultValue = "10") Integer pageSize, Integer type, Integer status, String merchantCode, String userId) { Map map = new HashMap<>(); - map.put("pageSize", size); - map.put("offset", (page - 1) * size); + map.put("pageSize", pageSize); + map.put("offset", (offset - 1) * pageSize); map.put("status",status); if (StringUtil.isEmpty(userId)) { return ResultGenerator.genFailResult("无用户id"); @@ -63,8 +63,8 @@ public class CashController { List cashList = cashService.queryCashPage(map); Integer count = cashService.queryCashPageCount(map); // 返回参数 - PageInfo pageInfo = new PageInfo<>(count.longValue(), (long) StringUtil.getPageCount(count, size), - page.longValue(), size.longValue(), cashList); + PageInfo pageInfo = new PageInfo<>(count.longValue(), (long) StringUtil.getPageCount(count, pageSize), + offset.longValue(), pageSize.longValue(), cashList); return ResultGenerator.genSuccessResult(pageInfo); } diff --git a/pluss-api-page/src/main/java/cn/pluss/platform/controller/MainPageController.java b/pluss-api-page/src/main/java/cn/pluss/platform/controller/MainPageController.java index 1d8a01d..8c9d80e 100644 --- a/pluss-api-page/src/main/java/cn/pluss/platform/controller/MainPageController.java +++ b/pluss-api-page/src/main/java/cn/pluss/platform/controller/MainPageController.java @@ -42,12 +42,10 @@ public class MainPageController { public Result getSpreadData() { UserApp userApp = userAppService.queryUserAppByToken(); Map resultMap; - resultMap = promoterMainPageService.getSpreadData(userApp.getUserId() + ""); return ResultGenerator.genSuccessResult(resultMap); } - @GetMapping("/userApp/modifyFee") public Result modifyFee(@RequestParam("id") Integer id, @RequestParam("fee") BigDecimal fee){ UserApp result = userAppService.queryUserBaseInfoByToken(); @@ -74,4 +72,23 @@ public class MainPageController { return ResultGenerator.genSuccessResult(merchantProfitVOS); } + /** + * 创客团队管理 + * @param name + * @param current + * @param size + * @param typeCode + * @return + */ + @GetMapping("/userApp/teamQuotaControl") + public Result teamQuotaControl(String name, + @RequestParam(defaultValue = "1") Integer current, + @RequestParam(defaultValue = "10") Integer size, + @RequestParam("typeCode") String typeCode){ + UserApp result = userAppService.queryUserBaseInfoByToken(); + Map merchantProfitVOS = merchantProfitService.teamQuotaList(typeCode, result.getUserId(), + current,size,name); + return ResultGenerator.genSuccessResult(merchantProfitVOS); + } + } diff --git a/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/MerchantProfitMapper.java b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/MerchantProfitMapper.java index f14256c..5286f12 100644 --- a/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/MerchantProfitMapper.java +++ b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/MerchantProfitMapper.java @@ -33,7 +33,7 @@ public interface MerchantProfitMapper extends BaseMapper { List queryMerchantProfitPage(Map map); Integer queryMerchantProfitPageCount(Map map); - Integer queryMerchantProfitPageCountV2(@Param("userId") String userId); + Integer queryMerchantProfitPageCountV2(@Param("userId") String userId, @Param("startTime") Date startTime,@Param("endTime") Date endTime); void saveMerchantProfitBatch(List merchantProfitList); @@ -135,6 +135,15 @@ public interface MerchantProfitMapper extends BaseMapper { "\tparent_user_id = #{userId}\n" + "\tAND type_code = #{typeCode}") Integer getCountChild( @Param("userId") Long userId,@Param("typeCode") String typeCod); + @Select("SELECT\n" + + "\tcount(*) \n" + + "FROM\n" + + "\ttb_pluss_user_promotion \n" + + "WHERE\n" + + "\tparent_user_id = #{userId}\n" + + "\tAND type_code = #{typeCode}"+ + "\tAND is_extend = '0'") + Integer getCountQuotaChild( @Param("userId") Long userId,@Param("typeCode") String typeCod); Integer getCountChildV2( @Param("userId") Long userId); List getChannelStatus(@Param("merchantCode") String merchantCode); diff --git a/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserMakerFlowMapper.java b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserMakerFlowMapper.java index 5a1dcd5..c94ec13 100644 --- a/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserMakerFlowMapper.java +++ b/pluss-dao-bundle/src/main/java/cn/pluss/platform/mapper/UserMakerFlowMapper.java @@ -17,7 +17,7 @@ public interface UserMakerFlowMapper extends BaseMapper { "\tmf.id,\n" + "\tmf.biz_code AS bizCode,\n" + "\tmf.biz_name AS bizName,\n" + - "\tbi.alias AS userName,\n" + + "\tmo.merchantName AS userName,\n" + "\tmf.amount AS lowerAmount,\n" + "\tmf.create_time AS createTime,\n" + "\tmo.consumeFee AS amount \n" + diff --git a/pluss-dao-bundle/src/main/resources/mapper/MerchantProfit-sqlmap.xml b/pluss-dao-bundle/src/main/resources/mapper/MerchantProfit-sqlmap.xml index 9ac065b..9b8bd0f 100644 --- a/pluss-dao-bundle/src/main/resources/mapper/MerchantProfit-sqlmap.xml +++ b/pluss-dao-bundle/src/main/resources/mapper/MerchantProfit-sqlmap.xml @@ -922,6 +922,7 @@ WHERE up.parent_user_id = #{userId} AND up.type_code = #{typeCode} + AND up.is_extend ='0' AND ua.userName = #{userName} @@ -1074,6 +1075,7 @@ user_id ) AND v.userId != #{userId} + AND v.transDt BETWEEN #{startTime} AND #{endTime} ORDER BY v.id DESC diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/UserMakerQuota/UserMakerQuotaService.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/UserMakerQuota/UserMakerQuotaService.java index 43e6ef7..99d0418 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/UserMakerQuota/UserMakerQuotaService.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/UserMakerQuota/UserMakerQuotaService.java @@ -18,5 +18,6 @@ public interface UserMakerQuotaService extends IService { void quotaInfo(MerchantOrder order); + List quotaList(Integer page, Integer size,Integer type); } diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/UserMakerQuota/impl/UserMakerQuotaServiceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/UserMakerQuota/impl/UserMakerQuotaServiceImpl.java index b173ccc..c88f7da 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/UserMakerQuota/impl/UserMakerQuotaServiceImpl.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/UserMakerQuota/impl/UserMakerQuotaServiceImpl.java @@ -14,6 +14,7 @@ import cn.pluss.platform.util.N; import cn.pluss.platform.vo.UserMakerQuotaVO; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import io.swagger.models.auth.In; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -28,6 +29,7 @@ import java.util.*; * @author lyf */ @Service +@Slf4j public class UserMakerQuotaServiceImpl extends ServiceImpl implements UserMakerQuotaService { @Resource private UserMakerQuotaMapper userMakerQuotaMapper; @@ -59,32 +61,8 @@ public class UserMakerQuotaServiceImpl extends ServiceImpl0) { - MerchantBaseInfo merchantBaseInfoByMerchantCode = merchantBaseInfoService.getMerchantBaseInfoByMerchantCode(order.getMerchantCode()); - if(merchantBaseInfoByMerchantCode == null) - return; - //找到上级增加额度 - UserPromotion userInfo = userPromotionMapper.selectByPrimaryKey(Long.valueOf(merchantBaseInfoByMerchantCode.getUserId())); - if (userInfo != null) { - UserPromotion userParent = userPromotionMapper.selectByUserIdMC(Long.valueOf(userInfo.getParentUserId())); - if (userParent != null && "1".equals(userParent.getIsExtend())){ - BigDecimal profit = consumeFee.multiply(new BigDecimal("0.5")).setScale(2,BigDecimal.ROUND_DOWN); - String s = String.valueOf(userParent.getUserId()); - Integer integer = Integer.valueOf(s); - this.modMakerFunds(integer,"SD","免费额度",profit,"",order.getOrderNumber()); - - } - } - //给自己计算 - assert userInfo != null; - if ("1".equals(userInfo.getIsExtend())){ - profit(userInfo,consumeFee,order); - } - } + this.makerQuota(order); } @Override @@ -106,29 +84,74 @@ public class UserMakerQuotaServiceImpl extends ServiceImpl0) { - MerchantBaseInfo merchantBaseInfoByMerchantCode = merchantBaseInfoService.getMerchantBaseInfoByMerchantCode(order.getMerchantCode()); - UserPromotion userInfo = userPromotionMapper.selectByPrimaryKey(Long.valueOf(merchantBaseInfoByMerchantCode.getUserId())); - if (userInfo != null && "1".equals(userInfo.getIsExtend())){ - BigDecimal profit = consumeFee.multiply(new BigDecimal("0.0038")).setScale(2, RoundingMode.DOWN); - String s = String.valueOf(userInfo.getUserId()); - Integer integer = Integer.valueOf(s); - this.modMakerFunds(integer,"SD","免费额度",profit,"",order.getOrderNumber()); - } - if (userInfo != null) { - UserPromotion userParent = userPromotionMapper.selectByUserIdMC(Long.valueOf(userInfo.getParentUserId())); - if (userParent != null) { - UserMakerQuota userMakerQuota = new UserMakerQuota(); - userMakerQuota.setUserId(userParent.getUserId()); - userMakerQuota.setAmount(consumeFee.divide(new BigDecimal("2"),2,BigDecimal.ROUND_DOWN)); - userMakerQuota.setCreateTime(new Date()); - userMakerQuotaMapper.insert(userMakerQuota); - } - } + @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) + public void makerQuota(MerchantOrder order){ + + + //查询自己是否为创客 + MerchantBaseInfo merchantBaseInfoByMerchantCode = merchantBaseInfoService.getMerchantBaseInfoByMerchantCode(order.getMerchantCode()); + if(ObjectUtil.isEmpty(merchantBaseInfoByMerchantCode)){ + log.error("商户信息异常:{}",order.getOrderNumber()); + return; } + + if(!"1".equals(merchantBaseInfoByMerchantCode.getMerchantType())){ + log.error("商户并非小微商户:{},{}",merchantBaseInfoByMerchantCode.getMerchantCode(),merchantBaseInfoByMerchantCode.getMerchantType()); + return; + } + + UserPromotion userInfo = userPromotionMapper.selectByPrimaryKey(Long.valueOf(merchantBaseInfoByMerchantCode.getUserId())); + if(ObjectUtil.isEmpty(userInfo)){ + log.error("用户所属关系不存在"); + return; + } + if("1".equals(userInfo.getIsExtend())){ + UserMakerQuota userMakerQuota = userMakerQuotaMapper.selectByUserId(userInfo.getUserId().intValue()); + if(ObjectUtil.isEmpty(userMakerQuota)){ + log.error("当前额度为0,{},{},{}",order.getOrderNumber(),order.getConsumeFee(),userInfo.getUserId()); + return; + } + BigDecimal havingBalance=userMakerQuota.getAmount().subtract(new BigDecimal(order.getConsumeFee())).setScale(2,BigDecimal.ROUND_DOWN); + if(havingBalance.compareTo(BigDecimal.ZERO)>=0){ + BigDecimal profit=new BigDecimal(order.getConsumeFee()).multiply(new BigDecimal("0.0038")).setScale(2, BigDecimal.ROUND_DOWN); + BigDecimal bigDecimal = new BigDecimal(order.getConsumeFee().toString()); + //提现金额 + userAccountService.modFunds(userInfo.getUserId().intValue(), "LD", "增加收益", profit, ""); + //额度改变 + modMakerFunds(userInfo.getUserId().intValue(), "LD", "收款消耗", bigDecimal, "",order.getOrderNumber()); + return; + } + + if(havingBalance.compareTo(BigDecimal.ZERO)<0){ + BigDecimal profit=userMakerQuota.getAmount().multiply(new BigDecimal("0.0038")).setScale(2, BigDecimal.ROUND_DOWN); + + //提现金额 + userAccountService.modFunds(userInfo.getUserId().intValue(), "LD", "增加收益", profit.abs().negate(), ""); + modMakerFunds(userInfo.getUserId().intValue(), "LD", "收款消耗", userMakerQuota.getAmount().abs().negate(), "",order.getOrderNumber()); + return; + } + + + + }else { + UserPromotion userParent = userPromotionMapper.selectByUserIdMC(Long.valueOf(userInfo.getParentUserId())); + if (userParent == null){ + log.error("不存在的用户关系:{}",userInfo.getParentUserId()); + return; + } + + if (!"1".equals(userParent.getIsExtend())){ + log.error("商户用户类型异常:{},{}",userParent.getUserId(),userParent.getIsExtend()); + return; + } + BigDecimal profit = new BigDecimal(order.getConsumeFee()).multiply(new BigDecimal("0.5")).setScale(2, BigDecimal.ROUND_DOWN); + String s = String.valueOf(userParent.getUserId()); + Integer integer = Integer.valueOf(s); + this.modMakerFunds(integer, "SD", "免费额度", profit, "", order.getOrderNumber()); + return; + + } + } //增加提现金额 @Transactional(rollbackFor = Exception.class) @@ -181,10 +204,6 @@ public class UserMakerQuotaServiceImpl extends ServiceImpl { void sendProfitMessage(UserApp userApp, BigDecimal profitMoney, String orderNumber); Map teamList(String typeCode, Long userId, Integer page,Integer size,String name); + Map teamQuotaList(String typeCode, Long userId, Integer page,Integer size,String name); Map merchantListData(Long userId); } 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 e875802..181756c 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 @@ -135,21 +135,22 @@ public class MerchantProfitServiceImpl extends ServiceImpl teamList= merchantProfitMapper.getTeamList(typeCode, userId, page,size,name); - Integer countChild = merchantProfitMapper.getCountChild(userId, typeCode); - UserPromotion userPromotion = userPromotionMapper.selectByPrimaryKey(userId); - if (Objects.equals(userPromotion.getIsExtend(), "1")){ - List teamList = merchantProfitMapper.getTeamList(typeCode, userId, name, pagerSize, offset); - for (MerchantProfitVO values : teamList) { - values.setCurrentMonth(mapperOrderMapper.getPlatformAmtYestday(values.getMerchantCode(), - DateUtils.getBeginDayOfMonth(), DateUtils.getEndDayOfMonth())); - values.setConsumeFee(mapperOrderMapper.getAmountData(values.getMerchantCode())); - } - HashMap hashMap = new HashMap<>(); - hashMap.put("total", countChild); - hashMap.put("teamList", teamList); - return hashMap; - } +// UserPromotion userPromotion = userPromotionMapper.selectByPrimaryKey(userId); +// if (Objects.equals(userPromotion.getIsExtend(), "1")){ +// List teamList = merchantProfitMapper.getTeamList(typeCode, userId, name, pagerSize, offset); +// +// teamList.stream().parallel().forEach(values->{ +// values.setCurrentMonth(mapperOrderMapper.getPlatformAmtYestday(values.getMerchantCode(), +// DateUtils.getBeginDayOfMonth(), DateUtils.getEndDayOfMonth())); +// values.setConsumeFee(mapperOrderMapper.getAmountData(values.getMerchantCode())); +// }); +// +// HashMap hashMap = new HashMap<>(); +// hashMap.put("total", countChild); +// hashMap.put("teamList", teamList); +// return hashMap; +// } //商户列表 if ("MC".equals(typeCode)) { List teamList = merchantProfitMapper.getMerchantTeamList(typeCode, userId, name, pagerSize, offset); @@ -249,6 +250,29 @@ public class MerchantProfitServiceImpl extends ServiceImpl teamQuotaList(String typeCode, Long userId, Integer page, Integer size, String name) { + Integer pagerSize = size; + Integer offset = (page - 1) * size; + Integer countChild = merchantProfitMapper.getCountQuotaChild(userId, typeCode); + UserPromotion userPromotion = userPromotionMapper.selectByPrimaryKey(userId); + if (Objects.equals(userPromotion.getIsExtend(), "1")){ + List teamList = merchantProfitMapper.getTeamList(typeCode, userId, name, pagerSize, offset); + + teamList.stream().parallel().forEach(values->{ + values.setCurrentMonth(mapperOrderMapper.getPlatformAmtYestday(values.getMerchantCode(), + DateUtils.getBeginDayOfMonth(), DateUtils.getEndDayOfMonth())); + values.setConsumeFee(mapperOrderMapper.getAmountData(values.getMerchantCode())); + }); + + HashMap hashMap = new HashMap<>(); + hashMap.put("total", countChild); + hashMap.put("teamList", teamList); + return hashMap; + } + return new HashMap<>(); + } + @Override public Map merchantListData(Long userId) {