| @@ -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); | |||
| } | |||
| } | |||
| @@ -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) { | |||
| @@ -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; | |||
| } | |||
| @@ -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-分担) | |||
| @@ -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; | |||
| /** | |||
| * 订单数量 | |||
| @@ -86,6 +87,8 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ | |||
| @TableField(value = "create_by") | |||
| private Long createBy; | |||
| @TableField(exist = false) | |||
| private List<Long> createByName; | |||
| @TableField(exist = false) | |||
| private List<Long> createByIds; | |||
| /** | |||
| @@ -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; | |||
| /** | |||
| * 奖项数量 | |||
| @@ -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; | |||
| } | |||
| @@ -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时无限制) | |||
| @@ -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; | |||
| /** | |||
| * 客户姓名 | |||
| @@ -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; | |||
| } | |||
| @@ -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; | |||
| } | |||
| @@ -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; | |||
| } | |||
| @@ -19,6 +19,8 @@ public interface WxOfflineActivityGrantAwardMapper extends CommonMapper<WxOfflin | |||
| List<Long> getRecordIdList(WxOfflineActivityGrantAward grantAwardQ); | |||
| WxOfflineActivityGrantAward selectById(@Param("id")Long id, @Param("tenantId")String tenantId); | |||
| List<WxOfflineActivityGrantAward> findList(WxOfflineActivityGrantAward grantAwardQ); | |||
| } | |||
| @@ -29,6 +29,8 @@ public interface WxOfflineActivityRecordMapper extends CommonMapper<WxOfflineAct | |||
| Integer getCount(WxOfflineActivityRecord recordQ); | |||
| Integer getMerchantCount(WxOfflineActivityRecord recordQ); | |||
| List<WxOfflineActivityRecord> findGrantList(@Param("grantId")Long grantId, @Param("tenantId")String tenantId); | |||
| } | |||
| @@ -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); | |||
| } | |||
| @@ -451,7 +451,7 @@ public class WxGameServiceImpl implements WxGameService { | |||
| List<Object> 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){ | |||
| @@ -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()); | |||
| @@ -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; | |||
| @@ -77,7 +85,8 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| handlerRecordQuery(wxOfflineActivityRecord); | |||
| WxOfflineActivityRecord limitOne = wxOfflineActivityRecordMapper.selectLimitOne(wxOfflineActivityRecord); | |||
| Map<String, Object> 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()); | |||
| @@ -176,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){ | |||
| @@ -193,11 +202,11 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| activityItem.setRealAwardsItemLimit(limitCount); | |||
| } | |||
| else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ | |||
| List<WxOfflineActivityAwardsItem> sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparingInt(WxOfflineActivityAwardsItem::getMinAmount)).collect(Collectors.toList()); | |||
| List<WxOfflineActivityAwardsItem> 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; | |||
| } | |||
| } | |||
| @@ -273,7 +282,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| throw new MallinkException(Result.ERROR, "请检查活动订单用户是否为同一人"); | |||
| } | |||
| Integer orderMoneySum = 0; | |||
| BigDecimal orderMoneySum = BigDecimal.ZERO; | |||
| List<String> lotteryNumList = new ArrayList<>(); | |||
| List<String> anniversaryLotteryNumList = new ArrayList<>(); | |||
| for (WxOfflineActivityRecord record : wxOfflineActivityRecords) { | |||
| @@ -287,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()); | |||
| } | |||
| @@ -340,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){ | |||
| @@ -382,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()+"奖项参数(金额不在范围类)"); | |||
| } | |||
| @@ -406,7 +415,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); | |||
| } | |||
| } | |||
| if(i == 0){ | |||
| throw new MallinkException(Result.ERROR, "请检查是否有活动奖项"); | |||
| @@ -427,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()); | |||
| @@ -519,6 +527,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<ExcelExportEntity> headList = getActivityGrantExportHead(activity); | |||
| List<Map<String,Object>> activityGrantObjectList = new ArrayList<>(); | |||
| WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); | |||
| grantAwardQ.updateTenantInfo(wxOfflineActivity); | |||
| grantAwardQ.setActivityId(wxOfflineActivity.getId()); | |||
| List<WxOfflineActivityGrantAward> grantAwardList = wxOfflineActivityGrantAwardMapper.findList(grantAwardQ); | |||
| if(grantAwardList != null){ | |||
| WxMerchant merchantQ = new WxMerchant(); | |||
| merchantQ.updateTenantInfo(wxOfflineActivity); | |||
| Map<Long, String> merchantMap = wxMerchantService.getIdAndNamesMap(merchantQ); | |||
| MallUserInfo userInfoQ = new MallUserInfo(); | |||
| userInfoQ.updateTenantInfo(wxOfflineActivity); | |||
| Map<Long, MallUserInfo> userMap = mallUserInfoService.getUserMap(userInfoQ); | |||
| // | |||
| WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); | |||
| grantItemQ.updateTenantInfo(wxOfflineActivity); | |||
| grantItemQ.setActivityId(wxOfflineActivity.getId()); | |||
| List<WxOfflineActivityGrantItem> grantItem = wxOfflineActivityGrantItemMapper.findList(grantItemQ); | |||
| Map<Long, List<WxOfflineActivityGrantItem>> grantItemMap = grantItem.stream().collect(Collectors.groupingBy(WxOfflineActivityGrantItem::getGrantId)); | |||
| for (WxOfflineActivityGrantAward grantAward : grantAwardList) { | |||
| List<WxOfflineActivityRecord> recordList = wxOfflineActivityRecordMapper.findGrantList(grantAward.getId(),grantAward.getTenantId()); | |||
| List<WxOfflineActivityGrantItem> grantItemList = grantItemMap.get(grantAward.getId()); | |||
| Map<String,Object> activityGrantObject = new HashMap<>(); | |||
| activityGrantObject.put("activityName",activity.getName()); | |||
| List<String> 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<Long, List<WxOfflineActivityGrantItem>> granActivityItemMap = grantItemList.stream().collect(Collectors.groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); | |||
| for (WxOfflineActivityItem activityItem : activity.getActivityItemList()) { | |||
| List<WxOfflineActivityGrantItem> granActivityItemList = granActivityItemMap.get(activityItem.getId()); | |||
| if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ | |||
| Map<Long, WxOfflineActivityGrantItem> 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().toString()+"%"); | |||
| activityGrantObject.put("p"+String.valueOf(activityItem.getId()),granActivityItemList.get(0).getAwardPrice()); | |||
| }else{ | |||
| activityGrantObject.put("r"+String.valueOf(activityItem.getId()),"%"); | |||
| 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<ExcelExportEntity> getActivityGrantExportHead(WxOfflineActivity activity){ | |||
| List<ExcelExportEntity> 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; | |||
| } | |||
| } | |||
| @@ -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); | |||
| @@ -56,13 +56,13 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| Date now = new Date(); | |||
| //获取订单占比(占比最少的订单用减法,尽量减少误差) | |||
| List<WxOfflineActivityRecord> recordDescList = wxOfflineActivityGrantAward.getRecordList().stream().sorted(Comparator.comparingInt(WxOfflineActivityRecord::getOrderMoney).reversed()).collect(Collectors.toList()); | |||
| List<WxOfflineActivityRecord> 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<size; i++){ | |||
| WxOfflineActivityRecord record = recordDescList.get(i); | |||
| BigDecimal orderRatio = new BigDecimal(record.getOrderMoney()) | |||
| .divide(new BigDecimal(wxOfflineActivityGrantAward.getOrderMoneySum())) | |||
| BigDecimal orderRatio = record.getOrderMoney() | |||
| .divide(wxOfflineActivityGrantAward.getOrderMoneySum()) | |||
| .multiply(new BigDecimal(100)) | |||
| .setScale(2, RoundingMode.HALF_UP); | |||
| record.setOrderRatio(orderRatio); | |||
| @@ -101,24 +101,24 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||
| } | |||
| //计算订单分担金额,(占比最少的订单用减法,尽量减少误差) | |||
| int itemSize = itemSettlementList.size() - 1; | |||
| Integer lastGrantPrice = wxOfflineActivityGrantItem.getAwardPrice(); | |||
| BigDecimal lastGrantPrice = wxOfflineActivityGrantItem.getAwardPrice(); | |||
| for (int i = 0; i < itemSize; i++) { | |||
| WxOfflineActivityGrantSettlement settlement = itemSettlementList.get(i); | |||
| int realGrantPrice = new BigDecimal(wxOfflineActivityGrantItem.getAwardPrice()).multiply(settlement.getOrderRatio()).setScale(0, RoundingMode.HALF_UP).intValue(); | |||
| BigDecimal realGrantPrice = wxOfflineActivityGrantItem.getAwardPrice().multiply(settlement.getOrderRatio().divide(new BigDecimal(100))).setScale(0, RoundingMode.HALF_UP); | |||
| settlement.setRealGrantPrice(realGrantPrice); | |||
| settlement.setRealMallSharePrice(new BigDecimal(settlement.getRealGrantPrice()) | |||
| settlement.setRealMallSharePrice(settlement.getRealGrantPrice() | |||
| .multiply(settlement.getMallShareRate().divide(new BigDecimal(100))) | |||
| .setScale(0, RoundingMode.HALF_UP).intValue()); | |||
| settlement.setRealMerchantSharePrice(settlement.getRealGrantPrice() - settlement.getRealMallSharePrice()); | |||
| .setScale(0, RoundingMode.HALF_UP)); | |||
| settlement.setRealMerchantSharePrice(settlement.getRealGrantPrice().subtract(settlement.getRealMallSharePrice())); | |||
| lastGrantPrice = lastGrantPrice - realGrantPrice; | |||
| lastGrantPrice = lastGrantPrice.subtract(realGrantPrice); | |||
| } | |||
| WxOfflineActivityGrantSettlement lastSettlement = itemSettlementList.get(itemSize); | |||
| lastSettlement.setRealGrantPrice(lastGrantPrice); | |||
| lastSettlement.setRealMallSharePrice(new BigDecimal(lastSettlement.getRealGrantPrice()) | |||
| lastSettlement.setRealMallSharePrice(lastSettlement.getRealGrantPrice() | |||
| .multiply(lastSettlement.getMallShareRate().divide(new BigDecimal(100))) | |||
| .setScale(0, RoundingMode.HALF_UP).intValue()); | |||
| lastSettlement.setRealMerchantSharePrice(lastSettlement.getRealGrantPrice() - lastSettlement.getRealMallSharePrice()); | |||
| .setScale(0, RoundingMode.HALF_UP)); | |||
| lastSettlement.setRealMerchantSharePrice(lastSettlement.getRealGrantPrice().subtract(lastSettlement.getRealMallSharePrice())); | |||
| settlementList.addAll(itemSettlementList); | |||
| @@ -178,6 +178,16 @@ public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineAct | |||
| } | |||
| private String getPercentage(BigDecimal yes, BigDecimal yesYes){ | |||
| String percentage = "--"; | |||
| if(yes.compareTo(BigDecimal.ZERO) > 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); | |||
| @@ -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){ | |||
| @@ -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<WxOfflineActivityItem> activityItemList = wxOfflineActivityItemService.getActivityItemList(wxOfflineActivity.getId(),tenantId); | |||
| wxOfflineActivity.setActivityItemList(activityItemList); | |||
| if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(wxOfflineActivity.getAllMerchant())){ | |||
| @@ -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); | |||
| } | |||
| } | |||
| @@ -11,10 +11,10 @@ | |||
| <result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/> | |||
| <result property="name" column="name" jdbcType="VARCHAR"/> | |||
| <result property="grade" column="grade" jdbcType="INTEGER"/> | |||
| <result property="minAmount" column="min_amount" jdbcType="INTEGER"/> | |||
| <result property="maxAmount" column="max_amount" jdbcType="INTEGER"/> | |||
| <result property="minAmount" column="min_amount" jdbcType="DECIMAL"/> | |||
| <result property="maxAmount" column="max_amount" jdbcType="DECIMAL"/> | |||
| <result property="cashBackRatio" column="cash_back_ratio" jdbcType="DECIMAL"/> | |||
| <result property="price" column="price" jdbcType="INTEGER"/> | |||
| <result property="price" column="price" jdbcType="DECIMAL"/> | |||
| <result property="moneyRule" column="money_rule" jdbcType="SMALLINT"/> | |||
| <result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/> | |||
| <result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/> | |||
| @@ -9,7 +9,7 @@ | |||
| <result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/> | |||
| <result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/> | |||
| <result property="activityId" column="activity_id" jdbcType="BIGINT"/> | |||
| <result property="orderMoneySum" column="order_money_sum" jdbcType="INTEGER"/> | |||
| <result property="orderMoneySum" column="order_money_sum" jdbcType="DECIMAL"/> | |||
| <result property="orderCount" column="order_count" jdbcType="INTEGER"/> | |||
| <result property="cusName" column="cus_name" jdbcType="VARCHAR"/> | |||
| <result property="cusPhone" column="cus_phone" jdbcType="VARCHAR"/> | |||
| @@ -33,6 +33,46 @@ | |||
| lottery_count,anniversary_lottery_num | |||
| </sql> | |||
| <sql id="dynamicWhereConditions"> | |||
| where 1 = 1 | |||
| <if test=" null != id "> | |||
| and `id` = #{id} | |||
| </if> | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <if test=" null != activityId"> | |||
| and `activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != cusName and cusName != '' "> | |||
| and `cus_name` like concat('%', #{cusName},'%') | |||
| </if> | |||
| <if test=" null != cusPhone and cusPhone != '' "> | |||
| and `cus_phone` = #{cusPhone} | |||
| </if> | |||
| <if test=" null != ids "> | |||
| and id in | |||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||
| #{idItem} | |||
| </foreach> | |||
| </if> | |||
| <if test=" null != sortColumns"> order by ${sortColumns} </if> | |||
| </sql> | |||
| <select id="findList" parameterType="com.iformall.domain.po.WxOfflineActivityGrantAward" resultMap="BaseResultMap"> | |||
| select <include refid="allColumns" /> from wx_offline_activity_grant_award | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| <select id="getCusCount" parameterType="com.iformall.domain.po.WxOfflineActivityGrantAward" resultType="Integer"> | |||
| SELECT COUNT(DISTINCT cus_phone) FROM wx_offline_activity_grant_award | |||
| @@ -17,11 +17,11 @@ | |||
| <result property="awardItamId" column="award_itam_id" jdbcType="BIGINT"/> | |||
| <result property="awardName" column="award_name" jdbcType="VARCHAR"/> | |||
| <result property="awardGrade" column="award_grade" jdbcType="INTEGER"/> | |||
| <result property="awardMinAmount" column="award_min_amount" jdbcType="INTEGER"/> | |||
| <result property="awardMaxAmount" column="award_max_amount" jdbcType="INTEGER"/> | |||
| <result property="awardMinAmount" column="award_min_amount" jdbcType="DECIMAL"/> | |||
| <result property="awardMaxAmount" column="award_max_amount" jdbcType="DECIMAL"/> | |||
| <result property="awardsItemRule" column="awards_item_rule" jdbcType="INTEGER"/> | |||
| <result property="cashBackRatio" column="cash_back_ratio" jdbcType="DECIMAL"/> | |||
| <result property="awardPrice" column="award_price" jdbcType="INTEGER"/> | |||
| <result property="awardPrice" column="award_price" jdbcType="DECIMAL"/> | |||
| <result property="awardCount" column="award_count" jdbcType="INTEGER"/> | |||
| <result property="moneyRule" column="money_rule" jdbcType="SMALLINT"/> | |||
| <result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/> | |||
| @@ -60,7 +60,7 @@ | |||
| </if> | |||
| <if test=" null != activityId"> | |||
| and `activityId` = #{activityId} | |||
| and `activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != activityItemId"> | |||
| and `activity_item_id` = #{activityItemId} | |||
| @@ -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}) | |||
| </foreach> | |||
| @@ -10,19 +10,19 @@ | |||
| <result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/> | |||
| <result property="recordId" column="record_id" jdbcType="BIGINT"/> | |||
| <result property="orderNo" column="order_no" jdbcType="VARCHAR"/> | |||
| <result property="orderMoney" column="order_money" jdbcType="INTEGER"/> | |||
| <result property="orderMoney" column="order_money" jdbcType="DECIMAL"/> | |||
| <result property="merchantId" column="merchant_id" jdbcType="BIGINT"/> | |||
| <result property="activityId" column="activity_id" jdbcType="BIGINT"/> | |||
| <result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/> | |||
| <result property="awardItamId" column="award_itam_id" jdbcType="BIGINT"/> | |||
| <result property="grantId" column="grant_id" jdbcType="BIGINT"/> | |||
| <result property="grantPrice" column="grant_price" jdbcType="INTEGER"/> | |||
| <result property="grantPrice" column="grant_price" jdbcType="DECIMAL"/> | |||
| <result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/> | |||
| <result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/> | |||
| <result property="orderRatio" column="order_ratio" jdbcType="DECIMAL"/> | |||
| <result property="realGrantPrice" column="real_grant_price" jdbcType="INTEGER"/> | |||
| <result property="realMallSharePrice" column="real_mall_share_price" jdbcType="INTEGER"/> | |||
| <result property="realMerchantSharePrice" column="real_merchant_share_price" jdbcType="INTEGER"/> | |||
| <result property="realGrantPrice" column="real_grant_price" jdbcType="DECIMAL"/> | |||
| <result property="realMallSharePrice" column="real_mall_share_price" jdbcType="DECIMAL"/> | |||
| <result property="realMerchantSharePrice" column="real_merchant_share_price" jdbcType="DECIMAL"/> | |||
| <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/> | |||
| <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | |||
| </resultMap> | |||
| @@ -113,11 +113,11 @@ | |||
| values | |||
| <foreach collection="settlementList" item="item" index="index" separator=","> | |||
| (#{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}) | |||
| </foreach> | |||
| </insert> | |||
| @@ -11,8 +11,8 @@ | |||
| <result property="activityId" column="activity_id" jdbcType="BIGINT"/> | |||
| <result property="type" column="type" jdbcType="SMALLINT"/> | |||
| <result property="name" column="name" jdbcType="VARCHAR"/> | |||
| <result property="limitMoney" column="limit_money" jdbcType="INTEGER"/> | |||
| <result property="awardsItemPrice" column="awards_item_price" jdbcType="INTEGER"/> | |||
| <result property="limitMoney" column="limit_money" jdbcType="DECIMAL"/> | |||
| <result property="awardsItemPrice" column="awards_item_price" jdbcType="DECIMAL"/> | |||
| <result property="awardsItemLimit" column="awards_item_limit" jdbcType="INTEGER"/> | |||
| <result property="awardsItemCount" column="awards_item_count" jdbcType="INTEGER"/> | |||
| <result property="awardsItemRule" column="awards_item_rule" jdbcType="SMALLINT"/> | |||
| @@ -9,7 +9,7 @@ | |||
| <result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/> | |||
| <result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/> | |||
| <result property="orderNo" column="order_no" jdbcType="VARCHAR"/> | |||
| <result property="orderMoney" column="order_money" jdbcType="INTEGER"/> | |||
| <result property="orderMoney" column="order_money" jdbcType="DECIMAL"/> | |||
| <result property="cusName" column="cus_name" jdbcType="VARCHAR"/> | |||
| <result property="realCusName" column="real_cus_name" jdbcType="VARCHAR"/> | |||
| <result property="cusPhone" column="cus_phone" jdbcType="VARCHAR"/> | |||
| @@ -229,4 +229,17 @@ | |||
| </sql> | |||
| <select id="findGrantList" parameterType="java.util.HashMap" resultMap="BaseResultMap"> | |||
| 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} | |||
| </select> | |||
| </mapper> | |||