From 9f62e9f0bbabf467a8cd3c2af81a9cf61311092e Mon Sep 17 00:00:00 2001 From: Administrator <513693417@qq.com> Date: Tue, 22 Sep 2020 23:00:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=A2=E9=98=9F=E7=A6=8F=E8=B1=86=E7=BB=93?= =?UTF-8?q?=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BizMemberController.java | 2 +- .../controller/BizTeamRewardController.java | 126 +++++++++++++++ .../ruoyi/business/domain/BizTeamReward.java | 145 ++++++++++++++++++ .../business/mapper/BizMemberMapper.java | 17 ++ .../ruoyi/business/mapper/BizOrderMapper.java | 10 ++ .../business/mapper/BizTeamRewardMapper.java | 61 ++++++++ .../business/service/IBizMemberService.java | 8 + .../service/IBizTeamRewardService.java | 69 +++++++++ .../service/impl/BizMemberServiceImpl.java | 136 ++++++++++++++-- .../service/impl/BizOrderServiceImpl.java | 18 ++- .../impl/BizTeamRewardServiceImpl.java | 121 +++++++++++++++ .../com/ruoyi/business/task/BusinessTask.java | 9 +- .../mapper/business/BizMemberMapper.xml | 25 +++ .../mapper/business/BizOrderMapper.xml | 7 + .../mapper/business/BizTeamRewardMapper.xml | 103 +++++++++++++ .../business/member/accountTeam.html | 2 +- .../com/ruoyi/common/utils/DateUtils.java | 13 ++ sql/biz.sql | 4 +- 18 files changed, 851 insertions(+), 25 deletions(-) create mode 100644 ruoyi-business/src/main/java/com/ruoyi/business/controller/BizTeamRewardController.java create mode 100644 ruoyi-business/src/main/java/com/ruoyi/business/domain/BizTeamReward.java create mode 100644 ruoyi-business/src/main/java/com/ruoyi/business/mapper/BizTeamRewardMapper.java create mode 100644 ruoyi-business/src/main/java/com/ruoyi/business/service/IBizTeamRewardService.java create mode 100644 ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BizTeamRewardServiceImpl.java create mode 100644 ruoyi-business/src/main/resources/mapper/business/BizTeamRewardMapper.xml diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizMemberController.java b/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizMemberController.java index 75cf8f1f0..cb1df3f46 100644 --- a/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizMemberController.java +++ b/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizMemberController.java @@ -182,7 +182,7 @@ public class BizMemberController extends BaseController } //取得当前团队盒数对应分成 - private long getTeamDou(long totalNum, List levels, int numLimit) + public static long getTeamDou(long totalNum, List levels, int numLimit) { if (totalNum <= numLimit) return 0L; for (SysDictData data : levels) { diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizTeamRewardController.java b/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizTeamRewardController.java new file mode 100644 index 000000000..635c4b532 --- /dev/null +++ b/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizTeamRewardController.java @@ -0,0 +1,126 @@ +package com.ruoyi.business.controller; + +import java.util.List; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.business.domain.BizTeamReward; +import com.ruoyi.business.service.IBizTeamRewardService; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 团队奖励明细Controller + * + * @author ruoyi + * @date 2020-09-22 + */ +@Controller +@RequestMapping("/business/reward") +public class BizTeamRewardController extends BaseController +{ + private String prefix = "business/reward"; + + @Autowired + private IBizTeamRewardService bizTeamRewardService; + + @RequiresPermissions("business:reward:view") + @GetMapping() + public String reward() + { + return prefix + "/reward"; + } + + /** + * 查询团队奖励明细列表 + */ + @RequiresPermissions("business:reward:list") + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(BizTeamReward bizTeamReward) + { + startPage(); + List list = bizTeamRewardService.selectBizTeamRewardList(bizTeamReward); + return getDataTable(list); + } + + /** + * 导出团队奖励明细列表 + */ + @RequiresPermissions("business:reward:export") + @Log(title = "团队奖励明细", businessType = BusinessType.EXPORT) + @PostMapping("/export") + @ResponseBody + public AjaxResult export(BizTeamReward bizTeamReward) + { + List list = bizTeamRewardService.selectBizTeamRewardList(bizTeamReward); + ExcelUtil util = new ExcelUtil(BizTeamReward.class); + return util.exportExcel(list, "reward"); + } + + /** + * 新增团队奖励明细 + */ + @GetMapping("/add") + public String add() + { + return prefix + "/add"; + } + + /** + * 新增保存团队奖励明细 + */ + @RequiresPermissions("business:reward:add") + @Log(title = "团队奖励明细", businessType = BusinessType.INSERT) + @PostMapping("/add") + @ResponseBody + public AjaxResult addSave(BizTeamReward bizTeamReward) + { + return toAjax(bizTeamRewardService.insertBizTeamReward(bizTeamReward)); + } + + /** + * 修改团队奖励明细 + */ + @GetMapping("/edit/{id}") + public String edit(@PathVariable("id") Long id, ModelMap mmap) + { + BizTeamReward bizTeamReward = bizTeamRewardService.selectBizTeamRewardById(id); + mmap.put("bizTeamReward", bizTeamReward); + return prefix + "/edit"; + } + + /** + * 修改保存团队奖励明细 + */ + @RequiresPermissions("business:reward:edit") + @Log(title = "团队奖励明细", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(BizTeamReward bizTeamReward) + { + return toAjax(bizTeamRewardService.updateBizTeamReward(bizTeamReward)); + } + + /** + * 删除团队奖励明细 + */ + @RequiresPermissions("business:reward:remove") + @Log(title = "团队奖励明细", businessType = BusinessType.DELETE) + @PostMapping( "/remove") + @ResponseBody + public AjaxResult remove(String ids) + { + return toAjax(bizTeamRewardService.deleteBizTeamRewardByIds(ids)); + } +} diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/domain/BizTeamReward.java b/ruoyi-business/src/main/java/com/ruoyi/business/domain/BizTeamReward.java new file mode 100644 index 000000000..f3a5a8b5c --- /dev/null +++ b/ruoyi-business/src/main/java/com/ruoyi/business/domain/BizTeamReward.java @@ -0,0 +1,145 @@ +package com.ruoyi.business.domain; + +import java.math.BigDecimal; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 团队奖励明细对象 biz_team_reward + * + * @author ruoyi + * @date 2020-09-22 + */ +public class BizTeamReward extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + //团队奖励明细类型 + public static final int TEAM_REWARD_TYPE_RECOMM = 0; + public static final int TEAM_REWARD_TYPE_SECOND = 1; + public static final int TEAM_REWARD_TYPE_TEAM = 2; + + /** 团队奖励ID */ + private Long id; + + /** 会员ID */ + @Excel(name = "会员ID") + private Long memberId; + + /** 团队用户ID */ + @Excel(name = "团队用户ID") + private Long rewardMemberId; + + /** 用户购买产品数量 */ + @Excel(name = "用户购买产品数量") + private Long rewardProductCount; + + /** 奖励的福豆数量 */ + @Excel(name = "奖励的福豆数量") + private Long rewardAmount; + + /** 产品ID */ + @Excel(name = "产品ID") + private Long productId; + + /** 奖励类型:0:一级直推;1:二级推荐;2:平级; */ + @Excel(name = "奖励类型:0:一级直推;1:二级推荐;2:团队;") + private Integer rewardType; + + /** 奖励日期(xxxx-xx-xx) */ + @Excel(name = "奖励日期(xxxx-xx-xx)") + private String rewardDate; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setMemberId(Long memberId) + { + this.memberId = memberId; + } + + public Long getMemberId() + { + return memberId; + } + public void setRewardMemberId(Long rewardMemberId) + { + this.rewardMemberId = rewardMemberId; + } + + public Long getRewardMemberId() + { + return rewardMemberId; + } + public void setRewardProductCount(Long rewardProductCount) + { + this.rewardProductCount = rewardProductCount; + } + + public Long getRewardProductCount() + { + return rewardProductCount; + } + public void setRewardAmount(Long rewardAmount) + { + this.rewardAmount = rewardAmount; + } + + public Long getRewardAmount() + { + return rewardAmount; + } + public void setProductId(Long productId) + { + this.productId = productId; + } + + public Long getProductId() + { + return productId; + } + public void setRewardType(Integer rewardType) + { + this.rewardType = rewardType; + } + + public Integer getRewardType() + { + return rewardType; + } + public void setRewardDate(String rewardDate) + { + this.rewardDate = rewardDate; + } + + public String getRewardDate() + { + return rewardDate; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("memberId", getMemberId()) + .append("rewardMemberId", getRewardMemberId()) + .append("rewardProductCount", getRewardProductCount()) + .append("rewardAmount", getRewardAmount()) + .append("productId", getProductId()) + .append("rewardType", getRewardType()) + .append("rewardDate", getRewardDate()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/mapper/BizMemberMapper.java b/ruoyi-business/src/main/java/com/ruoyi/business/mapper/BizMemberMapper.java index 2a78da804..477a7e616 100644 --- a/ruoyi-business/src/main/java/com/ruoyi/business/mapper/BizMemberMapper.java +++ b/ruoyi-business/src/main/java/com/ruoyi/business/mapper/BizMemberMapper.java @@ -124,4 +124,21 @@ public interface BizMemberMapper * @return 结果 */ public int updateMemberLevel(BizMember bizMember); + + /** + * 查询需结算团队分成会员列表 + * + * @param minValue 团队分成最少盒数 + * @return 会员集合 + */ + public List selectTeamBenefitMember(int minValue); + + /** + * 查询直接下级会员列表 + * + * @param memberID 会员ID + * @return 会员ID集合 + */ + public List selectSubMember(Long memberID); + } diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/mapper/BizOrderMapper.java b/ruoyi-business/src/main/java/com/ruoyi/business/mapper/BizOrderMapper.java index 9ec294a10..cbb739ed1 100644 --- a/ruoyi-business/src/main/java/com/ruoyi/business/mapper/BizOrderMapper.java +++ b/ruoyi-business/src/main/java/com/ruoyi/business/mapper/BizOrderMapper.java @@ -1,6 +1,8 @@ package com.ruoyi.business.mapper; import java.util.List; +import java.util.Map; + import com.ruoyi.business.domain.BizOrder; import com.ruoyi.business.domain.BizOrderDetail; @@ -67,4 +69,12 @@ public interface BizOrderMapper * @return 结果 */ public int insertBizOrderDetail(BizOrderDetail bizOrderDetail); + + /** + * 查询团队订单 + * + * @param memberID 会员ID + * @return 订单集合 + */ + public List selectTeamBizOrder(Long memberID); } diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/mapper/BizTeamRewardMapper.java b/ruoyi-business/src/main/java/com/ruoyi/business/mapper/BizTeamRewardMapper.java new file mode 100644 index 000000000..4271fdc65 --- /dev/null +++ b/ruoyi-business/src/main/java/com/ruoyi/business/mapper/BizTeamRewardMapper.java @@ -0,0 +1,61 @@ +package com.ruoyi.business.mapper; + +import java.util.List; +import com.ruoyi.business.domain.BizTeamReward; + +/** + * 团队奖励明细Mapper接口 + * + * @author ruoyi + * @date 2020-09-22 + */ +public interface BizTeamRewardMapper +{ + /** + * 查询团队奖励明细 + * + * @param id 团队奖励明细ID + * @return 团队奖励明细 + */ + public BizTeamReward selectBizTeamRewardById(Long id); + + /** + * 查询团队奖励明细列表 + * + * @param bizTeamReward 团队奖励明细 + * @return 团队奖励明细集合 + */ + public List selectBizTeamRewardList(BizTeamReward bizTeamReward); + + /** + * 新增团队奖励明细 + * + * @param bizTeamReward 团队奖励明细 + * @return 结果 + */ + public int insertBizTeamReward(BizTeamReward bizTeamReward); + + /** + * 修改团队奖励明细 + * + * @param bizTeamReward 团队奖励明细 + * @return 结果 + */ + public int updateBizTeamReward(BizTeamReward bizTeamReward); + + /** + * 删除团队奖励明细 + * + * @param id 团队奖励明细ID + * @return 结果 + */ + public int deleteBizTeamRewardById(Long id); + + /** + * 批量删除团队奖励明细 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteBizTeamRewardByIds(String[] ids); +} diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/service/IBizMemberService.java b/ruoyi-business/src/main/java/com/ruoyi/business/service/IBizMemberService.java index 14b50a80c..1134fcc52 100644 --- a/ruoyi-business/src/main/java/com/ruoyi/business/service/IBizMemberService.java +++ b/ruoyi-business/src/main/java/com/ruoyi/business/service/IBizMemberService.java @@ -107,4 +107,12 @@ public interface IBizMemberService * @return 结果 */ public int doSpecialTask(); + + /** + * 执行团队福豆分成每日任务 + * + * @param + * @return 结果 + */ + public int doTeamTask(); } diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/service/IBizTeamRewardService.java b/ruoyi-business/src/main/java/com/ruoyi/business/service/IBizTeamRewardService.java new file mode 100644 index 000000000..f6b18dda2 --- /dev/null +++ b/ruoyi-business/src/main/java/com/ruoyi/business/service/IBizTeamRewardService.java @@ -0,0 +1,69 @@ +package com.ruoyi.business.service; + +import java.util.List; +import com.ruoyi.business.domain.BizTeamReward; + +/** + * 团队奖励明细Service接口 + * + * @author ruoyi + * @date 2020-09-22 + */ +public interface IBizTeamRewardService +{ + /** + * 查询团队奖励明细 + * + * @param id 团队奖励明细ID + * @return 团队奖励明细 + */ + public BizTeamReward selectBizTeamRewardById(Long id); + + /** + * 查询团队奖励明细列表 + * + * @param bizTeamReward 团队奖励明细 + * @return 团队奖励明细集合 + */ + public List selectBizTeamRewardList(BizTeamReward bizTeamReward); + + /** + * 新增团队奖励明细 + * + * @param bizTeamReward 团队奖励明细 + * @return 结果 + */ + public int insertBizTeamReward(BizTeamReward bizTeamReward); + + /** + * 插入团队明细 + * + * @param + * @return + */ + public void addTeamReward(Long memberID, Long rewardMemberId, Long rewardProductCount, Long rewardAmount, Long productId, int rewardType, String rewardDate); + + /** + * 修改团队奖励明细 + * + * @param bizTeamReward 团队奖励明细 + * @return 结果 + */ + public int updateBizTeamReward(BizTeamReward bizTeamReward); + + /** + * 批量删除团队奖励明细 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteBizTeamRewardByIds(String ids); + + /** + * 删除团队奖励明细信息 + * + * @param id 团队奖励明细ID + * @return 结果 + */ + public int deleteBizTeamRewardById(Long id); +} diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BizMemberServiceImpl.java b/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BizMemberServiceImpl.java index 41f3ef8f1..681a1eaa6 100644 --- a/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BizMemberServiceImpl.java +++ b/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BizMemberServiceImpl.java @@ -1,26 +1,30 @@ package com.ruoyi.business.service.impl; -import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - +import com.ruoyi.business.controller.BizMemberController; import com.ruoyi.business.domain.BizAccount; import com.ruoyi.business.domain.BizAccountDetail; +import com.ruoyi.business.domain.BizMember; +import com.ruoyi.business.domain.BizTeamReward; import com.ruoyi.business.mapper.BizAccountMapper; +import com.ruoyi.business.mapper.BizMemberMapper; +import com.ruoyi.business.mapper.BizOrderMapper; import com.ruoyi.business.service.IBizAccountService; +import com.ruoyi.business.service.IBizMemberService; +import com.ruoyi.business.service.IBizTeamRewardService; +import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.system.domain.SysDictData; import com.ruoyi.system.utils.DictUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.ruoyi.business.mapper.BizMemberMapper; -import com.ruoyi.business.domain.BizMember; -import com.ruoyi.business.service.IBizMemberService; -import com.ruoyi.common.core.text.Convert; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 会员Service业务层处理 @@ -34,9 +38,15 @@ public class BizMemberServiceImpl implements IBizMemberService @Resource private BizMemberMapper bizMemberMapper; - @Autowired + @Resource + private BizOrderMapper bizOrderMapper; + + @Resource private IBizAccountService bizAccountService; + @Resource + private IBizTeamRewardService bizTeamRewardService; + @Resource private BizAccountMapper bizAccountMapper; @@ -253,4 +263,108 @@ public class BizMemberServiceImpl implements IBizMemberService } return accessCount; } + + /** + * 执行团队福豆分成每日任务 + * + * @param + * @return 结果 + */ + @Override + @Transactional + public int doTeamTask() + { + //分成标准 + List levels = DictUtils.getDictCache("busi_teamaward_level"); + //分成盒数限制 + int numLimit = Integer.parseInt(DictUtils.getDictLabel("busi_award_set", "1")); + //日期记录上一天的 + String dateStr = DateUtils.getDate(-1); + + List memberList = bizMemberMapper.selectTeamBenefitMember(numLimit); + int accessCount = 0; + for (Map member : memberList) { + Long memberID = (Long) member.get("id"); + Long totalNum = ((BigDecimal) member.get("totalNum")).longValue(); + long selfDou = BizMemberController.getTeamDou(totalNum, levels, numLimit); + + Map temp = new HashMap(); + Map numMap = new HashMap(); + //直接下级列表 + List subList = bizMemberMapper.selectSubMember(memberID); + for (Long subID : subList) { + Map map = new HashMap(); + map.put("num", 0); + map.put("teamMembers", new ArrayList()); + temp.put(subID, map); + } + + List orderList = bizOrderMapper.selectTeamBizOrder(memberID); + int counter = 0; //剔除前numLimit盒 + for (Map order : orderList) { + Long buyerID = (Long) order.get("id"); + String allID = (String) order.get("all_id"); + int count = (Integer) order.get("product_count"); + for (Long subID : subList) { + if (buyerID.equals(subID) || testContains(allID, subID)) { //是自己或子级 + Map subMap = temp.get(subID); + int num = (Integer) subMap.get("num"); + subMap.put("num", num + count); + List chList = (List) subMap.get("teamMembers"); + if (!chList.contains(buyerID)) { + chList.add(buyerID); + } + break; + } + } + //没到限制盒数的订单剔除掉 + int oldCount = counter; + counter += count; + if (counter <= numLimit) continue; + if (oldCount <= numLimit) { + //有可能一个订单同时包含有效盒和无效盒 + count = counter - numLimit; + } + //存入每个团队成员的明细 + Integer chTotal = (Integer) numMap.get(buyerID); + if (chTotal == null) chTotal = 0; + chTotal += count; + numMap.put(buyerID, chTotal); + } + //根据直接下级计算数据 + long totalBenifit = 0L; + for (Long subID : subList) { + Map subMap = temp.get(subID); + int subTeamNum = (Integer) subMap.get("num"); + //比较subDou和selfDou得出分成数值 + long subDou = BizMemberController.getTeamDou(subTeamNum, levels, numLimit); + long getDou = selfDou - subDou; + if (getDou <= 0) continue; + List chList = (List) subMap.get("teamMembers"); + //子级用户对数据 + for (Long chID : chList) { + //子级盒数 + Integer chTotal = numMap.get(chID); + if (chTotal == null || chTotal <= 0) continue; + long benifit = getDou * chTotal; //该子用户分成 + //插入数据 + bizTeamRewardService.addTeamReward(memberID, chID, (long) chTotal, benifit, null, BizTeamReward.TEAM_REWARD_TYPE_TEAM, dateStr); + totalBenifit += benifit; + } + } + //团队福豆及福豆田 + if (totalBenifit > 0) { + accessCount ++; + bizAccountService.accountChange(memberID, BizAccount.DOU_TEAM, BizAccountDetail.DOU_DETAIL_TYPE_CHARGE, totalBenifit,"", BizAccountDetail.DOU_DESC_TEAM); + bizAccountService.accountChange(memberID, BizAccount.DOU_FIELD, BizAccountDetail.DOU_DETAIL_TYPE_CHARGE, totalBenifit,"", BizAccountDetail.DOU_DESC_TEAM); + } + } + return accessCount; + } + + //测试all包含字符串 + private boolean testContains(String allID, Long id) + { + return ("," + allID + ",").indexOf("," + id + ",") >= 0; + } } diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BizOrderServiceImpl.java b/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BizOrderServiceImpl.java index d15f0a8a9..9e8b09367 100644 --- a/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BizOrderServiceImpl.java +++ b/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BizOrderServiceImpl.java @@ -44,6 +44,9 @@ public class BizOrderServiceImpl implements IBizOrderService @Resource private BizAccountServiceImpl bizAccountService; + @Resource + private BizTeamRewardServiceImpl bizTeamRewardService; + /** * 查询订单 * @@ -231,21 +234,26 @@ public class BizOrderServiceImpl implements IBizOrderService Long recMemberID = member.getRecommendId(); if (recMemberID != null && recMemberID != 0) { //取出直推奖励金额 - String award1 = DictUtils.getDictLabel("busi_recommend_award", "1"); - result = bizAccountService.accountChange(memberID, BizAccount.DOU_TEAM, BizAccountDetail.DOU_DETAIL_TYPE_CHARGE, Long.parseLong(award1), businessCode, BizAccountDetail.DOU_DESC_RECOMM); + long award1 = productNum * Long.parseLong(DictUtils.getDictLabel("busi_recommend_award", "1")); + result = bizAccountService.accountChange(recMemberID, BizAccount.DOU_TEAM, BizAccountDetail.DOU_DETAIL_TYPE_CHARGE, award1, businessCode, BizAccountDetail.DOU_DESC_RECOMM); if (!result) { return AjaxResult.error("扣款失败,请联系管理员"); } + //增加团队积分数据(直推) + String dateStr = DateUtils.getDate(-1); //日期记录上一天的 + bizTeamRewardService.addTeamReward(recMemberID, memberID, (long) productNum, award1, productID, BizTeamReward.TEAM_REWARD_TYPE_RECOMM, dateStr); //判断二级直推(需要3个下级) BizMember recommendMember = bizMemberMapper.selectBizMemberSimple(recMemberID); Long topMemberID = recommendMember.getRecommendId(); //判断有效下级数不少于三个 - if (bizMemberMapper.getValidChildCount(topMemberID) >= BizAccount.SECOND_AWARD_CHILD_LIMIT) { - String award2 = DictUtils.getDictLabel("busi_recommend_award", "2"); - result = bizAccountService.accountChange(memberID, BizAccount.DOU_TEAM, BizAccountDetail.DOU_DETAIL_TYPE_CHARGE, Long.parseLong(award2), businessCode, BizAccountDetail.DOU_DESC_SECOND); + if (recMemberID != null && bizMemberMapper.getValidChildCount(topMemberID) >= BizAccount.SECOND_AWARD_CHILD_LIMIT) { + long award2 = productNum * Long.parseLong(DictUtils.getDictLabel("busi_recommend_award", "2")); + result = bizAccountService.accountChange(topMemberID, BizAccount.DOU_TEAM, BizAccountDetail.DOU_DETAIL_TYPE_CHARGE, award2, businessCode, BizAccountDetail.DOU_DESC_SECOND); if (!result) { return AjaxResult.error("扣款失败,请联系管理员"); } + //增加团队积分数据(二推) + bizTeamRewardService.addTeamReward(topMemberID, memberID, (long) productNum, award2, productID, BizTeamReward.TEAM_REWARD_TYPE_SECOND, dateStr); } } } diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BizTeamRewardServiceImpl.java b/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BizTeamRewardServiceImpl.java new file mode 100644 index 000000000..6d9b20095 --- /dev/null +++ b/ruoyi-business/src/main/java/com/ruoyi/business/service/impl/BizTeamRewardServiceImpl.java @@ -0,0 +1,121 @@ +package com.ruoyi.business.service.impl; + +import java.util.Date; +import java.util.List; +import com.ruoyi.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.business.mapper.BizTeamRewardMapper; +import com.ruoyi.business.domain.BizTeamReward; +import com.ruoyi.business.service.IBizTeamRewardService; +import com.ruoyi.common.core.text.Convert; + +import javax.annotation.Resource; + +/** + * 团队奖励明细Service业务层处理 + * + * @author ruoyi + * @date 2020-09-22 + */ +@Service +public class BizTeamRewardServiceImpl implements IBizTeamRewardService +{ + @Resource + private BizTeamRewardMapper bizTeamRewardMapper; + + /** + * 查询团队奖励明细 + * + * @param id 团队奖励明细ID + * @return 团队奖励明细 + */ + @Override + public BizTeamReward selectBizTeamRewardById(Long id) + { + return bizTeamRewardMapper.selectBizTeamRewardById(id); + } + + /** + * 查询团队奖励明细列表 + * + * @param bizTeamReward 团队奖励明细 + * @return 团队奖励明细 + */ + @Override + public List selectBizTeamRewardList(BizTeamReward bizTeamReward) + { + return bizTeamRewardMapper.selectBizTeamRewardList(bizTeamReward); + } + + /** + * 新增团队奖励明细 + * + * @param bizTeamReward 团队奖励明细 + * @return 结果 + */ + @Override + public int insertBizTeamReward(BizTeamReward bizTeamReward) + { + bizTeamReward.setCreateTime(DateUtils.getNowDate()); + return bizTeamRewardMapper.insertBizTeamReward(bizTeamReward); + } + + /** + * 插入团队明细 + * + * @param + * @return + */ + @Override + public void addTeamReward(Long memberID, Long rewardMemberId, Long rewardProductCount, Long rewardAmount, Long productId, int rewardType, String rewardDate) + { + BizTeamReward bizTeamReward = new BizTeamReward(); + bizTeamReward.setMemberId(memberID); + bizTeamReward.setRewardMemberId(rewardMemberId); + bizTeamReward.setRewardProductCount(rewardProductCount); + bizTeamReward.setRewardAmount(rewardAmount); + bizTeamReward.setProductId(productId); + bizTeamReward.setRewardType(rewardType); + bizTeamReward.setRewardDate(rewardDate); + bizTeamReward.setCreateTime(new Date()); + insertBizTeamReward(bizTeamReward); + } + + /** + * 修改团队奖励明细 + * + * @param bizTeamReward 团队奖励明细 + * @return 结果 + */ + @Override + public int updateBizTeamReward(BizTeamReward bizTeamReward) + { + bizTeamReward.setUpdateTime(DateUtils.getNowDate()); + return bizTeamRewardMapper.updateBizTeamReward(bizTeamReward); + } + + /** + * 删除团队奖励明细对象 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + @Override + public int deleteBizTeamRewardByIds(String ids) + { + return bizTeamRewardMapper.deleteBizTeamRewardByIds(Convert.toStrArray(ids)); + } + + /** + * 删除团队奖励明细信息 + * + * @param id 团队奖励明细ID + * @return 结果 + */ + @Override + public int deleteBizTeamRewardById(Long id) + { + return bizTeamRewardMapper.deleteBizTeamRewardById(id); + } +} diff --git a/ruoyi-business/src/main/java/com/ruoyi/business/task/BusinessTask.java b/ruoyi-business/src/main/java/com/ruoyi/business/task/BusinessTask.java index 4d6f66f99..169f19a27 100644 --- a/ruoyi-business/src/main/java/com/ruoyi/business/task/BusinessTask.java +++ b/ruoyi-business/src/main/java/com/ruoyi/business/task/BusinessTask.java @@ -43,7 +43,7 @@ public class BusinessTask { LogUtils.getAccessLog().info("======今日非休息日,开始执行福豆相关任务======"); //专项划拨任务 - doSpecialTask(); + //doSpecialTask(); //团队福豆分成任务 doTeamTask(); @@ -69,7 +69,7 @@ public class BusinessTask { try { int accessCount = bizMemberService.doSpecialTask(); - LogUtils.getAccessLog().info("======执行专项划拨任务完成,处理会员" + accessCount + "条======"); + LogUtils.getAccessLog().info("======执行专项划拨任务完成,处理会员数据" + accessCount + "条======"); } catch (Exception ex) { ex.printStackTrace(); LogUtils.getAccessLog().error("======执行专项划拨任务出错======" + ex.getMessage()); @@ -80,10 +80,9 @@ public class BusinessTask { private void doTeamTask() { try { - int numLimit = Integer.parseInt(DictUtils.getDictLabel("busi_award_set", "1")); + int accessCount = bizMemberService.doTeamTask(); - - LogUtils.getAccessLog().info("======执行团队福豆分成任务完成======"); + LogUtils.getAccessLog().info("======执行团队福豆分成任务完成,处理会员数据" + accessCount + "条======"); } catch (Exception ex) { ex.printStackTrace(); LogUtils.getAccessLog().error("======执行团队福豆分成任务出错======" + ex.getMessage()); diff --git a/ruoyi-business/src/main/resources/mapper/business/BizMemberMapper.xml b/ruoyi-business/src/main/resources/mapper/business/BizMemberMapper.xml index 3fd0246b5..f31ef6603 100644 --- a/ruoyi-business/src/main/resources/mapper/business/BizMemberMapper.xml +++ b/ruoyi-business/src/main/resources/mapper/business/BizMemberMapper.xml @@ -163,4 +163,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" set special_level = #{specialLevel} where id = #{id} + + + + \ No newline at end of file diff --git a/ruoyi-business/src/main/resources/mapper/business/BizOrderMapper.xml b/ruoyi-business/src/main/resources/mapper/business/BizOrderMapper.xml index da90c36af..fe4d44cf2 100644 --- a/ruoyi-business/src/main/resources/mapper/business/BizOrderMapper.xml +++ b/ruoyi-business/src/main/resources/mapper/business/BizOrderMapper.xml @@ -156,4 +156,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + \ No newline at end of file diff --git a/ruoyi-business/src/main/resources/mapper/business/BizTeamRewardMapper.xml b/ruoyi-business/src/main/resources/mapper/business/BizTeamRewardMapper.xml new file mode 100644 index 000000000..26366aec4 --- /dev/null +++ b/ruoyi-business/src/main/resources/mapper/business/BizTeamRewardMapper.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + select id, member_id, reward_member_id, reward_product_count, reward_amount, product_id, reward_type, reward_date, create_by, create_time, update_by, update_time from biz_team_reward + + + + + + + + insert into biz_team_reward + + member_id, + reward_member_id, + reward_product_count, + reward_amount, + product_id, + reward_type, + reward_date, + create_by, + create_time, + update_by, + update_time, + + + #{memberId}, + #{rewardMemberId}, + #{rewardProductCount}, + #{rewardAmount}, + #{productId}, + #{rewardType}, + #{rewardDate}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update biz_team_reward + + member_id = #{memberId}, + reward_member_id = #{rewardMemberId}, + reward_product_count = #{rewardProductCount}, + reward_amount = #{rewardAmount}, + product_id = #{productId}, + reward_type = #{rewardType}, + reward_date = #{rewardDate}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from biz_team_reward where id = #{id} + + + + delete from biz_team_reward where id in + + #{id} + + + + \ No newline at end of file diff --git a/ruoyi-business/src/main/resources/templates/business/member/accountTeam.html b/ruoyi-business/src/main/resources/templates/business/member/accountTeam.html index 44dcf727b..acd31c2a5 100644 --- a/ruoyi-business/src/main/resources/templates/business/member/accountTeam.html +++ b/ruoyi-business/src/main/resources/templates/business/member/accountTeam.html @@ -29,7 +29,7 @@ .childDiv{padding:7px 0 0 0} .childDiv .cont{padding-left: 20px} .childDiv span{display:block;font-size: 14px;line-height: 24px;padding:0 0 4px 4px;cursor:pointer;border-radius: 5px;border:1px solid #AAAAAA} - .childDiv span.noneChild{padding-left: 29px;padding-top: 2px;padding-bottom: 2px} + .childDiv span.noneChild{padding-left: 19px;padding-top: 2px;padding-bottom: 2px} .childDiv span ss{font-family: 宋体}