From 7de4a7a9b1a35d8a6c16881879ad556e5798b1ea Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Wed, 14 Aug 2024 01:39:01 +0800 Subject: [PATCH 1/2] //OfflineActivity --- .../market/WxOfflineActivityController.java | 19 +- .../WxOfflineActivityRecordController.java | 2 - .../po/WxOfflineActivityGrantAward.java | 2 + .../WxOfflineActivityGrantAwardMapper.java | 2 + .../mapper/WxOfflineActivityRecordMapper.java | 2 + .../WxOfflineActivityGrantAwardService.java | 4 + .../service/impl/WxGameServiceImpl.java | 2 +- ...xOfflineActivityGrantAwardServiceImpl.java | 166 +++++++++++++++++- .../impl/WxOfflineActivityServiceImpl.java | 3 + .../java/com/iformall/utils/DownFileUtil.java | 14 ++ .../WxOfflineActivityGrantAwardMapper.xml | 40 +++++ .../WxOfflineActivityGrantItemMapper.xml | 2 +- .../mapper/WxOfflineActivityRecordMapper.xml | 13 ++ 13 files changed, 263 insertions(+), 8 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java index a9fa6ada6..5f038950b 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java @@ -10,17 +10,21 @@ import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity.SortField; import com.iformall.domain.po.base.TenantEntity; import com.iformall.enums.*; +import com.iformall.exception.MallinkException; import com.iformall.service.*; import com.iformall.utils.DateUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import jodd.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.*; @@ -37,6 +41,9 @@ public class WxOfflineActivityController extends BaseController { @Autowired private WxOfflineActivityService wxOfflineActivityService; + @Autowired + private WxOfflineActivityGrantAwardService wxOfflineActivityGrantAwardService; + @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ @@ -52,7 +59,6 @@ public class WxOfflineActivityController extends BaseController { return new ResultData(page); } - @ApiOperation("新增修改接口") @PostMapping("saveOrUpdate") public ResultData saveOrUpdate(@RequestBody WxOfflineActivity wxOfflineActivity) { @@ -129,5 +135,16 @@ public class WxOfflineActivityController extends BaseController { return new ResultData(activity); } + @ApiOperation("活动奖品发放明细导出") + @GetMapping("/grantExport") + public void grantExport(@ModelAttribute WxOfflineActivity wxOfflineActivity, HttpServletRequest request, HttpServletResponse response) { + if(wxOfflineActivity.getId() == null){ + throw new MallinkException(Result.ERROR,"ID 为空"); + } + + TenantEntity tenantInfo = getTenantInfo(); + wxOfflineActivity.updateTenantInfo(tenantInfo); + wxOfflineActivityGrantAwardService.activityGrantExport(request,response,wxOfflineActivity); + } } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java index 7db661c8a..606ebc417 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityRecordController.java @@ -63,8 +63,6 @@ public class WxOfflineActivityRecordController extends BaseController { return new ResultData(waitAudiCount); } - - @ApiOperation("导出") @GetMapping("/export") public void export(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord, HttpServletRequest request, HttpServletResponse response) { diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java index e51a70fd1..465909c78 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java @@ -86,6 +86,8 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ @TableField(value = "create_by") private Long createBy; @TableField(exist = false) + private List createByName; + @TableField(exist = false) private List createByIds; /** diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java index 4b02d1624..1699085fa 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantAwardMapper.java @@ -19,6 +19,8 @@ public interface WxOfflineActivityGrantAwardMapper extends CommonMapper getRecordIdList(WxOfflineActivityGrantAward grantAwardQ); WxOfflineActivityGrantAward selectById(@Param("id")Long id, @Param("tenantId")String tenantId); + + List findList(WxOfflineActivityGrantAward grantAwardQ); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java index b1abb9fd2..4e972f736 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityRecordMapper.java @@ -29,6 +29,8 @@ public interface WxOfflineActivityRecordMapper extends CommonMapper findGrantList(@Param("grantId")Long grantId, @Param("tenantId")String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java index 00999c067..246bd646c 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java @@ -1,5 +1,6 @@ package com.iformall.service; +import com.iformall.domain.po.WxOfflineActivity; import com.iformall.domain.po.WxOfflineActivityGrantAward; import com.baomidou.mybatisplus.extension.service.IService; import com.iformall.domain.po.WxOfflineActivityRecord; @@ -7,6 +8,7 @@ import com.iformall.domain.po.base.TenantEntity; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.net.MalformedURLException; import java.util.List; import java.util.Map; @@ -30,4 +32,6 @@ public interface WxOfflineActivityGrantAwardService { void recordExport(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityRecord wxOfflineActivityRecord); WxOfflineActivityGrantAward grantAwardDetail(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); + + void activityGrantExport(HttpServletRequest request, HttpServletResponse response, WxOfflineActivity wxOfflineActivity); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java index 8db7cc74b..c82ab143a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java @@ -451,7 +451,7 @@ public class WxGameServiceImpl implements WxGameService { List couponIdsList = wxGame.getCouponIdsList(); int x = (int)(Math.random()*100+1); int y = 0; - if(couponIdsList != null || couponIdsList.size() > 0){ + if(couponIdsList != null && !couponIdsList.isEmpty()){ for (Object a:couponIdsList) { int weight = 0; if(a instanceof WxCouponChannelVo){ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index e6222f299..9b064c531 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -1,5 +1,7 @@ package com.iformall.service.impl; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; +import cn.afterturn.easypoi.excel.entity.vo.BaseEntityTypeConstants; import com.alibaba.fastjson.JSON; import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -13,6 +15,7 @@ import com.iformall.exception.MallinkException; import com.iformall.mapper.*; import com.iformall.service.*; import com.iformall.utils.DateUtils; +import com.iformall.utils.DownFileUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -20,6 +23,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; +import java.net.MalformedURLException; +import java.net.URL; import java.text.NumberFormat; import java.util.*; import java.util.function.Function; @@ -60,6 +65,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity @Autowired WxOfflineActivityItemService wxOfflineActivityItemService; + @Autowired + WxOfflineActivityService wxOfflineActivityService; + @Autowired WxOfflineActivityGrantSettlementService wxOfflineActivityGrantSettlementService; @@ -183,7 +191,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityItem.setIsMeet(true); //奖项限制数量 int limitCount = 0; - if(activityItem.getAwardsItemPrice() != null || activityItem.getAwardsItemPrice() > 0){ + if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice() > 0){ limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); } if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 @@ -345,7 +353,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } //奖项限制数量 int limitCount = 0; - if(activityItem.getAwardsItemPrice() != null || activityItem.getAwardsItemPrice() > 0){ + if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice() > 0){ limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); } if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 @@ -406,7 +414,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); } - } if(i == 0){ throw new MallinkException(Result.ERROR, "请检查是否有活动奖项"); @@ -519,6 +526,159 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity return grantAward; } + @Override + public void activityGrantExport(HttpServletRequest request, HttpServletResponse response, WxOfflineActivity wxOfflineActivity) { + WxOfflineActivity activity = wxOfflineActivityService.getInfoById(wxOfflineActivity.getId(), wxOfflineActivity.getTenantId()); + if(activity == null){ + throw new MallinkException(Result.ERROR, "未查询到活动"); + } + List headList = getActivityGrantExportHead(activity); + + List> activityGrantObjectList = new ArrayList<>(); + + WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); + grantAwardQ.updateTenantInfo(wxOfflineActivity); + grantAwardQ.setActivityId(wxOfflineActivity.getId()); + List grantAwardList = wxOfflineActivityGrantAwardMapper.findList(grantAwardQ); + if(grantAwardList != null){ + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(wxOfflineActivity); + Map merchantMap = wxMerchantService.getIdAndNamesMap(merchantQ); + + MallUserInfo userInfoQ = new MallUserInfo(); + userInfoQ.updateTenantInfo(wxOfflineActivity); + Map userMap = mallUserInfoService.getUserMap(userInfoQ); + // + WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); + grantItemQ.updateTenantInfo(wxOfflineActivity); + grantItemQ.setActivityId(wxOfflineActivity.getId()); + List grantItem = wxOfflineActivityGrantItemMapper.findList(grantItemQ); + Map> grantItemMap = grantItem.stream().collect(Collectors.groupingBy(WxOfflineActivityGrantItem::getGrantId)); + for (WxOfflineActivityGrantAward grantAward : grantAwardList) { + List recordList = wxOfflineActivityRecordMapper.findGrantList(grantAward.getId(),grantAward.getTenantId()); + List grantItemList = grantItemMap.get(grantAward.getId()); + Map activityGrantObject = new HashMap<>(); + activityGrantObject.put("activityName",activity.getName()); + List merchantOrder = new ArrayList<>(); + for (WxOfflineActivityRecord record : recordList) { + merchantOrder.add(record.getOrderNo()+"["+merchantMap.get(record.getMerchantId())+"]"); + } + activityGrantObject.put("merchantOrder",merchantOrder.stream().collect(Collectors.joining(";"))); + activityGrantObject.put("orderMoneySum",grantAward.getOrderMoneySum()); + activityGrantObject.put("cusName",grantAward.getCusName()); + activityGrantObject.put("cusPhone",grantAward.getCusPhone()); + activityGrantObject.put("realName",grantAward.getRealName()); + activityGrantObject.put("realCard",grantAward.getRealCard()); + activityGrantObject.put("createByName",grantAward.getCreateBy()!=null?userMap.get(grantAward.getCreateBy()).getName():""); + activityGrantObject.put("createDate",DateUtils.date2String(grantAward.getCreateDate())); + Map> granActivityItemMap = grantItemList.stream().collect(Collectors.groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); + for (WxOfflineActivityItem activityItem : activity.getActivityItemList()) { + List granActivityItemList = granActivityItemMap.get(activityItem.getId()); + if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ + Map granAwardItamMap = new HashMap<>(); + if(granActivityItemList != null && !granActivityItemList.isEmpty()){ + granAwardItamMap = granActivityItemList.stream().collect(Collectors.toMap(WxOfflineActivityGrantItem::getAwardItamId, Function.identity())); + } + for (WxOfflineActivityAwardsItem awardsItem : activityItem.getActivityAwardsItemList()) { + WxOfflineActivityGrantItem grantAwardsItem = granAwardItamMap.get(awardsItem.getId()); + if(grantAwardsItem != null){ + activityGrantObject.put(String.valueOf(activityItem.getId())+String.valueOf(awardsItem.getId()),grantAwardsItem.getAwardCount()); + } else { + activityGrantObject.put(String.valueOf(activityItem.getId())+String.valueOf(awardsItem.getId()),0); + } + } + }else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ + if(granActivityItemList != null && !granActivityItemList.isEmpty()){ + activityGrantObject.put(String.valueOf(activityItem.getId()),granActivityItemList.get(0).getAwardName()); + } + }else if(EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())){ + if(granActivityItemList != null && !granActivityItemList.isEmpty()){ + activityGrantObject.put("r"+String.valueOf(activityItem.getId()),granActivityItemList.get(0).getCashBackRatio()); + activityGrantObject.put("p"+String.valueOf(activityItem.getId()),granActivityItemList.get(0).getAwardPrice()); + }else{ + activityGrantObject.put("r"+String.valueOf(activityItem.getId()),0); + activityGrantObject.put("p"+String.valueOf(activityItem.getId()),0); + } + } + } + activityGrantObject.put("lotteryNum",grantAward.getLotteryNum()); + activityGrantObject.put("lotteryCount",grantAward.getLotteryCount()); + activityGrantObject.put("anniversaryLotteryNum",grantAward.getAnniversaryLotteryNum()); +// if(StringUtils.isNotBlank(grantAward.getSignImg())){ +// try{ +// activityGrantObject.put("signImg",DownFileUtil.url2byte(grantAward.getSignImg())); +// }catch (Exception e){} +// } + activityGrantObjectList.add(activityGrantObject); + } + } + + excelService.exportExcel(headList, activityGrantObjectList, null, "活动奖品发放明细", "活动奖品发放明细.xlsx",true, response); + } + + private List getActivityGrantExportHead(WxOfflineActivity activity){ + List headList = new ArrayList<>(); + ExcelExportEntity entity1 = new ExcelExportEntity("活动名称","activityName",20); + headList.add(entity1); + ExcelExportEntity entity2 = new ExcelExportEntity("订单[门店]","merchantOrder",20); + headList.add(entity2); + ExcelExportEntity entity3 = new ExcelExportEntity("订单总金额","orderMoneySum",20); + headList.add(entity3); + ExcelExportEntity entity4 = new ExcelExportEntity("客户姓名","cusName",20); + headList.add(entity4); + ExcelExportEntity entity5 = new ExcelExportEntity("客户电话","cusPhone",20); + headList.add(entity5); + ExcelExportEntity entity6 = new ExcelExportEntity("实际领奖人","realName",20); + headList.add(entity6); + ExcelExportEntity entity7 = new ExcelExportEntity("实际领奖人身份证号","realCard",20); + headList.add(entity7); + ExcelExportEntity entity8 = new ExcelExportEntity("发奖人","createByName",20); + headList.add(entity8); + ExcelExportEntity entity9 = new ExcelExportEntity("发奖时间","createDate",20); + headList.add(entity9); + + for (WxOfflineActivityItem activityItem : activity.getActivityItemList()) { + //抽奖活动 + //【活动项名称】【奖项名称】数量 + if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ + for (WxOfflineActivityAwardsItem awardsItem : activityItem.getActivityAwardsItemList()) { + ExcelExportEntity entity10 = new ExcelExportEntity("【"+activityItem.getName()+"】【"+awardsItem.getName()+"】数量", + String.valueOf(activityItem.getId())+String.valueOf(awardsItem.getId()),20); + headList.add(entity10); + } + } + //满额赠礼活动 + //【活动项名称】奖项 + else if (EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())) { + ExcelExportEntity entity11 = new ExcelExportEntity("【"+activityItem.getName()+"】奖项", + String.valueOf(activityItem.getId()),20); + headList.add(entity11); + } + //返现活动 + //【活动项名称】返现比例 + //【活动项名称】返现金额 + else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { + ExcelExportEntity entity12 = new ExcelExportEntity("【"+activityItem.getName()+"】返现比例", + "r"+String.valueOf(activityItem.getId()),20); + headList.add(entity12); + ExcelExportEntity entity13 = new ExcelExportEntity("【"+activityItem.getName()+"】返现金额", + "p"+String.valueOf(activityItem.getId()),20); + headList.add(entity13); + } + } + ExcelExportEntity entity14 = new ExcelExportEntity("抽奖券编码","lotteryNum",20); + headList.add(entity14); + ExcelExportEntity entity15 = new ExcelExportEntity("抽奖券数量","lotteryCount",20); + headList.add(entity15); + ExcelExportEntity entity16 = new ExcelExportEntity("周年庆抽奖编码","anniversaryLotteryNum",20); + headList.add(entity16); + ExcelExportEntity entity17 = new ExcelExportEntity("签名图片","signImg",20); +// entity17.setType(BaseEntityTypeConstants.IMAGE_TYPE); + headList.add(entity17); + + return headList; + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java index 1c8dbfdf6..9813fa9b7 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityServiceImpl.java @@ -146,6 +146,9 @@ public class WxOfflineActivityServiceImpl implements WxOfflineActivityService{ @Override public WxOfflineActivity getInfoById(Long id, String tenantId) { WxOfflineActivity wxOfflineActivity = wxOfflineActivityMapper.selectById(id, tenantId); + if (wxOfflineActivity == null) { + return null; + } List activityItemList = wxOfflineActivityItemService.getActivityItemList(wxOfflineActivity.getId(),tenantId); wxOfflineActivity.setActivityItemList(activityItemList); if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(wxOfflineActivity.getAllMerchant())){ diff --git a/mallinkService/src/main/java/com/iformall/utils/DownFileUtil.java b/mallinkService/src/main/java/com/iformall/utils/DownFileUtil.java index 362b72ed6..8aa397097 100644 --- a/mallinkService/src/main/java/com/iformall/utils/DownFileUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/DownFileUtil.java @@ -82,4 +82,18 @@ public class DownFileUtil { return bos.toByteArray(); } + public static byte[] url2byte(String urlStr) throws IOException { + URL url = new URL(urlStr); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + //设置超时间为3秒 + conn.setConnectTimeout(3 * 1000); + //防止屏蔽程序抓取而返回403错误 + conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); + + //得到输入流 + InputStream inputStream = conn.getInputStream(); + //获取自己数组 + return readInputStream(inputStream); + } + } diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml index 57a4f31c4..10b6f60ba 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml @@ -33,6 +33,46 @@ lottery_count,anniversary_lottery_num + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `activity_id` = #{activityId} + + + + and `cus_name` like concat('%', #{cusName},'%') + + + + and `cus_phone` = #{cusPhone} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + select r.id,r.tenant_id,r.parent_tenant_id, + r.order_no,r.order_money,r.cus_name, + r.real_cus_name,r.cus_phone,r.cus_address, + r.cus_card,r.lottery_num,r.lottery_count, + r.anniversary_lottery_num,r.create_by,r.merchant_id,r.business_id, + r.create_date,r.update_date,r.audit_remark, + r.audit_status,r.audit_by,audit_time + from wx_offline_activity_record_grant rg + left join wx_offline_activity_record r on rg.record_id = r.id + where rg.grant_id = #{grantId} and rg.tenant_id=#{tenantId} + + From c7d47b7126b869dee418cd5b43c1cbd41a1d33bf Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Wed, 14 Aug 2024 03:08:02 +0800 Subject: [PATCH 2/2] //OfflineActivity --- .../iformall/domain/po/WxOfflineActivity.java | 6 ++- .../po/WxOfflineActivityAwardsItem.java | 6 +-- .../po/WxOfflineActivityGrantAward.java | 3 +- .../domain/po/WxOfflineActivityGrantItem.java | 6 +-- .../po/WxOfflineActivityGrantSettlement.java | 37 +++++-------------- .../domain/po/WxOfflineActivityItem.java | 6 ++- .../domain/po/WxOfflineActivityRecord.java | 9 +---- .../vo/OfflineActivityRecordStatistics.java | 3 +- .../domain/vo/OfflineActivitySettlement.java | 9 +++-- .../OfflineActivitySettlementStatistics.java | 7 ++-- ...xOfflineActivityAwardsItemServiceImpl.java | 10 ++--- ...xOfflineActivityGrantAwardServiceImpl.java | 35 +++++++++--------- ...WxOfflineActivityGrantItemServiceImpl.java | 12 +++--- ...ineActivityGrantSettlementServiceImpl.java | 34 +++++++++++------ .../WxOfflineActivityItemServiceImpl.java | 7 ++-- .../WxOfflineActivityAwardsItemMapper.xml | 6 +-- .../WxOfflineActivityGrantAwardMapper.xml | 2 +- .../WxOfflineActivityGrantItemMapper.xml | 10 ++--- ...WxOfflineActivityGrantSettlementMapper.xml | 16 ++++---- .../mapper/WxOfflineActivityItemMapper.xml | 4 +- .../mapper/WxOfflineActivityRecordMapper.xml | 2 +- 21 files changed, 114 insertions(+), 116 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java index af96ea769..0f962cf43 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivity.java @@ -3,6 +3,8 @@ package com.iformall.domain.po; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; + +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -128,10 +130,10 @@ public class WxOfflineActivity extends TenantEntity { * 发放总额 */ @TableField(exist = false) - private Integer grantPrice; + private BigDecimal grantPrice; /** * 商户结算总额 */ @TableField(exist = false) - private Integer merchantSettlmentPrice; + private BigDecimal merchantSettlmentPrice; } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java index 8807d8fbf..f2511929b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityAwardsItem.java @@ -48,13 +48,13 @@ public class WxOfflineActivityAwardsItem extends TenantEntity { * 限制最小金额 */ @TableField(value = "min_amount") - private Integer minAmount; + private BigDecimal minAmount; /** * 限制最大金额 */ @TableField(value = "max_amount") - private Integer maxAmount; + private BigDecimal maxAmount; /** * 返现比例(与奖项价值2选1) @@ -66,7 +66,7 @@ public class WxOfflineActivityAwardsItem extends TenantEntity { * 奖项价值 */ @TableField(value = "price") - private Integer price; + private BigDecimal price; /** * 分担规则(0-商管 1-商户 2-分担) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java index 465909c78..967af5db7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -42,7 +43,7 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ * 订单总金额 */ @TableField(value = "order_money_sum") - private Integer orderMoneySum; + private BigDecimal orderMoneySum; /** * 订单数量 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java index a227f1703..3b5f84b3d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java @@ -86,13 +86,13 @@ public class WxOfflineActivityGrantItem extends TenantEntity { * 奖项限制最小金额 */ @TableField(value = "award_min_amount") - private Integer awardMinAmount; + private BigDecimal awardMinAmount; /** * 奖项限制最大金额 */ @TableField(value = "award_max_amount") - private Integer awardMaxAmount; + private BigDecimal awardMaxAmount; /** * 奖项计算规则 @@ -110,7 +110,7 @@ public class WxOfflineActivityGrantItem extends TenantEntity { * 奖项价值 */ @TableField(value = "award_price") - private Integer awardPrice; + private BigDecimal awardPrice; /** * 奖项数量 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java index fd2b8f1be..71430bf2a 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java @@ -47,14 +47,9 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { /** * 订单金额 */ - @TableField(value = "order_money") - private Integer orderMoney; @Excel(name = "订单金额(元)", width = 20, orderNum = "3") - @TableField(exist = false) - private String orderMoneyStr; - public String getOrderMoneyStr() { - return orderMoney != null ? new BigDecimal(orderMoney).divide(new BigDecimal(100)).toPlainString(): orderMoneyStr; - } + @TableField(value = "order_money") + private BigDecimal orderMoney; /** * 商户id @@ -94,7 +89,7 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { * 发放总价值 */ @TableField(value = "grant_price") - private Integer grantPrice; + private BigDecimal grantPrice; /** * 商管承担z占比 @@ -117,36 +112,23 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { /** * 实际发放总价值 */ - @TableField(value = "real_grant_price") - private Integer realGrantPrice; - @TableField(exist = false) @Excel(name = "发放价值(元)", width = 20, orderNum = "4") - private String realGrantPriceStr; - public String getRealGrantPriceStr() { - return realGrantPrice != null ? new BigDecimal(realGrantPrice).divide(new BigDecimal(100)).toPlainString(): realGrantPriceStr; - } + @TableField(value = "real_grant_price") + private BigDecimal realGrantPrice; /** * 实际商管承担总金额 */ - @TableField(value = "real_mall_share_price") - private Integer realMallSharePrice; @Excel(name = "商管承担金额(元)", width = 20, orderNum = "5") - private String realMallSharePriceStr; - public String getRealMallSharePriceStr() { - return realMallSharePrice != null ? new BigDecimal(realMallSharePrice).divide(new BigDecimal(100)).toPlainString(): realMallSharePriceStr; - } + @TableField(value = "real_mall_share_price") + private BigDecimal realMallSharePrice; /** * 实际商户承担总金额 */ - @TableField(value = "real_merchant_share_price") - private Integer realMerchantSharePrice; @Excel(name = "商户承担金额(元)", width = 20, orderNum = "6") - private String realMerchantSharePriceStr; - public String getRealMerchantSharePriceStr() { - return realMerchantSharePrice != null ? new BigDecimal(realMerchantSharePrice).divide(new BigDecimal(100)).toPlainString(): realMerchantSharePriceStr; - } + @TableField(value = "real_merchant_share_price") + private BigDecimal realMerchantSharePrice; /** * 创建时间 @@ -165,4 +147,5 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { */ @TableField(value = "update_date") private Date updateDate; + } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java index edfc671be..16c1978d2 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityItem.java @@ -3,6 +3,8 @@ package com.iformall.domain.po; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; + +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -48,13 +50,13 @@ public class WxOfflineActivityItem extends TenantEntity { * 参与金额 */ @TableField(value = "limit_money") - private Integer limitMoney; + private BigDecimal limitMoney; /** * 奖项价值(用来计算奖券数量) */ @TableField(value = "awards_item_price") - private Integer awardsItemPrice; + private BigDecimal awardsItemPrice; /** * 奖项数量限制(为0时无限制) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java index f5c708989..a782fd0a0 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityRecord.java @@ -43,14 +43,9 @@ public class WxOfflineActivityRecord extends TenantEntity { /** * 订单金额 */ - @TableField(value = "order_money") - private Integer orderMoney; @Excel(name = "订单金额(元)", width = 20, orderNum = "7") - @TableField(exist = false) - private String orderMoneyStr; - public String getOrderMoneyStr() { - return orderMoney != null ? new BigDecimal(orderMoney).divide(new BigDecimal(100)).toPlainString(): orderMoneyStr; - } + @TableField(value = "order_money") + private BigDecimal orderMoney; /** * 客户姓名 diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityRecordStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityRecordStatistics.java index 8c8c69376..5f1c313a9 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityRecordStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityRecordStatistics.java @@ -3,6 +3,7 @@ package com.iformall.domain.vo; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; @Data public class OfflineActivityRecordStatistics implements Serializable { @@ -11,5 +12,5 @@ public class OfflineActivityRecordStatistics implements Serializable { private Integer auditStatus; private Integer count; - private Integer sumMoney; + private BigDecimal sumMoney; } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java index e6d3dae17..7f6f80cdc 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlement.java @@ -4,6 +4,7 @@ import com.iformall.domain.po.base.TenantEntity; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; import java.util.List; @Data @@ -14,8 +15,8 @@ public class OfflineActivitySettlement extends TenantEntity { private String merchantName; private Integer recordCount; - private Integer sumOrderMoney; - private Integer sumGrantPrice; - private Integer sumMallPrice; - private Integer sumMerchantPrice; + private BigDecimal sumOrderMoney; + private BigDecimal sumGrantPrice; + private BigDecimal sumMallPrice; + private BigDecimal sumMerchantPrice; } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlementStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlementStatistics.java index 7ed851435..8f892a920 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlementStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivitySettlementStatistics.java @@ -3,15 +3,16 @@ package com.iformall.domain.vo; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; @Data public class OfflineActivitySettlementStatistics implements Serializable { private static final long serialVersionUID = 1L; - private Integer sumGrantPrice; + private BigDecimal sumGrantPrice; private Integer recordCount; private Integer merchantCount; - private Integer sumMallPrice; - private Integer sumMerchantPrice; + private BigDecimal sumMallPrice; + private BigDecimal sumMerchantPrice; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java index b228e181d..66e7b9597 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityAwardsItemServiceImpl.java @@ -42,17 +42,17 @@ public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivity if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ awaItem.setCashBackRatio(BigDecimal.ZERO); awaItem.setGrade(-1); - awaItem.setMinAmount(0); - awaItem.setMaxAmount(-1); + awaItem.setMinAmount(null); + awaItem.setMaxAmount(null); } else if (EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())) { awaItem.setCashBackRatio(BigDecimal.ZERO); } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { awaItem.setGrade(-1); - awaItem.setMinAmount(0); - awaItem.setMaxAmount(-1); - awaItem.setPrice(0); + awaItem.setMinAmount(null); + awaItem.setMaxAmount(null); + awaItem.setPrice(BigDecimal.ZERO); } if(awaItem.getCreateDate() == null){ awaItem.setCreateDate(activityItem.getUpdateDate()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 9b064c531..f893048b2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -85,7 +85,8 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity handlerRecordQuery(wxOfflineActivityRecord); WxOfflineActivityRecord limitOne = wxOfflineActivityRecordMapper.selectLimitOne(wxOfflineActivityRecord); Map result = new HashMap<>(); - Integer audting = 0, audi_success = 0, audt_fail = 0,sum_success = 0, sum_fail = 0; + Integer audting = 0, audi_success = 0, audt_fail = 0; + BigDecimal sum_success = BigDecimal.ZERO, sum_fail = BigDecimal.ZERO; if (limitOne == null) { result.put("cus_name","查无此人"); result.put("cus_phone",wxOfflineActivityRecord.getCusPhone()); @@ -184,15 +185,15 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity for(WxOfflineActivityItem activityItem : wxOfflineActivityGrantAward.getActivityItemList()){ if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ - if(wxOfflineActivityGrantAward.getOrderMoneySum() < activityItem.getLimitMoney()){ + if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ activityItem.setIsMeet(false); continue; } activityItem.setIsMeet(true); //奖项限制数量 int limitCount = 0; - if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice() > 0){ - limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); + if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice().compareTo(BigDecimal.ZERO) > 0){ + limitCount = wxOfflineActivityGrantAward.getOrderMoneySum().divide(activityItem.getAwardsItemPrice(),0,BigDecimal.ROUND_HALF_DOWN).intValue(); } if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 && activityItem.getAwardsItemLimit() < limitCount){ @@ -201,11 +202,11 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity activityItem.setRealAwardsItemLimit(limitCount); } else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ - List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparingInt(WxOfflineActivityAwardsItem::getMinAmount)).collect(Collectors.toList()); + List sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(Collectors.toList()); WxOfflineActivityAwardsItem grantAwardsItem = null; for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ - if(wxOfflineActivityGrantAward.getOrderMoneySum() > awardsItem.getMinAmount() - && wxOfflineActivityGrantAward.getOrderMoneySum() < awardsItem.getMaxAmount()){ + if((awardsItem.getMinAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMinAmount()) >= 0) + && (awardsItem.getMaxAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMaxAmount()) <= 0)){ grantAwardsItem = awardsItem; } } @@ -281,7 +282,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity throw new MallinkException(Result.ERROR, "请检查活动订单用户是否为同一人"); } - Integer orderMoneySum = 0; + BigDecimal orderMoneySum = BigDecimal.ZERO; List lotteryNumList = new ArrayList<>(); List anniversaryLotteryNumList = new ArrayList<>(); for (WxOfflineActivityRecord record : wxOfflineActivityRecords) { @@ -295,7 +296,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity throw new MallinkException(Result.ERROR, "请检查订单是否已参与活动"); } - orderMoneySum += record.getOrderMoney(); + orderMoneySum = orderMoneySum.add(record.getOrderMoney()); if(record.getLotteryNumList() != null && !record.getLotteryNumList().isEmpty()){ lotteryNumList.addAll(record.getLotteryNumList()); } @@ -348,13 +349,13 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ - if(wxOfflineActivityGrantAward.getOrderMoneySum() < activityItem.getLimitMoney()){ + if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"金额不满足"); } //奖项限制数量 int limitCount = 0; - if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice() > 0){ - limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); + if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice().compareTo(BigDecimal.ZERO) > 0){ + limitCount = wxOfflineActivityGrantAward.getOrderMoneySum().divide(activityItem.getAwardsItemPrice(),0,BigDecimal.ROUND_HALF_DOWN).intValue(); } if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 && activityItem.getAwardsItemLimit() < limitCount){ @@ -390,8 +391,8 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity if(awardsItem == null){ throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); } - if(wxOfflineActivityGrantAward.getOrderMoneySum() > awardsItem.getMaxAmount() - || wxOfflineActivityGrantAward.getOrderMoneySum() < awardsItem.getMinAmount()){ + if((awardsItem.getMinAmount() != null && wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMinAmount()) < 0) + || (awardsItem.getMaxAmount() != null && wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMaxAmount()) > 0)){ throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数(金额不在范围类)"); } @@ -434,7 +435,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantGrantItem.setAwardMaxAmount(awardsItem.getMaxAmount()); grantGrantItem.setAwardsItemRule(activityItem.getAwardsItemRule()); grantGrantItem.setCashBackRatio(awardsItem.getCashBackRatio()); - grantGrantItem.setAwardPrice(awardsItem.getPrice()*grantGrantItem.getAwardCount()); + grantGrantItem.setAwardPrice(awardsItem.getPrice().multiply(new BigDecimal(grantGrantItem.getAwardCount())).setScale(2, BigDecimal.ROUND_HALF_UP)); grantGrantItem.setMoneyRule(awardsItem.getMoneyRule()); grantGrantItem.setMallShareRate(awardsItem.getMallShareRate()); grantGrantItem.setMerchantShareRate(awardsItem.getMerchantShareRate()); @@ -593,10 +594,10 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity } }else if(EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())){ if(granActivityItemList != null && !granActivityItemList.isEmpty()){ - activityGrantObject.put("r"+String.valueOf(activityItem.getId()),granActivityItemList.get(0).getCashBackRatio()); + activityGrantObject.put("r"+String.valueOf(activityItem.getId()),granActivityItemList.get(0).getCashBackRatio().toString()+"%"); activityGrantObject.put("p"+String.valueOf(activityItem.getId()),granActivityItemList.get(0).getAwardPrice()); }else{ - activityGrantObject.put("r"+String.valueOf(activityItem.getId()),0); + activityGrantObject.put("r"+String.valueOf(activityItem.getId()),"%"); activityGrantObject.put("p"+String.valueOf(activityItem.getId()),0); } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java index 7b889b2dc..a114806a2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantItemServiceImpl.java @@ -45,16 +45,16 @@ public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityG grantGrantItem.setCreateDate(now); grantGrantItem.setUpdateDate(now); if(EnumOfflineActivityType.CASHBACK.getCode().equals(grantGrantItem.getActivityItemType())){ - BigDecimal awardPrice = new BigDecimal(wxOfflineActivityGrantAward.getOrderMoneySum()) + BigDecimal awardPrice = wxOfflineActivityGrantAward.getOrderMoneySum() .multiply(grantGrantItem.getCashBackRatio().divide(new BigDecimal(100))); if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(grantGrantItem.getAwardsItemRule())){ - grantGrantItem.setAwardPrice(awardPrice.setScale(0, BigDecimal.ROUND_HALF_UP).intValue()); + grantGrantItem.setAwardPrice(awardPrice.setScale(0, BigDecimal.ROUND_HALF_UP)); } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(grantGrantItem.getAwardsItemRule())) { - int awardPriceYuan = awardPrice.divide(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP).intValue(); - grantGrantItem.setAwardPrice(awardPriceYuan*100); + BigDecimal awardPriceYuan = awardPrice.divide(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP); + grantGrantItem.setAwardPrice(awardPriceYuan.multiply(new BigDecimal(100))); }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(grantGrantItem.getAwardsItemRule())){ - int awardPriceTen = awardPrice.divide(new BigDecimal(1000)).setScale(0, BigDecimal.ROUND_HALF_UP).intValue(); - grantGrantItem.setAwardPrice(awardPriceTen*1000); + BigDecimal awardPriceTen = awardPrice.divide(new BigDecimal(1000)).setScale(0, BigDecimal.ROUND_HALF_UP); + grantGrantItem.setAwardPrice(awardPriceTen.multiply(new BigDecimal(1000))); } } rantItemList.add(grantGrantItem); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java index 1af3ff51a..1bf5835e4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantSettlementServiceImpl.java @@ -56,13 +56,13 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct final IdWorker idWorker = IdWorker.get(); Date now = new Date(); //获取订单占比(占比最少的订单用减法,尽量减少误差) - List recordDescList = wxOfflineActivityGrantAward.getRecordList().stream().sorted(Comparator.comparingInt(WxOfflineActivityRecord::getOrderMoney).reversed()).collect(Collectors.toList()); + List recordDescList = wxOfflineActivityGrantAward.getRecordList().stream().sorted(Comparator.comparing(WxOfflineActivityRecord::getOrderMoney).reversed()).collect(Collectors.toList()); int size = recordDescList.size() - 1; BigDecimal lastRatio = new BigDecimal(100); for(int i=0; i 0){ + BigDecimal count = yes.subtract(yesYes); + percentage = count.divide(yesYes,2,BigDecimal.ROUND_HALF_UP).toString(); + } + return percentage; + } + private String getPercentage(Integer yes, Integer yesYes){ NumberFormat nf = NumberFormat.getPercentInstance(); nf.setMinimumFractionDigits(2); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java index 745c37d9e..574f51ed8 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityItemServiceImpl.java @@ -12,6 +12,7 @@ import com.iformall.mapper.WxOfflineActivityItemMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.Collections; import java.util.List; @@ -49,12 +50,12 @@ public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemSe activityItem.setAwardsItemRule(EnumOfflineActivityAwardsRule.DEF.getCode()); } else if (EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())) { - activityItem.setLimitMoney(0); - activityItem.setAwardsItemPrice(0); + activityItem.setLimitMoney(BigDecimal.ZERO); + activityItem.setAwardsItemPrice(BigDecimal.ZERO); activityItem.setAwardsItemRule(EnumOfflineActivityAwardsRule.DEF.getCode()); } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { - activityItem.setAwardsItemPrice(0); + activityItem.setAwardsItemPrice(BigDecimal.ZERO); activityItem.setAwardsItemCount(0); } if(activityItem.getCreateDate() == null){ diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml index ec009646b..89779a391 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityAwardsItemMapper.xml @@ -11,10 +11,10 @@ - - + + - + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml index 10b6f60ba..9298cb5a6 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantAwardMapper.xml @@ -9,7 +9,7 @@ - + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml index 093a95723..c8bf083d2 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantItemMapper.xml @@ -17,11 +17,11 @@ - - + + - + @@ -99,8 +99,8 @@ #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR}, #{item.activityItemId,jdbcType=BIGINT},#{item.activityItemName,jdbcType=VARCHAR},#{item.activityItemType,jdbcType=INTEGER}, #{item.awardItamId,jdbcType=BIGINT},#{item.awardName,jdbcType=VARCHAR},#{item.awardGrade,jdbcType=INTEGER}, - #{item.awardMinAmount,jdbcType=INTEGER},#{item.awardMaxAmount,jdbcType=INTEGER},#{item.awardsItemRule,jdbcType=INTEGER},#{item.cashBackRatio,jdbcType=DECIMAL}, - #{item.awardPrice,jdbcType=INTEGER},#{item.awardCount,jdbcType=INTEGER},#{item.moneyRule,jdbcType=INTEGER}, + #{item.awardMinAmount,jdbcType=DECIMAL},#{item.awardMaxAmount,jdbcType=DECIMAL},#{item.awardsItemRule,jdbcType=INTEGER},#{item.cashBackRatio,jdbcType=DECIMAL}, + #{item.awardPrice,jdbcType=DECIMAL},#{item.awardCount,jdbcType=INTEGER},#{item.moneyRule,jdbcType=INTEGER}, #{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL}, #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index 521b81499..5ad579722 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -10,19 +10,19 @@ - + - + - - - + + + @@ -113,11 +113,11 @@ values (#{item.id,jdbcType=BIGINT},#{item.tenantId,jdbcType=VARCHAR},#{item.parentTenantId,jdbcType=VARCHAR}, - #{item.recordId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR},#{item.orderMoney,jdbcType=INTEGER}, + #{item.recordId,jdbcType=BIGINT},#{item.orderNo,jdbcType=VARCHAR},#{item.orderMoney,jdbcType=DECIMAL}, #{item.merchantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.activityItemId,jdbcType=BIGINT}, - #{item.awardItamId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantPrice,jdbcType=INTEGER}, + #{item.awardItamId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantPrice,jdbcType=DECIMAL}, #{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL},#{item.orderRatio,jdbcType=DECIMAL}, - #{item.realGrantPrice,jdbcType=INTEGER},#{item.realMallSharePrice,jdbcType=INTEGER},#{item.realMerchantSharePrice,jdbcType=INTEGER}, + #{item.realGrantPrice,jdbcType=DECIMAL},#{item.realMallSharePrice,jdbcType=DECIMAL},#{item.realMerchantSharePrice,jdbcType=DECIMAL}, #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml index 68f37591e..24d7fae53 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityItemMapper.xml @@ -11,8 +11,8 @@ - - + + diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml index e236c38ff..cc83f9efa 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityRecordMapper.xml @@ -9,7 +9,7 @@ - +