| @@ -3,6 +3,7 @@ package com.iformall.controller.market; | |||||
| import com.alibaba.fastjson.JSONObject; | import com.alibaba.fastjson.JSONObject; | ||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.iformall.annotation.ApiVersion; | import com.iformall.annotation.ApiVersion; | ||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.common.Result; | import com.iformall.common.Result; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.constant.SwaggerConstant; | import com.iformall.constant.SwaggerConstant; | ||||
| @@ -228,4 +229,88 @@ public class WxVtwoPrizeDrawActivityController extends BaseController { | |||||
| wxVtwoActivityOrderService.exportData(request,response,activityOrder,activity.getId()); | wxVtwoActivityOrderService.exportData(request,response,activityOrder,activity.getId()); | ||||
| } | } | ||||
| @ApiVersion(group = SwaggerConstant.V_A_2_0) | |||||
| @ApiOperation("活动发放页面处理") | |||||
| @PostMapping("grantAwardPage") | |||||
| public ResultData grantAwardPage(@RequestBody WxVtwoActivityGrant activityGrant) { | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| activityGrant.updateTenantInfo(tenantEntity); | |||||
| if(activityGrant.getActivityId() == null){ | |||||
| return new ResultData(Result.ERROR,"活动ID为空"); | |||||
| } | |||||
| if(activityGrant.getOrderIdList() == null || activityGrant.getOrderIdList().isEmpty()){ | |||||
| return new ResultData(Result.ERROR,"请选择订单"); | |||||
| } | |||||
| WxVtwoPrizeDrawActivity prizeDrawActivity = wxVtwoPrizeDrawActivityService.getById(activityGrant.getActivityId(), activityGrant.getTenantId()); | |||||
| if(prizeDrawActivity == null){ | |||||
| return new ResultData(Result.ERROR,"查询不到活动"); | |||||
| } | |||||
| if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(prizeDrawActivity.getStatus())){ | |||||
| throw new MallinkException(Result.ERROR, "请检查活动状态"); | |||||
| } | |||||
| if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(prizeDrawActivity.getAmountModel())){ | |||||
| if(activityGrant.getOrderFilterIdList() == null || activityGrant.getOrderFilterIdList().isEmpty()){ | |||||
| return new ResultData(Result.ERROR,"请筛选订单"); | |||||
| } | |||||
| }else{ | |||||
| activityGrant.setOrderFilterIdList(null); | |||||
| } | |||||
| try{ | |||||
| wxVtwoPrizeDrawActivityService.handlerGrantAwardPage(prizeDrawActivity,activityGrant); | |||||
| return new ResultData(activityGrant); | |||||
| }catch(MallinkException e){ | |||||
| logger.error(e.getMessage()); | |||||
| return new ResultData(e.getErrorCode(), e.getMessage()); | |||||
| }catch(Exception e){ | |||||
| logger.error("异常:" + e); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR); | |||||
| } | |||||
| } | |||||
| @ApiVersion(group = SwaggerConstant.V_A_2_0) | |||||
| @ApiOperation("活动发放") | |||||
| @PostMapping("grantAward") | |||||
| public ResultData grantAward(@RequestBody WxVtwoActivityGrant activityGrant) { | |||||
| TenantEntity tenantEntity = getTenantInfo(); | |||||
| activityGrant.updateTenantInfo(tenantEntity); | |||||
| if(activityGrant.getActivityId() == null){ | |||||
| return new ResultData(Result.ERROR,"活动ID为空"); | |||||
| } | |||||
| if(activityGrant.getOrderIdList() == null || activityGrant.getOrderIdList().isEmpty()){ | |||||
| return new ResultData(Result.ERROR,"请选择订单"); | |||||
| } | |||||
| WxVtwoPrizeDrawActivity prizeDrawActivity = wxVtwoPrizeDrawActivityService.getById(activityGrant.getActivityId(), activityGrant.getTenantId()); | |||||
| if(prizeDrawActivity == null){ | |||||
| return new ResultData(Result.ERROR,"查询不到活动"); | |||||
| } | |||||
| if(!EnumOfflineActivityStatus.ON_LINE.getCode().equals(prizeDrawActivity.getStatus())){ | |||||
| throw new MallinkException(Result.ERROR, "请检查活动状态"); | |||||
| } | |||||
| if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(prizeDrawActivity.getAmountModel())){ | |||||
| if(activityGrant.getOrderFilterIdList() == null || activityGrant.getOrderFilterIdList().isEmpty()){ | |||||
| return new ResultData(Result.ERROR,"请筛选订单"); | |||||
| } | |||||
| }else{ | |||||
| activityGrant.setOrderFilterIdList(null); | |||||
| } | |||||
| if(activityGrant.getGrantAwardList() == null || activityGrant.getGrantAwardList().isEmpty()){ | |||||
| return new ResultData(Result.ERROR,"奖励项为空"); | |||||
| } | |||||
| // if(StringUtils.isBlank(activityGrant.getSignImg())){ | |||||
| // return new ResultData(Result.ERROR,"签名为空"); | |||||
| // } | |||||
| activityGrant.setCreateBy(getUserId()); | |||||
| try{ | |||||
| wxVtwoPrizeDrawActivityService.grantAward(prizeDrawActivity, activityGrant); | |||||
| return new ResultData(); | |||||
| }catch(MallinkException e){ | |||||
| logger.error(e.getMessage()); | |||||
| return new ResultData(e.getErrorCode(), e.getMessage()); | |||||
| }catch(Exception e){ | |||||
| logger.error("异常:" + e); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR); | |||||
| } | |||||
| } | |||||
| } | } | ||||
| @@ -1,5 +1,7 @@ | |||||
| package com.iformall.domain.po; | package com.iformall.domain.po; | ||||
| import com.alibaba.fastjson.JSON; | |||||
| import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; | |||||
| import com.baomidou.mybatisplus.annotation.IdType; | import com.baomidou.mybatisplus.annotation.IdType; | ||||
| import com.baomidou.mybatisplus.annotation.TableField; | import com.baomidou.mybatisplus.annotation.TableField; | ||||
| import com.baomidou.mybatisplus.annotation.TableId; | import com.baomidou.mybatisplus.annotation.TableId; | ||||
| @@ -9,6 +11,7 @@ import java.math.BigDecimal; | |||||
| import java.util.Date; | import java.util.Date; | ||||
| import java.util.List; | import java.util.List; | ||||
| import com.iformall.domain.vo.WxVtwoActivityGrantRule; | |||||
| import lombok.Data; | import lombok.Data; | ||||
| /** | /** | ||||
| @@ -65,6 +68,18 @@ public class WxVtwoActivityGrant extends TenantEntity { | |||||
| */ | */ | ||||
| @TableField(value = "lottery_num") | @TableField(value = "lottery_num") | ||||
| private String lotteryNum; | private String lotteryNum; | ||||
| @TableField(exist = false) | |||||
| private List<String> lotteryNumList; | |||||
| public List<String> getLotteryNumList() { | |||||
| if(StringUtils.isNotBlank(lotteryNum)){ | |||||
| try { | |||||
| List<String> stringList = JSON.parseArray(lotteryNum, String.class); | |||||
| stringList.removeIf(String::isEmpty); | |||||
| lotteryNumList = stringList.isEmpty() ? null : stringList; | |||||
| } catch (Exception e){} | |||||
| } | |||||
| return lotteryNumList; | |||||
| } | |||||
| /** | /** | ||||
| * 抽奖券数量 | * 抽奖券数量 | ||||
| @@ -77,6 +92,18 @@ public class WxVtwoActivityGrant extends TenantEntity { | |||||
| */ | */ | ||||
| @TableField(value = "anniversary_lottery_num") | @TableField(value = "anniversary_lottery_num") | ||||
| private String anniversaryLotteryNum; | private String anniversaryLotteryNum; | ||||
| @TableField(exist = false) | |||||
| private List<String> anniversaryLotteryNumList; | |||||
| public List<String> getAnniversaryLotteryNumList() { | |||||
| if(StringUtils.isNotBlank(anniversaryLotteryNum)){ | |||||
| try { | |||||
| List<String> stringList = JSON.parseArray(anniversaryLotteryNum, String.class); | |||||
| stringList.removeIf(String::isEmpty); | |||||
| anniversaryLotteryNumList = stringList.isEmpty() ? null : stringList; | |||||
| } catch (Exception e){} | |||||
| } | |||||
| return anniversaryLotteryNumList; | |||||
| } | |||||
| /** | /** | ||||
| * 实际领奖人 | * 实际领奖人 | ||||
| @@ -126,6 +153,9 @@ public class WxVtwoActivityGrant extends TenantEntity { | |||||
| @TableField(value = "update_date") | @TableField(value = "update_date") | ||||
| private Date updateDate; | private Date updateDate; | ||||
| @TableField(exist = false) | |||||
| private List<WxVtwoActivityGrantAward> grantAwardList; | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private List<Long> orderIdList; | private List<Long> orderIdList; | ||||
| @@ -134,4 +164,13 @@ public class WxVtwoActivityGrant extends TenantEntity { | |||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private List<WxVtwoActivityOrder> orderList; | private List<WxVtwoActivityOrder> orderList; | ||||
| @TableField(exist = false) | |||||
| private List<WxVtwoActivityGrantRule> ruleList; | |||||
| @TableField(exist = false) | |||||
| private List<WxVtwoActivityAward> awardList; | |||||
| @TableField(exist = false) | |||||
| private Integer awardLimit; | |||||
| } | } | ||||
| @@ -46,36 +46,12 @@ public class WxVtwoActivityGrantAward extends TenantEntity { | |||||
| @TableField(value = "order_id") | @TableField(value = "order_id") | ||||
| private Long orderId; | private Long orderId; | ||||
| /** | |||||
| * 订单金额/总金额 | |||||
| */ | |||||
| @TableField(value = "order_amount") | |||||
| private BigDecimal orderAmount; | |||||
| /** | /** | ||||
| * 金额/联单 | * 金额/联单 | ||||
| */ | */ | ||||
| @TableField(value = "mode_type") | @TableField(value = "mode_type") | ||||
| private Integer modeType; | private Integer modeType; | ||||
| /** | |||||
| * 奖项限制最小金额 | |||||
| */ | |||||
| @TableField(value = "min_amount") | |||||
| private BigDecimal minAmount; | |||||
| /** | |||||
| * 奖项限制最大金额 | |||||
| */ | |||||
| @TableField(value = "max_amount") | |||||
| private BigDecimal maxAmount; | |||||
| /** | |||||
| * 联单笔数 | |||||
| */ | |||||
| @TableField(value = "related_count") | |||||
| private Integer relatedCount; | |||||
| /** | /** | ||||
| * 奖项id | * 奖项id | ||||
| */ | */ | ||||
| @@ -115,8 +91,8 @@ public class WxVtwoActivityGrantAward extends TenantEntity { | |||||
| /** | /** | ||||
| * 分担规则(0-商管 1-商户 2-分担) | * 分担规则(0-商管 1-商户 2-分担) | ||||
| */ | */ | ||||
| @TableField(value = "money_rule") | |||||
| private Integer moneyRule; | |||||
| @TableField(value = "share_rule") | |||||
| private Integer shareRule; | |||||
| /** | /** | ||||
| * 商管分担比例 | * 商管分担比例 | ||||
| @@ -46,6 +46,9 @@ public class WxVtwoActivityGrantSettlement extends TenantEntity { | |||||
| @TableField(value = "award_id") | @TableField(value = "award_id") | ||||
| private Long awardId; | private Long awardId; | ||||
| @TableField(exist = false) | |||||
| private Integer awardCount; | |||||
| /** | /** | ||||
| * 发放总价值 | * 发放总价值 | ||||
| */ | */ | ||||
| @@ -257,4 +257,7 @@ public class WxVtwoActivityOrder extends TenantEntity { | |||||
| */ | */ | ||||
| @TableField(exist = false) | @TableField(exist = false) | ||||
| private Integer isAmount; | private Integer isAmount; | ||||
| @TableField(exist = false) | |||||
| private BigDecimal orderRatio; | |||||
| } | } | ||||
| @@ -43,8 +43,8 @@ public class WxVtwoCashBackGrantAward extends TenantEntity { | |||||
| /** | /** | ||||
| * | * | ||||
| */ | */ | ||||
| @TableField(value = "record_id") | |||||
| private Long recordId; | |||||
| @TableField(value = "order_id") | |||||
| private Long orderId; | |||||
| /** | /** | ||||
| * 订单金额/总金额 | * 订单金额/总金额 | ||||
| @@ -109,8 +109,8 @@ public class WxVtwoCashBackGrantAward extends TenantEntity { | |||||
| /** | /** | ||||
| * 分担规则(0-商管 1-商户 2-分担) | * 分担规则(0-商管 1-商户 2-分担) | ||||
| */ | */ | ||||
| @TableField(value = "money_rule") | |||||
| private Integer moneyRule; | |||||
| @TableField(value = "share_rule") | |||||
| private Integer shareRule; | |||||
| /** | /** | ||||
| * 商管分担比例 | * 商管分担比例 | ||||
| @@ -0,0 +1,16 @@ | |||||
| package com.iformall.domain.vo; | |||||
| import com.iformall.domain.po.WxOfflineActivityRecord; | |||||
| import lombok.Data; | |||||
| import java.io.Serializable; | |||||
| @Data | |||||
| public class WxVtwoActivityGrantRule implements Serializable { | |||||
| private Long orderId; | |||||
| private Integer modeType; | |||||
| private String name; | |||||
| private Integer awardLimit; | |||||
| } | |||||
| @@ -3,6 +3,9 @@ package com.iformall.mapper; | |||||
| import com.iformall.common.CommonMapper; | import com.iformall.common.CommonMapper; | ||||
| import com.iformall.domain.po.WxVtwoActivityGrantAward; | import com.iformall.domain.po.WxVtwoActivityGrantAward; | ||||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||||
| import org.apache.ibatis.annotations.Param; | |||||
| import java.util.List; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| @@ -12,6 +15,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
| */ | */ | ||||
| public interface WxVtwoActivityGrantAwardMapper extends CommonMapper<WxVtwoActivityGrantAward, Long> { | public interface WxVtwoActivityGrantAwardMapper extends CommonMapper<WxVtwoActivityGrantAward, Long> { | ||||
| void insertList(@Param("grantAwardList")List<WxVtwoActivityGrantAward> grantAwardList); | |||||
| } | } | ||||
| @@ -3,6 +3,9 @@ package com.iformall.mapper; | |||||
| import com.iformall.common.CommonMapper; | import com.iformall.common.CommonMapper; | ||||
| import com.iformall.domain.po.WxVtwoActivityGrantOrder; | import com.iformall.domain.po.WxVtwoActivityGrantOrder; | ||||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||||
| import org.apache.ibatis.annotations.Param; | |||||
| import java.util.List; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| @@ -12,6 +15,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
| */ | */ | ||||
| public interface WxVtwoActivityGrantOrderMapper extends CommonMapper<WxVtwoActivityGrantOrder, Long> { | public interface WxVtwoActivityGrantOrderMapper extends CommonMapper<WxVtwoActivityGrantOrder, Long> { | ||||
| void insertList(@Param("grantOrderList")List<WxVtwoActivityGrantOrder> grantOrderList); | |||||
| } | } | ||||
| @@ -3,6 +3,9 @@ package com.iformall.mapper; | |||||
| import com.iformall.common.CommonMapper; | import com.iformall.common.CommonMapper; | ||||
| import com.iformall.domain.po.WxVtwoActivityGrantSettlement; | import com.iformall.domain.po.WxVtwoActivityGrantSettlement; | ||||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||||
| import org.apache.ibatis.annotations.Param; | |||||
| import java.util.List; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| @@ -14,6 +17,7 @@ public interface WxVtwoActivityGrantSettlementMapper extends CommonMapper<WxVtwo | |||||
| Integer getOrderCount(WxVtwoActivityGrantSettlement record); | Integer getOrderCount(WxVtwoActivityGrantSettlement record); | ||||
| void insertList(@Param("settlementList")List<WxVtwoActivityGrantSettlement> settlementList); | |||||
| } | } | ||||
| @@ -1,8 +1,12 @@ | |||||
| package com.iformall.mapper; | package com.iformall.mapper; | ||||
| import com.iformall.common.CommonMapper; | import com.iformall.common.CommonMapper; | ||||
| import com.iformall.domain.po.WxVtwoActivityGrantAward; | |||||
| import com.iformall.domain.po.WxVtwoCashBackGrantAward; | import com.iformall.domain.po.WxVtwoCashBackGrantAward; | ||||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||||
| import org.apache.ibatis.annotations.Param; | |||||
| import java.util.List; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| @@ -12,6 +16,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
| */ | */ | ||||
| public interface WxVtwoCashBackGrantAwardMapper extends CommonMapper<WxVtwoCashBackGrantAward, Long> { | public interface WxVtwoCashBackGrantAwardMapper extends CommonMapper<WxVtwoCashBackGrantAward, Long> { | ||||
| void insertList(@Param("grantAwardList") List<WxVtwoCashBackGrantAward> grantAwardList); | |||||
| } | } | ||||
| @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; | |||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| @@ -14,4 +15,8 @@ import java.util.List; | |||||
| public interface WxVtwoActivityAwardService extends IService<WxVtwoActivityAward> { | public interface WxVtwoActivityAwardService extends IService<WxVtwoActivityAward> { | ||||
| void saveFromActivity(TenantEntity tenantEntity, Long activityId, List<WxVtwoActivityAward> awardList); | void saveFromActivity(TenantEntity tenantEntity, Long activityId, List<WxVtwoActivityAward> awardList); | ||||
| List<WxVtwoActivityAward> findActivityAwardList(Long activityId, String tenantId); | |||||
| Map<Long, WxVtwoActivityAward> findActivityAwardMap(Long activityId, String tenantId); | |||||
| } | } | ||||
| @@ -1,8 +1,11 @@ | |||||
| package com.iformall.service; | package com.iformall.service; | ||||
| import com.iformall.domain.po.WxVtwoActivityGrant; | |||||
| import com.iformall.domain.po.WxVtwoActivityGrantAward; | import com.iformall.domain.po.WxVtwoActivityGrantAward; | ||||
| import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||
| import java.util.List; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| * @description 针对表【wx_vtwo_activity_grant_award(线下活动发放奖励)】的数据库操作Service | * @description 针对表【wx_vtwo_activity_grant_award(线下活动发放奖励)】的数据库操作Service | ||||
| @@ -10,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService; | |||||
| */ | */ | ||||
| public interface WxVtwoActivityGrantAwardService extends IService<WxVtwoActivityGrantAward> { | public interface WxVtwoActivityGrantAwardService extends IService<WxVtwoActivityGrantAward> { | ||||
| void saveGrantAward(WxVtwoActivityGrant activityGrant); | |||||
| } | } | ||||
| @@ -2,6 +2,9 @@ package com.iformall.service; | |||||
| import com.iformall.domain.po.WxVtwoActivityGrantOrder; | import com.iformall.domain.po.WxVtwoActivityGrantOrder; | ||||
| import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||
| import com.iformall.domain.po.WxVtwoActivityOrder; | |||||
| import java.util.List; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| @@ -10,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService; | |||||
| */ | */ | ||||
| public interface WxVtwoActivityGrantOrderService extends IService<WxVtwoActivityGrantOrder> { | public interface WxVtwoActivityGrantOrderService extends IService<WxVtwoActivityGrantOrder> { | ||||
| void saveGrantOrder(Long grantId, Long activityId, List<WxVtwoActivityOrder> orderList); | |||||
| } | } | ||||
| @@ -2,6 +2,9 @@ package com.iformall.service; | |||||
| import com.iformall.domain.po.WxVtwoActivityGrant; | import com.iformall.domain.po.WxVtwoActivityGrant; | ||||
| import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||
| import com.iformall.domain.po.WxVtwoActivityOrder; | |||||
| import java.util.List; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| @@ -10,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService; | |||||
| */ | */ | ||||
| public interface WxVtwoActivityGrantService extends IService<WxVtwoActivityGrant> { | public interface WxVtwoActivityGrantService extends IService<WxVtwoActivityGrant> { | ||||
| void handleFromOrder(String activityName, WxVtwoActivityGrant activityGrant, List<WxVtwoActivityOrder> orderList, boolean isGrant); | |||||
| } | } | ||||
| @@ -1,5 +1,6 @@ | |||||
| package com.iformall.service; | package com.iformall.service; | ||||
| import com.iformall.domain.po.WxVtwoActivityGrant; | |||||
| import com.iformall.domain.po.WxVtwoActivityGrantSettlement; | import com.iformall.domain.po.WxVtwoActivityGrantSettlement; | ||||
| import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||
| @@ -10,4 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService; | |||||
| */ | */ | ||||
| public interface WxVtwoActivityGrantSettlementService extends IService<WxVtwoActivityGrantSettlement> { | public interface WxVtwoActivityGrantSettlementService extends IService<WxVtwoActivityGrantSettlement> { | ||||
| void saveGrantSettlement(WxVtwoActivityGrant activityGrant); | |||||
| } | } | ||||
| @@ -1,6 +1,7 @@ | |||||
| package com.iformall.service; | package com.iformall.service; | ||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.iformall.domain.po.WxVtwoActivityGrant; | |||||
| import com.iformall.domain.po.WxVtwoActivityOrder; | import com.iformall.domain.po.WxVtwoActivityOrder; | ||||
| import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| @@ -38,4 +39,7 @@ public interface WxVtwoActivityOrderService extends IService<WxVtwoActivityOrder | |||||
| WxVtwoActivityOrder getlimitOne(WxVtwoActivityOrder activityOrder); | WxVtwoActivityOrder getlimitOne(WxVtwoActivityOrder activityOrder); | ||||
| List<WxVtwoActivityOrder> findGrantOrder(TenantEntity tenantInfo, List<Long> idList, List<Long> filterIdList); | |||||
| Integer getJointCount(Integer relatedModel, List<WxVtwoActivityOrder> orderList); | |||||
| } | } | ||||
| @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; | |||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| @@ -15,4 +16,8 @@ import java.util.List; | |||||
| public interface WxVtwoCashBackAwardService extends IService<WxVtwoCashBackAward> { | public interface WxVtwoCashBackAwardService extends IService<WxVtwoCashBackAward> { | ||||
| void saveFromActivity(TenantEntity tenantEntity, Long activityId, List<WxVtwoCashBackAward> amountRulesObject, List<WxVtwoCashBackAward> relatedRulesObject); | void saveFromActivity(TenantEntity tenantEntity, Long activityId, List<WxVtwoCashBackAward> amountRulesObject, List<WxVtwoCashBackAward> relatedRulesObject); | ||||
| List<WxVtwoCashBackAward> findActivityAwardList(Long activityId, String tenantId); | |||||
| Map<Long, WxVtwoCashBackAward> findActivityAwardMap(Long activityId, String tenantId); | |||||
| } | } | ||||
| @@ -1,6 +1,7 @@ | |||||
| package com.iformall.service; | package com.iformall.service; | ||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.iformall.domain.po.WxVtwoActivityGrant; | |||||
| import com.iformall.domain.po.WxVtwoActivityOrder; | import com.iformall.domain.po.WxVtwoActivityOrder; | ||||
| import com.iformall.domain.po.WxVtwoPrizeDrawActivity; | import com.iformall.domain.po.WxVtwoPrizeDrawActivity; | ||||
| import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||
| @@ -25,4 +26,8 @@ public interface WxVtwoPrizeDrawActivityService extends IService<WxVtwoPrizeDraw | |||||
| WxVtwoPrizeDrawActivity getById(Long id, String tenantId); | WxVtwoPrizeDrawActivity getById(Long id, String tenantId); | ||||
| void handleSpecialTopicActivity(TenantEntity tenantEntity, WxVtwoSpecialTopicActivity activity); | void handleSpecialTopicActivity(TenantEntity tenantEntity, WxVtwoSpecialTopicActivity activity); | ||||
| void handlerGrantAwardPage(WxVtwoPrizeDrawActivity prizeDrawActivity, WxVtwoActivityGrant activityGrant); | |||||
| void grantAward(WxVtwoPrizeDrawActivity prizeDrawActivity,WxVtwoActivityGrant activityGrant); | |||||
| } | } | ||||
| @@ -14,8 +14,12 @@ import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
| import java.util.Collections; | |||||
| import java.util.Date; | import java.util.Date; | ||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | |||||
| import java.util.function.Function; | |||||
| import java.util.stream.Collectors; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| @@ -51,6 +55,20 @@ public class WxVtwoActivityAwardServiceImpl extends ServiceImpl<WxVtwoActivityAw | |||||
| } | } | ||||
| wxVtwoActivityAwardMapper.insertList(awardList); | wxVtwoActivityAwardMapper.insertList(awardList); | ||||
| } | } | ||||
| @Override | |||||
| public List<WxVtwoActivityAward> findActivityAwardList(Long activityId, String tenantId) { | |||||
| WxVtwoActivityAward activityAwardQ = new WxVtwoActivityAward(); | |||||
| activityAwardQ.setTenantId(tenantId); | |||||
| activityAwardQ.setActivityId(activityId); | |||||
| return wxVtwoActivityAwardMapper.findList(activityAwardQ); | |||||
| } | |||||
| @Override | |||||
| public Map<Long, WxVtwoActivityAward> findActivityAwardMap(Long activityId, String tenantId) { | |||||
| List<WxVtwoActivityAward> activityAwardList = this.findActivityAwardList(activityId, tenantId); | |||||
| return activityAwardList.stream().collect(Collectors.toMap(WxVtwoActivityAward::getId, Function.identity())); | |||||
| } | |||||
| } | } | ||||
| @@ -1,11 +1,26 @@ | |||||
| package com.iformall.service.impl; | package com.iformall.service.impl; | ||||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||
| import com.iformall.common.IdWorker; | |||||
| import com.iformall.common.Result; | |||||
| import com.iformall.domain.po.WxVtwoActivityAward; | |||||
| import com.iformall.domain.po.WxVtwoActivityGrant; | |||||
| import com.iformall.domain.po.WxVtwoActivityGrantAward; | import com.iformall.domain.po.WxVtwoActivityGrantAward; | ||||
| import com.iformall.exception.MallinkException; | |||||
| import com.iformall.service.WxVtwoActivityAwardService; | |||||
| import com.iformall.service.WxVtwoActivityGrantAwardService; | import com.iformall.service.WxVtwoActivityGrantAwardService; | ||||
| import com.iformall.mapper.WxVtwoActivityGrantAwardMapper; | import com.iformall.mapper.WxVtwoActivityGrantAwardMapper; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import java.math.BigDecimal; | |||||
| import java.math.RoundingMode; | |||||
| import java.util.List; | |||||
| import java.util.Map; | |||||
| import static java.util.stream.Collectors.counting; | |||||
| import static java.util.stream.Collectors.groupingBy; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| * @description 针对表【wx_vtwo_activity_grant_award(线下活动发放奖励)】的数据库操作Service实现 | * @description 针对表【wx_vtwo_activity_grant_award(线下活动发放奖励)】的数据库操作Service实现 | ||||
| @@ -15,6 +30,61 @@ import org.springframework.stereotype.Service; | |||||
| public class WxVtwoActivityGrantAwardServiceImpl extends ServiceImpl<WxVtwoActivityGrantAwardMapper, WxVtwoActivityGrantAward> | public class WxVtwoActivityGrantAwardServiceImpl extends ServiceImpl<WxVtwoActivityGrantAwardMapper, WxVtwoActivityGrantAward> | ||||
| implements WxVtwoActivityGrantAwardService{ | implements WxVtwoActivityGrantAwardService{ | ||||
| @Autowired | |||||
| private WxVtwoActivityGrantAwardMapper wxVtwoActivityGrantAwardMapper; | |||||
| @Autowired | |||||
| private WxVtwoActivityAwardService wxVtwoActivityAwardService; | |||||
| @Override | |||||
| public void saveGrantAward(WxVtwoActivityGrant activityGrant) { | |||||
| Map<Long, WxVtwoActivityAward> activityAwardMap = wxVtwoActivityAwardService.findActivityAwardMap(activityGrant.getActivityId(), activityGrant.getTenantId()); | |||||
| List<WxVtwoActivityGrantAward> grantAwardList = activityGrant.getGrantAwardList(); | |||||
| boolean isAwardId = grantAwardList.stream().anyMatch(grantAward -> grantAward.getAwardId() == null); | |||||
| if(isAwardId){ | |||||
| throw new MallinkException(Result.ERROR, "请检查是否都选择奖项"); | |||||
| } | |||||
| boolean isModeType = grantAwardList.stream().anyMatch(grantAward -> grantAward.getModeType() == null); | |||||
| if(isModeType){ | |||||
| throw new MallinkException(Result.ERROR, "请检查奖项参数"); | |||||
| } | |||||
| //所得奖项不能重复, 后续计算问题 | |||||
| boolean isRepeat = grantAwardList.stream() | |||||
| .collect(groupingBy(e -> String.valueOf(e.getAwardId())+String.valueOf(e.getModeType())+String.valueOf(e.getOrderId()), counting())) | |||||
| .entrySet().stream().anyMatch(e -> e.getValue() > 1); | |||||
| if(isRepeat){ | |||||
| throw new MallinkException(Result.ERROR, "请检查奖项存在重复"); | |||||
| } | |||||
| final IdWorker idWorker = IdWorker.get(); | |||||
| for(WxVtwoActivityGrantAward grantAward : grantAwardList){ | |||||
| grantAward.setAwardId(idWorker.nextId()); | |||||
| grantAward.updateTenantInfo(activityGrant); | |||||
| grantAward.setActivityId(activityGrant.getActivityId()); | |||||
| grantAward.setActivityName(activityGrant.getActivityName()); | |||||
| grantAward.setGrantId(activityGrant.getId()); | |||||
| WxVtwoActivityAward activityAward = activityAwardMap.get(grantAward.getAwardId()); | |||||
| grantAward.setAwardGrade(activityAward.getGrade()); | |||||
| grantAward.setAwardName(activityAward.getName()); | |||||
| grantAward.setAwardPrice(activityAward.getPrice()); | |||||
| if(grantAward.getAwardCount() == null){ | |||||
| grantAward.setAwardCount(1); | |||||
| } | |||||
| grantAward.setGrantPrice(grantAward.getAwardPrice() | |||||
| .multiply(new BigDecimal(grantAward.getAwardCount())) | |||||
| .setScale(2, RoundingMode.HALF_UP)); | |||||
| grantAward.setShareRule(activityAward.getShareRule()); | |||||
| grantAward.setMallShareRate(activityAward.getMallShareRate()); | |||||
| grantAward.setMerchantShareRate(activityAward.getMerchantShareRate()); | |||||
| grantAward.setCreateDate(activityAward.getUpdateDate()); | |||||
| grantAward.setUpdateDate(activityAward.getUpdateDate()); | |||||
| } | |||||
| wxVtwoActivityGrantAwardMapper.insertList(grantAwardList); | |||||
| activityGrant.setGrantAwardList(grantAwardList); | |||||
| } | |||||
| } | } | ||||
| @@ -1,11 +1,17 @@ | |||||
| package com.iformall.service.impl; | package com.iformall.service.impl; | ||||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||
| import com.iformall.common.IdWorker; | |||||
| import com.iformall.domain.po.WxVtwoActivityGrantOrder; | import com.iformall.domain.po.WxVtwoActivityGrantOrder; | ||||
| import com.iformall.domain.po.WxVtwoActivityOrder; | |||||
| import com.iformall.service.WxVtwoActivityGrantOrderService; | import com.iformall.service.WxVtwoActivityGrantOrderService; | ||||
| import com.iformall.mapper.WxVtwoActivityGrantOrderMapper; | import com.iformall.mapper.WxVtwoActivityGrantOrderMapper; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import java.util.ArrayList; | |||||
| import java.util.List; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| * @description 针对表【wx_vtwo_activity_grant_order(线下活动发奖订单)】的数据库操作Service实现 | * @description 针对表【wx_vtwo_activity_grant_order(线下活动发奖订单)】的数据库操作Service实现 | ||||
| @@ -15,6 +21,25 @@ import org.springframework.stereotype.Service; | |||||
| public class WxVtwoActivityGrantOrderServiceImpl extends ServiceImpl<WxVtwoActivityGrantOrderMapper, WxVtwoActivityGrantOrder> | public class WxVtwoActivityGrantOrderServiceImpl extends ServiceImpl<WxVtwoActivityGrantOrderMapper, WxVtwoActivityGrantOrder> | ||||
| implements WxVtwoActivityGrantOrderService{ | implements WxVtwoActivityGrantOrderService{ | ||||
| @Autowired | |||||
| private WxVtwoActivityGrantOrderMapper wxVtwoActivityGrantOrderMapper; | |||||
| @Override | |||||
| public void saveGrantOrder(Long grantId, Long activityId, List<WxVtwoActivityOrder> orderList) { | |||||
| List<WxVtwoActivityGrantOrder> grantOrderList = new ArrayList<>(); | |||||
| final IdWorker idWorker = IdWorker.get(); | |||||
| for (WxVtwoActivityOrder order : orderList) { | |||||
| WxVtwoActivityGrantOrder grantOrder = new WxVtwoActivityGrantOrder(); | |||||
| grantOrder.setId(idWorker.nextId()); | |||||
| grantOrder.updateTenantInfo(order); | |||||
| grantOrder.setGrantId(grantId); | |||||
| grantOrder.setActivityId(activityId); | |||||
| grantOrder.setOrderId(order.getId()); | |||||
| grantOrder.setIsAmount(order.getIsAmount()); | |||||
| grantOrderList.add(grantOrder); | |||||
| } | |||||
| wxVtwoActivityGrantOrderMapper.insertList(grantOrderList); | |||||
| } | |||||
| } | } | ||||
| @@ -1,10 +1,24 @@ | |||||
| package com.iformall.service.impl; | package com.iformall.service.impl; | ||||
| import com.alibaba.fastjson.JSON; | |||||
| import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; | |||||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||
| import com.iformall.common.IdWorker; | |||||
| import com.iformall.domain.po.WxVtwoActivityGrant; | import com.iformall.domain.po.WxVtwoActivityGrant; | ||||
| import com.iformall.domain.po.WxVtwoActivityOrder; | |||||
| import com.iformall.domain.po.WxVtwoPrizeDrawActivity; | |||||
| import com.iformall.enums.EnumOfflineActivityMerchantType; | |||||
| import com.iformall.enums.EnumOfflineActivityStatus; | |||||
| import com.iformall.service.WxVtwoActivityGrantService; | import com.iformall.service.WxVtwoActivityGrantService; | ||||
| import com.iformall.mapper.WxVtwoActivityGrantMapper; | import com.iformall.mapper.WxVtwoActivityGrantMapper; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import org.springframework.transaction.annotation.Transactional; | |||||
| import java.math.BigDecimal; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Date; | |||||
| import java.util.List; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| @@ -15,6 +29,56 @@ import org.springframework.stereotype.Service; | |||||
| public class WxVtwoActivityGrantServiceImpl extends ServiceImpl<WxVtwoActivityGrantMapper, WxVtwoActivityGrant> | public class WxVtwoActivityGrantServiceImpl extends ServiceImpl<WxVtwoActivityGrantMapper, WxVtwoActivityGrant> | ||||
| implements WxVtwoActivityGrantService{ | implements WxVtwoActivityGrantService{ | ||||
| @Autowired | |||||
| private WxVtwoActivityGrantMapper wxVtwoActivityGrantMapper; | |||||
| @Override | |||||
| public void handleFromOrder(String activityName, WxVtwoActivityGrant activityGrant, List<WxVtwoActivityOrder> orderList, boolean isGrant) { | |||||
| activityGrant.setActivityName(activityName); | |||||
| activityGrant.setOrderList(orderList); | |||||
| BigDecimal orderMoneySum = BigDecimal.ZERO; | |||||
| List<String> lotteryNumList = new ArrayList<>(); | |||||
| int lotteryCount = 0; | |||||
| List<String> anniversaryLotteryNumList = new ArrayList<>(); | |||||
| for (WxVtwoActivityOrder order : orderList) { | |||||
| orderMoneySum = orderMoneySum.add(order.getOrderMoney()); | |||||
| if(order.getLotteryNumList() != null && !order.getLotteryNumList().isEmpty()){ | |||||
| lotteryNumList.addAll(order.getLotteryNumList()); | |||||
| } | |||||
| if(order.getLotteryCount() != null){ | |||||
| lotteryCount = lotteryCount + order.getLotteryCount(); | |||||
| } | |||||
| if(StringUtils.isNotBlank(order.getAnniversaryLotteryNum())){ | |||||
| anniversaryLotteryNumList.add(order.getAnniversaryLotteryNum()); | |||||
| } | |||||
| } | |||||
| activityGrant.setOrderMoneySum(orderMoneySum); | |||||
| activityGrant.setOrderCount(orderList.size()); | |||||
| activityGrant.setCusName(orderList.get(0).getCusName()); | |||||
| activityGrant.setCusPhone(orderList.get(0).getCusPhone()); | |||||
| if(!isGrant){ | |||||
| activityGrant.setLotteryNum(JSON.toJSONString(lotteryNumList)); | |||||
| activityGrant.setLotteryCount(lotteryCount); | |||||
| activityGrant.setAnniversaryLotteryNum(JSON.toJSONString(anniversaryLotteryNumList)); | |||||
| } | |||||
| } | |||||
| @Override | |||||
| public boolean saveOrUpdate(WxVtwoActivityGrant activityGrant) { | |||||
| Date now = new Date(); | |||||
| if(activityGrant.getId() == null){ | |||||
| final IdWorker idWorker = IdWorker.get(); | |||||
| activityGrant.setId(idWorker.nextId()); | |||||
| activityGrant.setCreateDate(now); | |||||
| activityGrant.setCreateDate(now); | |||||
| wxVtwoActivityGrantMapper.insert(activityGrant); | |||||
| } | |||||
| else{ | |||||
| activityGrant.setUpdateDate(now); | |||||
| wxVtwoActivityGrantMapper.updateById(activityGrant); | |||||
| } | |||||
| return true; | |||||
| } | |||||
| } | } | ||||
| @@ -1,11 +1,24 @@ | |||||
| package com.iformall.service.impl; | package com.iformall.service.impl; | ||||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||
| import com.iformall.domain.po.WxVtwoActivityGrantSettlement; | |||||
| import com.iformall.common.IdWorker; | |||||
| import com.iformall.domain.po.*; | |||||
| import com.iformall.enums.EnumOfflineActivityAwardsModeType; | |||||
| import com.iformall.enums.EnumYesOrNo; | |||||
| import com.iformall.service.WxVtwoActivityGrantSettlementService; | import com.iformall.service.WxVtwoActivityGrantSettlementService; | ||||
| import com.iformall.mapper.WxVtwoActivityGrantSettlementMapper; | import com.iformall.mapper.WxVtwoActivityGrantSettlementMapper; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import java.math.BigDecimal; | |||||
| import java.math.RoundingMode; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Comparator; | |||||
| import java.util.List; | |||||
| import java.util.Map; | |||||
| import java.util.function.Function; | |||||
| import java.util.stream.Collectors; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| * @description 针对表【wx_vtwo_activity_grant_settlement(线下活动发放奖励结算)】的数据库操作Service实现 | * @description 针对表【wx_vtwo_activity_grant_settlement(线下活动发放奖励结算)】的数据库操作Service实现 | ||||
| @@ -15,6 +28,99 @@ import org.springframework.stereotype.Service; | |||||
| public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl<WxVtwoActivityGrantSettlementMapper, WxVtwoActivityGrantSettlement> | public class WxVtwoActivityGrantSettlementServiceImpl extends ServiceImpl<WxVtwoActivityGrantSettlementMapper, WxVtwoActivityGrantSettlement> | ||||
| implements WxVtwoActivityGrantSettlementService{ | implements WxVtwoActivityGrantSettlementService{ | ||||
| @Autowired | |||||
| private WxVtwoActivityGrantSettlementMapper wxVtwoActivityGrantSettlementMapper; | |||||
| @Override | |||||
| public void saveGrantSettlement(WxVtwoActivityGrant activityGrant) { | |||||
| List<WxVtwoActivityOrder> amountOrderList = activityGrant.getOrderList().stream().filter(o -> EnumYesOrNo.YES.getCode().equals(o.getIsAmount())) | |||||
| .sorted(Comparator.comparing(WxVtwoActivityOrder::getOrderMoney).reversed()).collect(Collectors.toList()); | |||||
| List<WxVtwoActivityOrder> cmountOrderList = activityGrant.getOrderList().stream().sorted(Comparator.comparing(WxVtwoActivityOrder::getOrderMoney).reversed()).collect(Collectors.toList()); | |||||
| List<WxVtwoActivityGrantAward> grantAwardList = activityGrant.getGrantAwardList(); | |||||
| Map<Integer, List<WxVtwoActivityGrantAward>> grantAwardMap = grantAwardList.stream().collect(Collectors.groupingBy(WxVtwoActivityGrantAward::getModeType)); | |||||
| List<WxVtwoActivityGrantAward> amountGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); | |||||
| List<WxVtwoActivityGrantAward> countGrantAwardList = grantAwardMap.get(EnumOfflineActivityAwardsModeType.COUNT.getCode()); | |||||
| List<WxVtwoActivityGrantSettlement> settlementList = new ArrayList<>(); | |||||
| final IdWorker idWorker = IdWorker.get(); | |||||
| if(amountGrantAwardList != null && !amountGrantAwardList.isEmpty()){ | |||||
| handleOrderRatio(amountOrderList); | |||||
| Map<Long, WxVtwoActivityOrder> amountOrderMap = amountOrderList.stream().collect(Collectors.toMap(WxVtwoActivityOrder::getId, Function.identity())); | |||||
| for (WxVtwoActivityGrantAward grant : amountGrantAwardList) { | |||||
| if(grant.getOrderId() != null){ | |||||
| WxVtwoActivityOrder order = amountOrderMap.get(grant.getOrderId()); | |||||
| WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,true); | |||||
| settlementList.add(settlement); | |||||
| }else{ | |||||
| for (WxVtwoActivityOrder order : amountOrderList){ | |||||
| WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,false); | |||||
| settlementList.add(settlement); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| if(countGrantAwardList != null && !countGrantAwardList.isEmpty()){ | |||||
| handleOrderRatio(cmountOrderList); | |||||
| for (WxVtwoActivityGrantAward grant : countGrantAwardList) { | |||||
| for (WxVtwoActivityOrder order : amountOrderList){ | |||||
| WxVtwoActivityGrantSettlement settlement = getGrantSettlement(grant,order,idWorker,false); | |||||
| settlementList.add(settlement); | |||||
| } | |||||
| } | |||||
| } | |||||
| wxVtwoActivityGrantSettlementMapper.insertList(settlementList); | |||||
| } | |||||
| private void handleOrderRatio(List<WxVtwoActivityOrder> orderList){ | |||||
| BigDecimal orderSumMoney = orderList.stream().map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | |||||
| int size = orderList.size() - 1; | |||||
| BigDecimal lastRatio = new BigDecimal(100); | |||||
| for(int i=0; i<size; i++){ | |||||
| WxVtwoActivityOrder order = orderList.get(i); | |||||
| BigDecimal orderRatio = order.getOrderMoney() | |||||
| .divide(orderSumMoney,4, RoundingMode.HALF_UP) | |||||
| .multiply(new BigDecimal(100)); | |||||
| order.setOrderRatio(orderRatio); | |||||
| lastRatio = lastRatio.subtract(orderRatio); | |||||
| } | |||||
| orderList.get(size).setOrderRatio(lastRatio); | |||||
| } | |||||
| private WxVtwoActivityGrantSettlement getGrantSettlement(WxVtwoActivityGrantAward grant,WxVtwoActivityOrder order,IdWorker idWorker,boolean isOneOrder){ | |||||
| WxVtwoActivityGrantSettlement settlement = new WxVtwoActivityGrantSettlement(); | |||||
| settlement.setId(idWorker.nextId()); | |||||
| settlement.updateTenantInfo(grant); | |||||
| settlement.setActivityId(grant.getActivityId()); | |||||
| settlement.setGrantId(grant.getGrantId()); | |||||
| settlement.setGrantAwardId(grant.getId()); | |||||
| settlement.setAwardId(grant.getAwardId()); | |||||
| settlement.setAwardCount(grant.getAwardCount()); | |||||
| settlement.setGrantPrice(grant.getGrantPrice()); | |||||
| settlement.setOrderId(order.getId()); | |||||
| settlement.setOrderNo(order.getOrderNo()); | |||||
| settlement.setOrderAmount(order.getOrderMoney()); | |||||
| settlement.setMerchantId(order.getMerchantId()); | |||||
| if(isOneOrder){ | |||||
| settlement.setOrderRatio(new BigDecimal(100)); | |||||
| }else{ | |||||
| settlement.setOrderRatio(order.getOrderRatio()); | |||||
| } | |||||
| settlement.setOrderGrantPrice(settlement.getGrantPrice() | |||||
| .multiply(settlement.getOrderRatio().divide(new BigDecimal(100))) | |||||
| .setScale(2, RoundingMode.HALF_UP)); | |||||
| settlement.setMallShareRate(grant.getMallShareRate()); | |||||
| settlement.setMerchantShareRate(grant.getMerchantShareRate()); | |||||
| settlement.setOrderMallSharePrice(settlement.getOrderGrantPrice() | |||||
| .multiply(settlement.getMallShareRate().divide(new BigDecimal(100))) | |||||
| .setScale(2, RoundingMode.HALF_UP)); | |||||
| settlement.setOrderMerchantSharePrice(settlement.getOrderGrantPrice().subtract(settlement.getOrderMallSharePrice())); | |||||
| settlement.setCreateDate(grant.getUpdateDate()); | |||||
| settlement.setUpdateDate(grant.getUpdateDate()); | |||||
| return settlement; | |||||
| } | |||||
| } | } | ||||
| @@ -28,6 +28,8 @@ import java.util.*; | |||||
| import java.util.function.Function; | import java.util.function.Function; | ||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
| import static java.util.stream.Collectors.toList; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| * @description 针对表【wx_vtwo_activity_order(线下活动参与登记)】的数据库操作Service实现 | * @description 针对表【wx_vtwo_activity_order(线下活动参与登记)】的数据库操作Service实现 | ||||
| @@ -374,6 +376,46 @@ public class WxVtwoActivityOrderServiceImpl extends ServiceImpl<WxVtwoActivityOr | |||||
| return wxVtwoActivityOrderMapper.selectLimitOne(activityOrder); | return wxVtwoActivityOrderMapper.selectLimitOne(activityOrder); | ||||
| } | } | ||||
| @Override | |||||
| public List<WxVtwoActivityOrder> findGrantOrder(TenantEntity tenantInfo, List<Long> idList, List<Long> filterIdList) { | |||||
| WxVtwoActivityOrder orderQ = new WxVtwoActivityOrder(); | |||||
| orderQ.updateTenantInfo(tenantInfo); | |||||
| orderQ.setIds(idList); | |||||
| List<WxVtwoActivityOrder> list = this.findList(orderQ, null); | |||||
| if(filterIdList == null || filterIdList.isEmpty()){ | |||||
| for (WxVtwoActivityOrder order : list) { | |||||
| order.setIsAmount(EnumYesOrNo.YES.getCode()); | |||||
| } | |||||
| }else{ | |||||
| for (WxVtwoActivityOrder order : list) { | |||||
| if(filterIdList.contains(order.getId())) { | |||||
| order.setIsAmount(EnumYesOrNo.YES.getCode()); | |||||
| }else{ | |||||
| order.setIsAmount(EnumYesOrNo.NO.getCode()); | |||||
| } | |||||
| } | |||||
| } | |||||
| return this.findList(orderQ,null); | |||||
| } | |||||
| @Override | |||||
| public Integer getJointCount(Integer relatedModel, List<WxVtwoActivityOrder> orderList) { | |||||
| Integer jointCount = 0; | |||||
| if(orderList == null || orderList.isEmpty()){ | |||||
| return jointCount; | |||||
| } | |||||
| if(EnumOfflineActivityCountMode.MERCHANT_MODEL.getCode().equals(relatedModel)){ | |||||
| //商户联单 | |||||
| List<Long> merchantIds = orderList.stream().map(WxVtwoActivityOrder::getMerchantId).distinct().collect(toList()); | |||||
| jointCount = merchantIds.size(); | |||||
| }else if(EnumOfflineActivityCountMode.BUSINESS_MODEL.getCode().equals(relatedModel)){ | |||||
| //业态联单 | |||||
| List<Integer> businessIds = orderList.stream().map(WxVtwoActivityOrder::getBusinessId).distinct().collect(toList()); | |||||
| jointCount = businessIds.size(); | |||||
| } | |||||
| return jointCount; | |||||
| } | |||||
| } | } | ||||
| @@ -37,9 +37,6 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl<WxVtwoAmoun | |||||
| @Autowired | @Autowired | ||||
| private WxVtwoAmountGiftActivityMapper wxVtwoAmountGiftActivityMapper; | private WxVtwoAmountGiftActivityMapper wxVtwoAmountGiftActivityMapper; | ||||
| @Autowired | |||||
| private WxVtwoActivityAwardMapper wxVtwoActivityAwardMapper; | |||||
| @Autowired | @Autowired | ||||
| private WxVtwoActivityMerchantMapper wxVtwoActivityMerchantMapper; | private WxVtwoActivityMerchantMapper wxVtwoActivityMerchantMapper; | ||||
| @@ -208,10 +205,7 @@ public class WxVtwoAmountGiftActivityServiceImpl extends ServiceImpl<WxVtwoAmoun | |||||
| amountGiftActivity.setRelatedRulesObject(JSONObject.parseArray(amountGiftActivity.getRelatedRules(), WxVtwoActivityRuleDetail.class)); | amountGiftActivity.setRelatedRulesObject(JSONObject.parseArray(amountGiftActivity.getRelatedRules(), WxVtwoActivityRuleDetail.class)); | ||||
| } | } | ||||
| WxVtwoActivityAward activityAwardQ = new WxVtwoActivityAward(); | |||||
| activityAwardQ.setTenantId(tenantId); | |||||
| activityAwardQ.setActivityId(id); | |||||
| List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardMapper.findList(activityAwardQ); | |||||
| List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(id, tenantId); | |||||
| amountGiftActivity.setAwardList(activityAwardList); | amountGiftActivity.setAwardList(activityAwardList); | ||||
| if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(amountGiftActivity.getMerchantRule())){ | if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(amountGiftActivity.getMerchantRule())){ | ||||
| List<WxVtwoActivityMerchant> activityMerchantList = wxVtwoActivityMerchantService.getActivityMerchantList(id,tenantId); | List<WxVtwoActivityMerchant> activityMerchantList = wxVtwoActivityMerchantService.getActivityMerchantList(id,tenantId); | ||||
| @@ -37,9 +37,6 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl<WxVtwoCashBac | |||||
| @Autowired | @Autowired | ||||
| private WxVtwoCashBackActivityMapper wxVtwoCashBackActivityMapper; | private WxVtwoCashBackActivityMapper wxVtwoCashBackActivityMapper; | ||||
| @Autowired | |||||
| private WxVtwoCashBackAwardMapper wxVtwoCashBackAwardMapper; | |||||
| @Autowired | @Autowired | ||||
| private WxVtwoActivityMerchantMapper wxVtwoActivityMerchantMapper; | private WxVtwoActivityMerchantMapper wxVtwoActivityMerchantMapper; | ||||
| @@ -207,7 +204,7 @@ public class WxVtwoCashBackActivityServiceImpl extends ServiceImpl<WxVtwoCashBac | |||||
| WxVtwoCashBackAward cashBackAwardQ = new WxVtwoCashBackAward(); | WxVtwoCashBackAward cashBackAwardQ = new WxVtwoCashBackAward(); | ||||
| cashBackAwardQ.setTenantId(tenantId); | cashBackAwardQ.setTenantId(tenantId); | ||||
| cashBackAwardQ.setActivityId(id); | cashBackAwardQ.setActivityId(id); | ||||
| List<WxVtwoCashBackAward> activityAwardList = wxVtwoCashBackAwardMapper.findList(cashBackAwardQ); | |||||
| List<WxVtwoCashBackAward> activityAwardList = wxVtwoCashBackAwardService.findActivityAwardList(id,tenantId); | |||||
| Map<Integer, List<WxVtwoCashBackAward>> activityAwardMap = activityAwardList.stream().collect(Collectors.groupingBy(WxVtwoCashBackAward::getModelType)); | Map<Integer, List<WxVtwoCashBackAward>> activityAwardMap = activityAwardList.stream().collect(Collectors.groupingBy(WxVtwoCashBackAward::getModelType)); | ||||
| cashBackActivity.setAmountRulesObject(activityAwardMap.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode())); | cashBackActivity.setAmountRulesObject(activityAwardMap.get(EnumOfflineActivityAwardsModeType.AMOUNT.getCode())); | ||||
| cashBackActivity.setRelatedRulesObject(activityAwardMap.get(EnumOfflineActivityAwardsModeType.COUNT.getCode())); | cashBackActivity.setRelatedRulesObject(activityAwardMap.get(EnumOfflineActivityAwardsModeType.COUNT.getCode())); | ||||
| @@ -12,9 +12,9 @@ import com.iformall.mapper.WxVtwoCashBackAwardMapper; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import java.util.ArrayList; | |||||
| import java.util.Date; | |||||
| import java.util.List; | |||||
| import java.util.*; | |||||
| import java.util.function.Function; | |||||
| import java.util.stream.Collectors; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| @@ -71,6 +71,20 @@ public class WxVtwoCashBackAwardServiceImpl extends ServiceImpl<WxVtwoCashBackAw | |||||
| wxVtwoCashBackAwardMapper.insertList(awardList); | wxVtwoCashBackAwardMapper.insertList(awardList); | ||||
| } | } | ||||
| @Override | |||||
| public List<WxVtwoCashBackAward> findActivityAwardList(Long activityId, String tenantId) { | |||||
| WxVtwoCashBackAward cashBackAwardQ = new WxVtwoCashBackAward(); | |||||
| cashBackAwardQ.setTenantId(tenantId); | |||||
| cashBackAwardQ.setActivityId(activityId); | |||||
| return wxVtwoCashBackAwardMapper.findList(cashBackAwardQ); | |||||
| } | |||||
| @Override | |||||
| public Map<Long, WxVtwoCashBackAward> findActivityAwardMap(Long activityId, String tenantId) { | |||||
| List<WxVtwoCashBackAward> activityAwardList = this.findActivityAwardList(activityId, tenantId); | |||||
| return activityAwardList.stream().collect(Collectors.toMap(WxVtwoCashBackAward::getId, Function.identity())); | |||||
| } | |||||
| } | } | ||||
| @@ -12,10 +12,7 @@ import com.iformall.common.Result; | |||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.po.base.BaseEntity; | import com.iformall.domain.po.base.BaseEntity; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.domain.vo.OfflineActivityRecordStatistics; | |||||
| import com.iformall.domain.vo.WxVtwoActivityOrderStatistics; | |||||
| import com.iformall.domain.vo.WxVtwoActivityRule; | |||||
| import com.iformall.domain.vo.WxVtwoActivityRuleDetail; | |||||
| import com.iformall.domain.vo.*; | |||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.mapper.*; | import com.iformall.mapper.*; | ||||
| @@ -27,9 +24,12 @@ import org.springframework.transaction.annotation.Transactional; | |||||
| import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||
| import java.util.Collections; | |||||
| import java.util.Date; | |||||
| import java.util.List; | |||||
| import java.math.BigDecimal; | |||||
| import java.math.RoundingMode; | |||||
| import java.util.*; | |||||
| import java.util.function.Function; | |||||
| import static java.util.stream.Collectors.*; | |||||
| /** | /** | ||||
| * @author xiaohu | * @author xiaohu | ||||
| @@ -43,9 +43,6 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl<WxVtwoPrizeD | |||||
| @Autowired | @Autowired | ||||
| private WxVtwoPrizeDrawActivityMapper wxVtwoPrizeDrawActivityMapper; | private WxVtwoPrizeDrawActivityMapper wxVtwoPrizeDrawActivityMapper; | ||||
| @Autowired | |||||
| private WxVtwoActivityAwardMapper wxVtwoActivityAwardMapper; | |||||
| @Autowired | @Autowired | ||||
| private WxVtwoActivityMerchantMapper wxVtwoActivityMerchantMapper; | private WxVtwoActivityMerchantMapper wxVtwoActivityMerchantMapper; | ||||
| @@ -64,9 +61,25 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl<WxVtwoPrizeD | |||||
| @Autowired | @Autowired | ||||
| private WxVtwoActivityMerchantService wxVtwoActivityMerchantService; | private WxVtwoActivityMerchantService wxVtwoActivityMerchantService; | ||||
| @Autowired | |||||
| private WxVtwoActivityOrderService wxVtwoActivityOrderService; | |||||
| @Autowired | |||||
| private WxVtwoActivityGrantService wxVtwoActivityGrantService; | |||||
| @Autowired | |||||
| private WxVtwoActivityGrantOrderService wxVtwoActivityGrantOrderService; | |||||
| @Autowired | |||||
| private WxVtwoActivityGrantAwardService wxVtwoActivityGrantAwardService; | |||||
| @Autowired | |||||
| private WxVtwoActivityGrantSettlementService wxVtwoActivityGrantSettlementService; | |||||
| @Autowired | @Autowired | ||||
| private ExcelService excelService; | private ExcelService excelService; | ||||
| @Override | @Override | ||||
| public PageInfo<WxVtwoPrizeDrawActivity> listAsPage(WxVtwoPrizeDrawActivity prizeDrawActivity, Integer pageNum, Integer pageSize) { | public PageInfo<WxVtwoPrizeDrawActivity> listAsPage(WxVtwoPrizeDrawActivity prizeDrawActivity, Integer pageNum, Integer pageSize) { | ||||
| handlerQuery(prizeDrawActivity); | handlerQuery(prizeDrawActivity); | ||||
| @@ -214,10 +227,7 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl<WxVtwoPrizeD | |||||
| prizeDrawActivity.setRelatedRulesObject(JSONObject.parseArray(prizeDrawActivity.getRelatedRules(), WxVtwoActivityRuleDetail.class)); | prizeDrawActivity.setRelatedRulesObject(JSONObject.parseArray(prizeDrawActivity.getRelatedRules(), WxVtwoActivityRuleDetail.class)); | ||||
| } | } | ||||
| WxVtwoActivityAward activityAwardQ = new WxVtwoActivityAward(); | |||||
| activityAwardQ.setTenantId(tenantId); | |||||
| activityAwardQ.setActivityId(id); | |||||
| List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardMapper.findList(activityAwardQ); | |||||
| List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(id, tenantId); | |||||
| prizeDrawActivity.setAwardList(activityAwardList); | prizeDrawActivity.setAwardList(activityAwardList); | ||||
| if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(prizeDrawActivity.getMerchantRule())){ | if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(prizeDrawActivity.getMerchantRule())){ | ||||
| List<WxVtwoActivityMerchant> activityMerchantList = wxVtwoActivityMerchantService.getActivityMerchantList(id,tenantId); | List<WxVtwoActivityMerchant> activityMerchantList = wxVtwoActivityMerchantService.getActivityMerchantList(id,tenantId); | ||||
| @@ -246,6 +256,104 @@ public class WxVtwoPrizeDrawActivityServiceImpl extends ServiceImpl<WxVtwoPrizeD | |||||
| activity.setActivityStatus(prizeDrawActivity.getStatus()); | activity.setActivityStatus(prizeDrawActivity.getStatus()); | ||||
| } | } | ||||
| @Override | |||||
| public void handlerGrantAwardPage(WxVtwoPrizeDrawActivity prizeDrawActivity,WxVtwoActivityGrant activityGrant) { | |||||
| List<WxVtwoActivityOrder> orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); | |||||
| wxVtwoActivityGrantService.handleFromOrder(prizeDrawActivity.getName(),activityGrant,orderList,false); | |||||
| List<WxVtwoActivityAward> activityAwardList = wxVtwoActivityAwardService.findActivityAwardList(activityGrant.getActivityId(), activityGrant.getTenantId()); | |||||
| activityGrant.setAwardList(activityAwardList); | |||||
| int limitCount = 0; | |||||
| List<WxVtwoActivityGrantRule> grantRuleList = new ArrayList<>(); | |||||
| if(EnumOfflineActivityMode.ONE.getCode().equals(prizeDrawActivity.getAmountModel())){ | |||||
| for(WxVtwoActivityOrder order:orderList){ | |||||
| Integer order_limit = 0; | |||||
| for (WxVtwoActivityRuleDetail rule :prizeDrawActivity.getAmountRulesObject().getRuleList()){ | |||||
| if((rule.getMinAmount() == null || order.getOrderMoney().compareTo(rule.getMinAmount()) >= 0) | |||||
| && (rule.getMaxAmount() == null || order.getOrderMoney().compareTo(rule.getMaxAmount()) <= 0)){ | |||||
| order_limit = rule.getAwardCount(); | |||||
| } | |||||
| } | |||||
| if(order_limit != null && order_limit > 0){ | |||||
| WxVtwoActivityGrantRule grantRule = new WxVtwoActivityGrantRule(); | |||||
| grantRule.setOrderId(order.getId()); | |||||
| grantRule.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); | |||||
| grantRule.setName("订单抽奖("+order.getOrderNo()+")"); | |||||
| grantRule.setAwardLimit(order_limit); | |||||
| grantRuleList.add(grantRule); | |||||
| limitCount += order_limit; | |||||
| } | |||||
| } | |||||
| }else{ | |||||
| BigDecimal orderMoneySum = orderList.stream().filter(order -> EnumYesOrNo.YES.getCode().equals(order.getIsAmount())) | |||||
| .map(WxVtwoActivityOrder::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); | |||||
| BigDecimal limitAmount = prizeDrawActivity.getAmountRulesObject().getLimitAmount(); | |||||
| BigDecimal awardAmount = prizeDrawActivity.getAmountRulesObject().getAwardAmount(); | |||||
| if(limitAmount == null || orderMoneySum.compareTo(limitAmount) > 0){ | |||||
| if(awardAmount != null && awardAmount.compareTo(BigDecimal.ZERO) > 0){ | |||||
| Integer order_limit = orderMoneySum.divide(awardAmount,0, RoundingMode.HALF_DOWN).intValue(); | |||||
| if(order_limit > 0){ | |||||
| WxVtwoActivityGrantRule grantRule = new WxVtwoActivityGrantRule(); | |||||
| grantRule.setModeType(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); | |||||
| grantRule.setName("订单总金额抽奖"); | |||||
| grantRule.setAwardLimit(order_limit); | |||||
| grantRuleList.add(grantRule); | |||||
| limitCount += order_limit; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| //联单 | |||||
| Integer jointCount = wxVtwoActivityOrderService.getJointCount(prizeDrawActivity.getRelatedModel(),orderList); | |||||
| if(jointCount != 0){ | |||||
| Map<Integer, WxVtwoActivityRuleDetail> jointCountMap = prizeDrawActivity.getRelatedRulesObject().stream().collect(toMap(WxVtwoActivityRuleDetail::getRelatedCount, Function.identity())); | |||||
| WxVtwoActivityRuleDetail relatedRule = jointCountMap.get(jointCount); | |||||
| if(relatedRule != null && relatedRule.getAwardCount() != null){ | |||||
| Integer joint_limit = relatedRule.getAwardCount(); | |||||
| if(joint_limit > 0){ | |||||
| WxVtwoActivityGrantRule grantRule = new WxVtwoActivityGrantRule(); | |||||
| grantRule.setModeType(EnumOfflineActivityAwardsModeType.COUNT.getCode()); | |||||
| grantRule.setName("联单抽奖"); | |||||
| grantRule.setAwardLimit(joint_limit); | |||||
| grantRuleList.add(grantRule); | |||||
| limitCount += joint_limit; | |||||
| } | |||||
| } | |||||
| } | |||||
| if(prizeDrawActivity.getAwardsLimit() != null && prizeDrawActivity.getAwardsLimit() > 0 | |||||
| && prizeDrawActivity.getAwardsLimit() < limitCount){ | |||||
| limitCount = prizeDrawActivity.getAwardsLimit(); | |||||
| } | |||||
| activityGrant.setAwardLimit(limitCount); | |||||
| activityGrant.setRuleList(grantRuleList); | |||||
| } | |||||
| @Override | |||||
| @Transactional(rollbackFor = Exception.class) | |||||
| public void grantAward(WxVtwoPrizeDrawActivity prizeDrawActivity,WxVtwoActivityGrant activityGrant) { | |||||
| List<WxVtwoActivityOrder> orderList = wxVtwoActivityOrderService.findGrantOrder(activityGrant,activityGrant.getOrderIdList(),activityGrant.getOrderFilterIdList()); | |||||
| wxVtwoActivityGrantService.handleFromOrder(prizeDrawActivity.getName(),activityGrant,orderList,false); | |||||
| wxVtwoActivityGrantService.saveOrUpdate(activityGrant); | |||||
| wxVtwoActivityGrantOrderService.saveGrantOrder(activityGrant.getId(),activityGrant.getActivityId(),orderList); | |||||
| wxVtwoActivityGrantAwardService.saveGrantAward(activityGrant); | |||||
| wxVtwoActivityGrantSettlementService.saveGrantSettlement(activityGrant); | |||||
| } | |||||
| } | } | ||||
| @@ -12,18 +12,14 @@ | |||||
| <result property="activityName" column="activity_name" jdbcType="VARCHAR"/> | <result property="activityName" column="activity_name" jdbcType="VARCHAR"/> | ||||
| <result property="grantId" column="grant_id" jdbcType="BIGINT"/> | <result property="grantId" column="grant_id" jdbcType="BIGINT"/> | ||||
| <result property="orderId" column="order_id" jdbcType="BIGINT"/> | <result property="orderId" column="order_id" jdbcType="BIGINT"/> | ||||
| <result property="orderAmount" column="order_amount" jdbcType="DECIMAL"/> | |||||
| <result property="modeType" column="mode_type" jdbcType="SMALLINT"/> | <result property="modeType" column="mode_type" jdbcType="SMALLINT"/> | ||||
| <result property="minAmount" column="min_amount" jdbcType="DECIMAL"/> | |||||
| <result property="maxAmount" column="max_amount" jdbcType="DECIMAL"/> | |||||
| <result property="relatedCount" column="related_count" jdbcType="INTEGER"/> | |||||
| <result property="awardId" column="award_id" jdbcType="BIGINT"/> | <result property="awardId" column="award_id" jdbcType="BIGINT"/> | ||||
| <result property="awardGrade" column="award_grade" jdbcType="INTEGER"/> | <result property="awardGrade" column="award_grade" jdbcType="INTEGER"/> | ||||
| <result property="awardName" column="award_name" jdbcType="VARCHAR"/> | <result property="awardName" column="award_name" jdbcType="VARCHAR"/> | ||||
| <result property="awardPrice" column="award_price" jdbcType="DECIMAL"/> | <result property="awardPrice" column="award_price" jdbcType="DECIMAL"/> | ||||
| <result property="awardCount" column="award_count" jdbcType="INTEGER"/> | <result property="awardCount" column="award_count" jdbcType="INTEGER"/> | ||||
| <result property="grantPrice" column="grant_price" jdbcType="DECIMAL"/> | <result property="grantPrice" column="grant_price" jdbcType="DECIMAL"/> | ||||
| <result property="moneyRule" column="money_rule" jdbcType="SMALLINT"/> | |||||
| <result property="shareRule" column="share_rule" jdbcType="SMALLINT"/> | |||||
| <result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/> | <result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/> | ||||
| <result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/> | <result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/> | ||||
| <result property="status" column="status" jdbcType="SMALLINT"/> | <result property="status" column="status" jdbcType="SMALLINT"/> | ||||
| @@ -34,11 +30,10 @@ | |||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| id,tenant_id,parent_tenant_id, | id,tenant_id,parent_tenant_id, | ||||
| activity_id,activity_name,grant_id, | activity_id,activity_name,grant_id, | ||||
| order_id,order_amount,mode_type, | |||||
| min_amount,max_amount,related_count, | |||||
| order_id,mode_type, | |||||
| award_id,award_grade,award_name, | award_id,award_grade,award_name, | ||||
| award_price,award_count,grant_price, | award_price,award_count,grant_price, | ||||
| money_rule,mall_share_rate,merchant_share_rate, | |||||
| share_rule,mall_share_rate,merchant_share_rate, | |||||
| status,create_date,update_date | status,create_date,update_date | ||||
| </sql> | </sql> | ||||
| @@ -91,4 +86,25 @@ | |||||
| select <include refid="allColumns" /> from wx_vtwo_activity_grant_award | select <include refid="allColumns" /> from wx_vtwo_activity_grant_award | ||||
| where id = #{id} and tenant_id=#{tenantId} | where id = #{id} and tenant_id=#{tenantId} | ||||
| </select> | </select> | ||||
| <insert id="insertList" parameterType="java.util.List"> | |||||
| insert into wx_vtwo_activity_grant_award | |||||
| (id, | |||||
| activity_id,activity_name,grant_id, | |||||
| order_id,mode_type, | |||||
| award_id,award_grade,award_name, | |||||
| award_price,award_count,grant_price, | |||||
| share_rule,mall_share_rate,merchant_share_rate, | |||||
| create_date,update_date) | |||||
| values | |||||
| <foreach collection="grantAwardList" item="item" index="index" separator=","> | |||||
| (#{item.id,jdbcType=BIGINT}, | |||||
| #{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR},#{item.grantId,jdbcType=BIGINT}, | |||||
| #{item.orderId,jdbcType=BIGINT},#{item.modeType,jdbcType=SMALLINT}, | |||||
| #{item.awardId,jdbcType=BIGINT},#{item.awardGrade,jdbcType=INTEGER},#{item.awardName,jdbcType=VARCHAR}, | |||||
| #{item.awardPrice,jdbcType=DECIMAL},#{item.awardCount,jdbcType=INTEGER},#{item.grantPrice,jdbcType=DECIMAL}, | |||||
| #{item.shareRule,jdbcType=SMALLINT},#{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL}, | |||||
| #{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) | |||||
| </foreach> | |||||
| </insert> | |||||
| </mapper> | </mapper> | ||||
| @@ -64,4 +64,17 @@ | |||||
| select <include refid="allColumns" /> from wx_vtwo_activity_grant_order | select <include refid="allColumns" /> from wx_vtwo_activity_grant_order | ||||
| where id = #{id} and tenant_id=#{tenantId} | where id = #{id} and tenant_id=#{tenantId} | ||||
| </select> | </select> | ||||
| <insert id="insertList" parameterType="java.util.List"> | |||||
| insert into wx_vtwo_activity_grant_order | |||||
| (id, | |||||
| grant_id,activity_id,order_id, | |||||
| is_amount, status) | |||||
| values | |||||
| <foreach collection="grantOrderList" item="item" index="index" separator=","> | |||||
| (#{item.id,jdbcType=BIGINT}, | |||||
| #{item.grantId,jdbcType=BIGINT},#{item.activityId,jdbcType=BIGINT},#{item.orderId,jdbcType=BIGINT}, | |||||
| #{item.isAmount,jdbcType=SMALLINT},#{item.status,jdbcType=SMALLINT}) | |||||
| </foreach> | |||||
| </insert> | |||||
| </mapper> | </mapper> | ||||
| @@ -92,4 +92,27 @@ | |||||
| FROM wx_vtwo_activity_grant_settlement | FROM wx_vtwo_activity_grant_settlement | ||||
| <include refid="dynamicWhereConditions" /> | <include refid="dynamicWhereConditions" /> | ||||
| </select> | </select> | ||||
| <insert id="insertList" parameterType="java.util.List"> | |||||
| insert into wx_vtwo_activity_grant_settlement | |||||
| (id, | |||||
| activity_id,grant_id,grant_award_id, | |||||
| award_id,grant_price,order_id, | |||||
| order_no,order_amount,merchant_id, | |||||
| order_ratio,order_grant_price,mall_share_rate, | |||||
| merchant_share_rate,order_mall_share_price,order_merchant_share_price, | |||||
| tax_amount,create_date, | |||||
| update_date) | |||||
| values | |||||
| <foreach collection="settlementList" item="item" index="index" separator=","> | |||||
| (#{item.id,jdbcType=BIGINT}, | |||||
| #{item.activityId,jdbcType=BIGINT},#{item.grantId,jdbcType=BIGINT},#{item.grantAwardId,jdbcType=BIGINT}, | |||||
| #{item.awardId,jdbcType=BIGINT},#{item.grantPrice,jdbcType=DECIMAL},#{item.orderId,jdbcType=BIGINT}, | |||||
| #{item.orderNo,jdbcType=VARCHAR},#{item.orderAmount,jdbcType=DECIMAL},#{item.merchantId,jdbcType=BIGINT}, | |||||
| #{item.orderRatio,jdbcType=DECIMAL},#{item.orderGrantPrice,jdbcType=DECIMAL},#{item.mallShareRate,jdbcType=DECIMAL}, | |||||
| #{item.merchantShareRate,jdbcType=DECIMAL},#{item.orderMallSharePrice,jdbcType=DECIMAL},#{item.orderMerchantSharePrice,jdbcType=DECIMAL}, | |||||
| #{item.taxAmount,jdbcType=DECIMAL},#{item.createDate,jdbcType=TIMESTAMP}, | |||||
| #{item.updateDate,jdbcType=TIMESTAMP}) | |||||
| </foreach> | |||||
| </insert> | |||||
| </mapper> | </mapper> | ||||
| @@ -11,7 +11,7 @@ | |||||
| <result property="activityId" column="activity_id" jdbcType="BIGINT"/> | <result property="activityId" column="activity_id" jdbcType="BIGINT"/> | ||||
| <result property="activityName" column="activity_name" jdbcType="VARCHAR"/> | <result property="activityName" column="activity_name" jdbcType="VARCHAR"/> | ||||
| <result property="grantId" column="grant_id" jdbcType="BIGINT"/> | <result property="grantId" column="grant_id" jdbcType="BIGINT"/> | ||||
| <result property="recordId" column="record_id" jdbcType="BIGINT"/> | |||||
| <result property="orderId" column="order_id" jdbcType="BIGINT"/> | |||||
| <result property="orderAmount" column="order_amount" jdbcType="DECIMAL"/> | <result property="orderAmount" column="order_amount" jdbcType="DECIMAL"/> | ||||
| <result property="modeType" column="mode_type" jdbcType="SMALLINT"/> | <result property="modeType" column="mode_type" jdbcType="SMALLINT"/> | ||||
| <result property="minAmount" column="min_amount" jdbcType="DECIMAL"/> | <result property="minAmount" column="min_amount" jdbcType="DECIMAL"/> | ||||
| @@ -22,7 +22,7 @@ | |||||
| <result property="cashBackRatio" column="cash_back_ratio" jdbcType="DECIMAL"/> | <result property="cashBackRatio" column="cash_back_ratio" jdbcType="DECIMAL"/> | ||||
| <result property="cashBackRule" column="cash_back_rule" jdbcType="SMALLINT"/> | <result property="cashBackRule" column="cash_back_rule" jdbcType="SMALLINT"/> | ||||
| <result property="cashBack" column="cash_back" jdbcType="DECIMAL"/> | <result property="cashBack" column="cash_back" jdbcType="DECIMAL"/> | ||||
| <result property="moneyRule" column="money_rule" jdbcType="SMALLINT"/> | |||||
| <result property="shareRule" column="share_rule" jdbcType="SMALLINT"/> | |||||
| <result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/> | <result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/> | ||||
| <result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/> | <result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/> | ||||
| <result property="taxDeductionRules" column="tax_deduction_rules" jdbcType="VARCHAR"/> | <result property="taxDeductionRules" column="tax_deduction_rules" jdbcType="VARCHAR"/> | ||||
| @@ -35,10 +35,10 @@ | |||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| id,tenant_id,parent_tenant_id, | id,tenant_id,parent_tenant_id, | ||||
| activity_id,activity_name,grant_id, | activity_id,activity_name,grant_id, | ||||
| record_id,order_amount,mode_type, | |||||
| order_id,order_amount,mode_type, | |||||
| min_amount,max_amount,related_count, | min_amount,max_amount,related_count, | ||||
| award_id,award_name,cash_back_ratio, | award_id,award_name,cash_back_ratio, | ||||
| cash_back_rule,cash_back,money_rule, | |||||
| cash_back_rule,cash_back,share_rule, | |||||
| mall_share_rate,merchant_share_rate,tax_deduction_rules, | mall_share_rate,merchant_share_rate,tax_deduction_rules, | ||||
| tax_amount,status,create_date, | tax_amount,status,create_date, | ||||
| update_date | update_date | ||||
| @@ -61,8 +61,8 @@ | |||||
| <if test=" null != grantId "> | <if test=" null != grantId "> | ||||
| and `grant_id` = #{grantId} | and `grant_id` = #{grantId} | ||||
| </if> | </if> | ||||
| <if test=" null != recordId "> | |||||
| and `record_id` = #{recordId} | |||||
| <if test=" null != orderId "> | |||||
| and `order_id` = #{orderId} | |||||
| </if> | </if> | ||||
| <if test=" null != ids "> | <if test=" null != ids "> | ||||
| @@ -83,4 +83,28 @@ | |||||
| select <include refid="allColumns" /> from wx_vtwo_cash_back_grant_award | select <include refid="allColumns" /> from wx_vtwo_cash_back_grant_award | ||||
| where id = #{id} and tenant_id=#{tenantId} | where id = #{id} and tenant_id=#{tenantId} | ||||
| </select> | </select> | ||||
| <insert id="insertList" parameterType="java.util.List"> | |||||
| insert into wx_vtwo_cash_back_grant_award | |||||
| (id, | |||||
| activity_id,activity_name,grant_id, | |||||
| order_id,order_amount,mode_type, | |||||
| min_amount,max_amount,related_count, | |||||
| award_id,award_name,cash_back_ratio, | |||||
| cash_back_rule,cash_back,share_rule, | |||||
| mall_share_rate,merchant_share_rate,tax_deduction_rules, | |||||
| tax_amount,create_date, | |||||
| update_date) | |||||
| values | |||||
| <foreach collection="grantAwardList" item="item" index="index" separator=","> | |||||
| (#{item.id,jdbcType=BIGINT}, | |||||
| #{item.activityId,jdbcType=BIGINT},#{item.activityName,jdbcType=VARCHAR},#{item.grantId,jdbcType=BIGINT}, | |||||
| #{item.orderId,jdbcType=BIGINT},#{item.orderAmount,jdbcType=DECIMAL},#{item.modeType,jdbcType=SMALLINT}, | |||||
| #{item.minAmount,jdbcType=DECIMAL},#{item.maxAmount,jdbcType=DECIMAL},#{item.relatedCount,jdbcType=INTEGER}, | |||||
| #{item.awardId,jdbcType=BIGINT},#{item.awardName,jdbcType=VARCHAR},#{item.cashBackRatio,jdbcType=DECIMAL}, | |||||
| #{item.cashBackRule,jdbcType=SMALLINT},#{item.cashBack,jdbcType=DECIMAL},#{item.shareRule,jdbcType=SMALLINT}, | |||||
| #{item.mallShareRate,jdbcType=DECIMAL},#{item.merchantShareRate,jdbcType=DECIMAL},#{item.taxDeductionRules,jdbcType=VARCHAR}, | |||||
| #{item.taxAmount,jdbcType=DECIMAL},#{item.createDate,jdbcType=TIMESTAMP},#{item.updateDate,jdbcType=TIMESTAMP}) | |||||
| </foreach> | |||||
| </insert> | |||||
| </mapper> | </mapper> | ||||