| @@ -0,0 +1,75 @@ | |||
| package com.iformall.controller.market; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.Result; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.controller.base.BaseController; | |||
| import com.iformall.domain.po.WxOfflineActivityRecord; | |||
| import com.iformall.domain.po.base.BaseEntity.SortField; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.enums.EnumOfflineActivityRecordStatus; | |||
| import com.iformall.service.WxOfflineActivityGrantAwardService; | |||
| import com.iformall.service.WxOfflineActivityRecordService; | |||
| 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 java.util.List; | |||
| import java.util.Map; | |||
| /** | |||
| * @author alascor | |||
| * | |||
| */ | |||
| @RestController | |||
| @RequestMapping("/offlineGrant") | |||
| @Api(description = "线下活动登记相关接口") | |||
| public class WxOfflineActivityGrantController extends BaseController { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| private WxOfflineActivityGrantAwardService wxOfflineActivityGrantAwardService; | |||
| @ApiOperation("参加活动用户订单统计") | |||
| @GetMapping("recordStatistics") | |||
| public ResultData statisticsCount(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) { | |||
| if(wxOfflineActivityRecord.getActivityId() == null){ | |||
| return new ResultData(Result.ERROR,"请选择活动"); | |||
| } | |||
| if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){ | |||
| return new ResultData(Result.ERROR,"请输入用户手机号"); | |||
| } | |||
| TenantEntity tenantInfo = getTenantInfo(); | |||
| wxOfflineActivityRecord.updateTenantInfo(tenantInfo); | |||
| Map<String,Object> statisticsMap = wxOfflineActivityGrantAwardService.getRecordStatistics(wxOfflineActivityRecord.getActivityId(),wxOfflineActivityRecord); | |||
| return new ResultData(statisticsMap); | |||
| } | |||
| @ApiOperation("参加活动用户订单列表") | |||
| @GetMapping("recordList") | |||
| @ApiImplicitParams({}) | |||
| public ResultData list(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) { | |||
| if(wxOfflineActivityRecord.getActivityId() == null){ | |||
| return new ResultData(Result.ERROR,"请选择活动"); | |||
| } | |||
| if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){ | |||
| return new ResultData(Result.ERROR,"请输入用户手机号"); | |||
| } | |||
| TenantEntity tenantInfo = getTenantInfo(); | |||
| wxOfflineActivityRecord.updateTenantInfo(tenantInfo); | |||
| wxOfflineActivityRecord.setSortColumns(SortField.CreateDate_DESC); | |||
| List<WxOfflineActivityRecord> recordList = wxOfflineActivityGrantAwardService.getRecordList(wxOfflineActivityRecord.getActivityId(),wxOfflineActivityRecord); | |||
| return new ResultData(recordList); | |||
| } | |||
| } | |||
| @@ -0,0 +1,94 @@ | |||
| package com.iformall.controller.market; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.Result; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.controller.base.BaseController; | |||
| import com.iformall.domain.po.WxOfflineActivity; | |||
| import com.iformall.domain.po.WxOfflineActivityAwardsItem; | |||
| import com.iformall.domain.po.WxOfflineActivityItem; | |||
| import com.iformall.domain.po.WxOfflineActivityRecord; | |||
| import com.iformall.domain.po.base.BaseEntity.SortField; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.enums.EnumOfflineActivityAwardsMoneyRule; | |||
| import com.iformall.enums.EnumOfflineActivityMerchantType; | |||
| import com.iformall.enums.EnumOfflineActivityRecordStatus; | |||
| import com.iformall.enums.EnumOfflineActivityStatus; | |||
| import com.iformall.service.WxOfflineActivityRecordService; | |||
| import com.iformall.service.WxOfflineActivityService; | |||
| 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 java.math.BigDecimal; | |||
| /** | |||
| * @author alascor | |||
| * | |||
| */ | |||
| @RestController | |||
| @RequestMapping("/offlineRecord") | |||
| @Api(description = "线下活动登记相关接口") | |||
| public class WxOfflineActivityRecordController extends BaseController { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| private WxOfflineActivityRecordService wxOfflineActivityRecordService; | |||
| @ApiOperation("分页列表接口") | |||
| @GetMapping("list") | |||
| @ApiImplicitParams({ | |||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||
| public ResultData list(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord, Integer pageNum, Integer pageSize) { | |||
| if (null == wxOfflineActivityRecord) wxOfflineActivityRecord = new WxOfflineActivityRecord(); | |||
| TenantEntity tenantInfo = getTenantInfo(); | |||
| wxOfflineActivityRecord.updateTenantInfo(tenantInfo); | |||
| wxOfflineActivityRecord.setSortColumns(SortField.CreateDate_DESC); | |||
| final PageInfo<WxOfflineActivityRecord> page = wxOfflineActivityRecordService.listAsPage(wxOfflineActivityRecord, pageNum, pageSize); | |||
| return new ResultData(page); | |||
| } | |||
| @ApiOperation("审核通过") | |||
| @PostMapping("audiPass") | |||
| public ResultData audiPass(@RequestBody WxOfflineActivityRecord wxOfflineActivityRecord) { | |||
| TenantEntity tenantEntity = getTenantInfo(); | |||
| wxOfflineActivityRecord.updateTenantInfo(tenantEntity); | |||
| wxOfflineActivityRecord.setAuditStatus(EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode()); | |||
| wxOfflineActivityRecordService.auditRecord(wxOfflineActivityRecord,getUserId()); | |||
| return new ResultData(); | |||
| } | |||
| @ApiOperation("审核驳回") | |||
| @PostMapping("audtFail") | |||
| public ResultData audtFail(@RequestBody WxOfflineActivityRecord wxOfflineActivityRecord) { | |||
| if(StringUtil.isBlank(wxOfflineActivityRecord.getAuditRemark())){ | |||
| return new ResultData(Result.ERROR,"驳回意见不能为空"); | |||
| } | |||
| TenantEntity tenantEntity = getTenantInfo(); | |||
| wxOfflineActivityRecord.updateTenantInfo(tenantEntity); | |||
| wxOfflineActivityRecord.setAuditStatus(EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode()); | |||
| wxOfflineActivityRecordService.auditRecord(wxOfflineActivityRecord,getUserId()); | |||
| return new ResultData(); | |||
| } | |||
| @ApiOperation("查询详情") | |||
| @GetMapping("getInfoById") | |||
| @ApiImplicitParams({ | |||
| @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) | |||
| public ResultData getInfoById(Long id) { | |||
| TenantEntity tenantInfo = getTenantInfo(); | |||
| WxOfflineActivityRecord record = wxOfflineActivityRecordService.getInfoById(id, tenantInfo.getTenantId()); | |||
| return new ResultData(record); | |||
| } | |||
| } | |||
| @@ -0,0 +1,90 @@ | |||
| package com.iformall.controller; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.Result; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.WxOfflineActivityRecord; | |||
| import com.iformall.domain.po.base.BaseEntity.SortField; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.service.*; | |||
| 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 java.util.Map; | |||
| /** | |||
| * @author alascor | |||
| * | |||
| */ | |||
| @RestController | |||
| @RequestMapping("/api/offlineRecord") | |||
| @Api(description = "线下活动登记相关接口") | |||
| public class WxOfflineActivityRecordController extends BaseController { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| private WxOfflineActivityRecordService wxOfflineActivityRecordService; | |||
| @ApiOperation("分页列表接口") | |||
| @GetMapping("list") | |||
| @ApiImplicitParams({ | |||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||
| public ResultData list(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord, Integer pageNum, Integer pageSize) { | |||
| if (null == wxOfflineActivityRecord) wxOfflineActivityRecord = new WxOfflineActivityRecord(); | |||
| TenantEntity tenantInfo = getTenantInfo(); | |||
| wxOfflineActivityRecord.updateTenantInfo(tenantInfo); | |||
| wxOfflineActivityRecord.setSortColumns(SortField.CreateDate_DESC); | |||
| wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); | |||
| final PageInfo<WxOfflineActivityRecord> page = wxOfflineActivityRecordService.listAsPage(wxOfflineActivityRecord, pageNum, pageSize); | |||
| return new ResultData(page); | |||
| } | |||
| @ApiOperation("新增修改接口") | |||
| @PostMapping("saveOrUpdate") | |||
| public ResultData saveOrUpdate(@RequestBody WxOfflineActivityRecord wxOfflineActivityRecord) { | |||
| if(StringUtil.isBlank(wxOfflineActivityRecord.getCusPhone())){ | |||
| return new ResultData(Result.ERROR,"客户手机号不能为空"); | |||
| } | |||
| if (null == wxOfflineActivityRecord.getOrderMoney() ) { | |||
| return new ResultData(Result.ERROR,"订单金额不能为空"); | |||
| } | |||
| TenantEntity tenantEntity = getTenantInfo(); | |||
| wxOfflineActivityRecord.updateTenantInfo(tenantEntity); | |||
| wxOfflineActivityRecord.setCreateBy(getMerchantBUserId()); | |||
| wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); | |||
| wxOfflineActivityRecordService.saveOrUpdate(wxOfflineActivityRecord); | |||
| return new ResultData(); | |||
| } | |||
| @ApiOperation("查询当前信息详情") | |||
| @GetMapping("getInfoById") | |||
| @ApiImplicitParams({ | |||
| @ApiImplicitParam(name = "id", value = "主键id", dataType = "Long", paramType = "query", required = true)}) | |||
| public ResultData getInfoById(Long id) { | |||
| TenantEntity tenantInfo = getTenantInfo(); | |||
| WxOfflineActivityRecord activity = wxOfflineActivityRecordService.getById(id, tenantInfo.getTenantId()); | |||
| return new ResultData(activity); | |||
| } | |||
| @ApiOperation("查询当前信息统计") | |||
| @GetMapping("statistics") | |||
| public ResultData statisticsCount(@ModelAttribute WxOfflineActivityRecord wxOfflineActivityRecord) { | |||
| TenantEntity tenantInfo = getTenantInfo(); | |||
| wxOfflineActivityRecord.updateTenantInfo(tenantInfo); | |||
| wxOfflineActivityRecord.setMerchantId(getLoginBUser().getMerchantId()); | |||
| Map<String,Integer> statisticsMap = wxOfflineActivityRecordService.getStatistics(wxOfflineActivityRecord); | |||
| return new ResultData(statisticsMap); | |||
| } | |||
| } | |||
| @@ -0,0 +1,113 @@ | |||
| package com.iformall.domain.po; | |||
| import com.baomidou.mybatisplus.annotation.IdType; | |||
| import com.baomidou.mybatisplus.annotation.TableField; | |||
| import com.baomidou.mybatisplus.annotation.TableId; | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| import java.io.Serializable; | |||
| import java.util.Date; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| import lombok.ToString; | |||
| /** | |||
| * 线下活动发放奖励 | |||
| * @TableName wx_offline_activity_grant_award | |||
| */ | |||
| @TableName(value ="wx_offline_activity_grant_award") | |||
| @Data | |||
| @ToString(callSuper = true) | |||
| @EqualsAndHashCode(callSuper = true) | |||
| public class WxOfflineActivityGrantAward extends TenantEntity{ | |||
| /** | |||
| * 主键ID | |||
| */ | |||
| @TableId(value = "id") | |||
| private Long id; | |||
| /** | |||
| * 活动ID | |||
| */ | |||
| @TableField(value = "activity_id") | |||
| private Long activityId; | |||
| /** | |||
| * 订单总金额 | |||
| */ | |||
| @TableField(value = "order_money_sum") | |||
| private Integer orderMoneySum; | |||
| /** | |||
| * 订单数量 | |||
| */ | |||
| @TableField(value = "order_count") | |||
| private Integer orderCount; | |||
| /** | |||
| * 客户姓名 | |||
| */ | |||
| @TableField(value = "cus_name") | |||
| private String cusName; | |||
| /** | |||
| * 客户电话 | |||
| */ | |||
| @TableField(value = "cus_phone") | |||
| private String cusPhone; | |||
| /** | |||
| * 实际领奖人 | |||
| */ | |||
| @TableField(value = "real_name") | |||
| private String realName; | |||
| /** | |||
| * 实际领奖人身份证号 | |||
| */ | |||
| @TableField(value = "real_card") | |||
| private String realCard; | |||
| /** | |||
| * 签名图片 | |||
| */ | |||
| @TableField(value = "sign_img") | |||
| private String signImg; | |||
| /** | |||
| * | |||
| */ | |||
| @TableField(value = "create_by") | |||
| private Long createBy; | |||
| /** | |||
| * 创建时间 | |||
| */ | |||
| @TableField(value = "create_date") | |||
| private Date createDate; | |||
| /** | |||
| * 更新时间 | |||
| */ | |||
| @TableField(value = "update_date") | |||
| private Date updateDate; | |||
| /** | |||
| * 抽奖券编码 | |||
| */ | |||
| @TableField(value = "lottery_num") | |||
| private Object lotteryNum; | |||
| /** | |||
| * 抽奖券数量 | |||
| */ | |||
| @TableField(value = "lottery_count") | |||
| private Integer lotteryCount; | |||
| /** | |||
| * 周年庆抽奖编码 | |||
| */ | |||
| @TableField(value = "anniversary_lottery_num") | |||
| private Object anniversaryLotteryNum; | |||
| } | |||
| @@ -0,0 +1,157 @@ | |||
| package com.iformall.domain.po; | |||
| import com.baomidou.mybatisplus.annotation.IdType; | |||
| 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 com.iformall.domain.po.base.TenantEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| import lombok.ToString; | |||
| /** | |||
| * 线下活动发放奖励 | |||
| * @TableName wx_offline_activity_grant_item | |||
| */ | |||
| @TableName(value ="wx_offline_activity_grant_item") | |||
| @Data | |||
| @ToString(callSuper = true) | |||
| @EqualsAndHashCode(callSuper = true) | |||
| public class WxOfflineActivityGrantItem extends TenantEntity { | |||
| /** | |||
| * | |||
| */ | |||
| @TableId(value = "id") | |||
| private Long id; | |||
| /** | |||
| * 发放id | |||
| */ | |||
| @TableField(value = "grant_id") | |||
| private Long grantId; | |||
| /** | |||
| * 活动id | |||
| */ | |||
| @TableField(value = "activity_id") | |||
| private Long activityId; | |||
| /** | |||
| * 活动名称 | |||
| */ | |||
| @TableField(value = "activity_name") | |||
| private String activityName; | |||
| /** | |||
| * 活动项id | |||
| */ | |||
| @TableField(value = "activity_item_id") | |||
| private Long activityItemId; | |||
| /** | |||
| * 活动项名称 | |||
| */ | |||
| @TableField(value = "activity_item_name") | |||
| private Integer activityItemName; | |||
| /** | |||
| * 活动项类型 | |||
| */ | |||
| @TableField(value = "activity_item_type") | |||
| private Integer activityItemType; | |||
| /** | |||
| * 奖项id | |||
| */ | |||
| @TableField(value = "award_itam_id") | |||
| private Long awardItamId; | |||
| /** | |||
| * 奖项名称 | |||
| */ | |||
| @TableField(value = "award_name") | |||
| private String awardName; | |||
| /** | |||
| * 奖项等级 | |||
| */ | |||
| @TableField(value = "award_grade") | |||
| private Integer awardGrade; | |||
| /** | |||
| * 奖项限制最小金额 | |||
| */ | |||
| @TableField(value = "award_min_amount") | |||
| private Integer awardMinAmount; | |||
| /** | |||
| * 奖项限制最大金额 | |||
| */ | |||
| @TableField(value = "award_max_amount") | |||
| private Integer awardMaxAmount; | |||
| /** | |||
| * 返现比例 | |||
| */ | |||
| @TableField(value = "cash_back_ratio") | |||
| private BigDecimal cashBackRatio; | |||
| /** | |||
| * 奖项价值 | |||
| */ | |||
| @TableField(value = "award_price") | |||
| private Integer awardPrice; | |||
| /** | |||
| * 奖项数量 | |||
| */ | |||
| @TableField(value = "award_count") | |||
| private Integer awardCount; | |||
| /** | |||
| * 分担规则(0-商管 1-商户 2-分担) | |||
| */ | |||
| @TableField(value = "money_rule") | |||
| private Integer moneyRule; | |||
| /** | |||
| * 商管分担比例 | |||
| */ | |||
| @TableField(value = "mall_share_rate") | |||
| private BigDecimal mallShareRate; | |||
| /** | |||
| * | |||
| */ | |||
| @TableField(value = "mall_share_price") | |||
| private Integer mallSharePrice; | |||
| /** | |||
| * 商户分担比例 | |||
| */ | |||
| @TableField(value = "merchant_share_rate") | |||
| private BigDecimal merchantShareRate; | |||
| /** | |||
| * | |||
| */ | |||
| @TableField(value = "merchant_share_price") | |||
| private Integer merchantSharePrice; | |||
| /** | |||
| * 创建时间 | |||
| */ | |||
| @TableField(value = "create_date") | |||
| private Date createDate; | |||
| /** | |||
| * 更新时间 | |||
| */ | |||
| @TableField(value = "update_date") | |||
| private Date updateDate; | |||
| } | |||
| @@ -0,0 +1,133 @@ | |||
| package com.iformall.domain.po; | |||
| import com.baomidou.mybatisplus.annotation.IdType; | |||
| 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 com.iformall.domain.po.base.TenantEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| import lombok.ToString; | |||
| /** | |||
| * 线下活动发放奖励结算 | |||
| * @TableName wx_offline_activity_grant_settlement | |||
| */ | |||
| @TableName(value ="wx_offline_activity_grant_settlement") | |||
| @Data | |||
| @ToString(callSuper = true) | |||
| @EqualsAndHashCode(callSuper = true) | |||
| public class WxOfflineActivityGrantSettlement extends TenantEntity { | |||
| /** | |||
| * | |||
| */ | |||
| @TableId(value = "id") | |||
| private Long id; | |||
| /** | |||
| * 参与记录id | |||
| */ | |||
| @TableField(value = "record_id") | |||
| private Long recordId; | |||
| /** | |||
| * 订单编号 | |||
| */ | |||
| @TableField(value = "order_no") | |||
| private String orderNo; | |||
| /** | |||
| * 订单金额 | |||
| */ | |||
| @TableField(value = "order_money") | |||
| private Integer orderMoney; | |||
| /** | |||
| * 商户id | |||
| */ | |||
| @TableField(value = "merchant_id") | |||
| private Long merchantId; | |||
| /** | |||
| * 活动id | |||
| */ | |||
| @TableField(value = "activity_id") | |||
| private Long activityId; | |||
| /** | |||
| * 活动项id | |||
| */ | |||
| @TableField(value = "activity_item_id") | |||
| private Long activityItemId; | |||
| /** | |||
| * 奖项id | |||
| */ | |||
| @TableField(value = "award_itam_id") | |||
| private Long awardItamId; | |||
| /** | |||
| * 发放id | |||
| */ | |||
| @TableField(value = "grant_id") | |||
| private Long grantId; | |||
| /** | |||
| * 发放总价值 | |||
| */ | |||
| @TableField(value = "grant_price") | |||
| private Integer grantPrice; | |||
| /** | |||
| * 商管承担总金额 | |||
| */ | |||
| @TableField(value = "mall_share_price") | |||
| private Integer mallSharePrice; | |||
| /** | |||
| * 商户承担总金额 | |||
| */ | |||
| @TableField(value = "merchant_share_price") | |||
| private Integer merchantSharePrice; | |||
| /** | |||
| * 订单占比 | |||
| */ | |||
| @TableField(value = "order_ratio") | |||
| private BigDecimal orderRatio; | |||
| /** | |||
| * 实际发放总价值 | |||
| */ | |||
| @TableField(value = "real_grant_price") | |||
| private Integer realGrantPrice; | |||
| /** | |||
| * 实际商管承担总金额 | |||
| */ | |||
| @TableField(value = "real_mall_share_price") | |||
| private BigDecimal realMallSharePrice; | |||
| /** | |||
| * 实际商户承担总金额 | |||
| */ | |||
| @TableField(value = "real_merchant_share_price") | |||
| private BigDecimal realMerchantSharePrice; | |||
| /** | |||
| * 创建时间 | |||
| */ | |||
| @TableField(value = "create_date") | |||
| private Date createDate; | |||
| /** | |||
| * 更新时间 | |||
| */ | |||
| @TableField(value = "update_date") | |||
| private Date updateDate; | |||
| } | |||
| @@ -0,0 +1,164 @@ | |||
| package com.iformall.domain.po; | |||
| import com.baomidou.mybatisplus.annotation.IdType; | |||
| import com.baomidou.mybatisplus.annotation.TableField; | |||
| import com.baomidou.mybatisplus.annotation.TableId; | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| import java.io.Serializable; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| import lombok.ToString; | |||
| /** | |||
| * 线下活动参与登记 | |||
| * @TableName wx_offline_activity_record | |||
| */ | |||
| @TableName(value ="wx_offline_activity_record") | |||
| @Data | |||
| @ToString(callSuper = true) | |||
| @EqualsAndHashCode(callSuper = true) | |||
| public class WxOfflineActivityRecord extends TenantEntity { | |||
| /** | |||
| * 主键ID | |||
| */ | |||
| @TableId(value = "id") | |||
| private Long id; | |||
| /** | |||
| * 订单号 | |||
| */ | |||
| @TableField(value = "order_no") | |||
| private String orderNo; | |||
| /** | |||
| * 订单金额 | |||
| */ | |||
| @TableField(value = "order_money") | |||
| private Integer orderMoney; | |||
| /** | |||
| * 客户姓名 | |||
| */ | |||
| @TableField(value = "cus_name") | |||
| private String cusName; | |||
| /** | |||
| * | |||
| */ | |||
| @TableField(value = "real_cus_name") | |||
| private String realCusName; | |||
| /** | |||
| * 客户电话 | |||
| */ | |||
| @TableField(value = "cus_phone") | |||
| private String cusPhone; | |||
| /** | |||
| * 客户地址 | |||
| */ | |||
| @TableField(value = "cus_address") | |||
| private String cusAddress; | |||
| /** | |||
| * 身份证号 | |||
| */ | |||
| @TableField(value = "cus_card") | |||
| private String cusCard; | |||
| /** | |||
| * 抽奖券编码 | |||
| */ | |||
| @TableField(value = "lottery_num") | |||
| private String lotteryNum; | |||
| /** | |||
| * 抽奖券数量 | |||
| */ | |||
| @TableField(value = "lottery_count") | |||
| private Integer lotteryCount; | |||
| /** | |||
| * 周年庆抽奖编码 | |||
| */ | |||
| @TableField(value = "anniversary_lottery_num") | |||
| private String anniversaryLotteryNum; | |||
| /** | |||
| * | |||
| */ | |||
| @TableField(value = "create_by") | |||
| private Long createBy; | |||
| /** | |||
| * 商户编号 | |||
| */ | |||
| @TableField(value = "merchant_id") | |||
| private Long merchantId; | |||
| @TableField(exist = false) | |||
| private String merchantName; | |||
| @TableField(exist = false) | |||
| private List<Long> merchantIdList; | |||
| @TableField(value = "business_id") | |||
| private Integer businessId; | |||
| /** | |||
| * 创建时间 | |||
| */ | |||
| @TableField(value = "create_date") | |||
| private Date createDate; | |||
| @TableField(exist = false) | |||
| private Date createDateBegin; | |||
| @TableField(exist = false) | |||
| private Date createDateEnd; | |||
| /** | |||
| * 更新时间 | |||
| */ | |||
| @TableField(value = "update_date") | |||
| private Date updateDate; | |||
| /** | |||
| * 审批意见 | |||
| */ | |||
| @TableField(value = "audit_remark") | |||
| private String auditRemark; | |||
| /** | |||
| * 审批状态 | |||
| */ | |||
| @TableField(value = "audit_status") | |||
| private Integer auditStatus; | |||
| /** | |||
| * 审核人 | |||
| */ | |||
| @TableField(value = "audit_by") | |||
| private Long auditBy; | |||
| @TableField(exist = false) | |||
| private String auditByName; | |||
| /** | |||
| * 审核时间 | |||
| */ | |||
| @TableField(value = "audit_time") | |||
| private Date auditTime; | |||
| @TableField(exist = false) | |||
| private Date auditTimeBegin; | |||
| @TableField(exist = false) | |||
| private Date auditTimeEnd; | |||
| @TableField(exist = false) | |||
| private Long activityId; | |||
| } | |||
| @@ -0,0 +1,41 @@ | |||
| package com.iformall.domain.po; | |||
| import com.baomidou.mybatisplus.annotation.IdType; | |||
| import com.baomidou.mybatisplus.annotation.TableField; | |||
| import com.baomidou.mybatisplus.annotation.TableId; | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| import java.io.Serializable; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| import lombok.ToString; | |||
| /** | |||
| * 线下活动参与登记与发放关联表 | |||
| * @TableName wx_offline_activity_record_grant | |||
| */ | |||
| @TableName(value ="wx_offline_activity_record_grant") | |||
| @Data | |||
| @ToString(callSuper = true) | |||
| @EqualsAndHashCode(callSuper = true) | |||
| public class WxOfflineActivityRecordGrant extends TenantEntity { | |||
| /** | |||
| * 活动id | |||
| */ | |||
| @TableField(value = "activity_id") | |||
| private Long activityId; | |||
| /** | |||
| * 参与记录id | |||
| */ | |||
| @TableField(value = "record_id") | |||
| private Long recordId; | |||
| /** | |||
| * 发放id | |||
| */ | |||
| @TableField(value = "grant_id") | |||
| private Long grantId; | |||
| } | |||
| @@ -0,0 +1,15 @@ | |||
| package com.iformall.domain.vo; | |||
| import lombok.Data; | |||
| import java.io.Serializable; | |||
| @Data | |||
| public class OfflineActivityRecordStatistics implements Serializable { | |||
| private static final long serialVersionUID = 1L; | |||
| private Integer auditStatus; | |||
| private Integer count; | |||
| private Integer sumMoney; | |||
| } | |||
| @@ -0,0 +1,38 @@ | |||
| package com.iformall.enums; | |||
| /** | |||
| * @author gongbiao | |||
| */ | |||
| public enum EnumOfflineActivityRecordStatus { | |||
| AUDTING(0, "审核中"), | |||
| AUDI_SUCCESS(1, "审批通过"), | |||
| AUDT_FAIL(2, "审批拒绝"), | |||
| IS_GRANT(10, "已发奖"),; | |||
| public static EnumOfflineActivityRecordStatus getEnum(Integer code) { | |||
| for (EnumOfflineActivityRecordStatus value : values()) { | |||
| if (value.getCode().equals(code)) { | |||
| return value; | |||
| } | |||
| } | |||
| return null; | |||
| } | |||
| private Integer code; | |||
| private String message; | |||
| EnumOfflineActivityRecordStatus(Integer code, String message) { | |||
| this.code = code; | |||
| this.message = message; | |||
| } | |||
| public Integer getCode() { | |||
| return code; | |||
| } | |||
| public String getMessage() { | |||
| return message; | |||
| } | |||
| } | |||
| @@ -0,0 +1,19 @@ | |||
| package com.iformall.mapper; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxOfflineActivityGrantAward; | |||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_grant_award(线下活动发放奖励)】的数据库操作Mapper | |||
| * @createDate 2024-08-09 00:13:44 | |||
| * @Entity com.iformall.domain.po.WxOfflineActivityGrantAward | |||
| */ | |||
| public interface WxOfflineActivityGrantAwardMapper extends CommonMapper<WxOfflineActivityGrantAward, Long> { | |||
| } | |||
| @@ -0,0 +1,19 @@ | |||
| package com.iformall.mapper; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxOfflineActivityGrantItem; | |||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_grant_item(线下活动发放奖励)】的数据库操作Mapper | |||
| * @createDate 2024-08-09 00:13:44 | |||
| * @Entity com.iformall.domain.po.WxOfflineActivityGrantItem | |||
| */ | |||
| public interface WxOfflineActivityGrantItemMapper extends CommonMapper<WxOfflineActivityGrantItem, Long> { | |||
| } | |||
| @@ -0,0 +1,19 @@ | |||
| package com.iformall.mapper; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxOfflineActivityGrantSettlement; | |||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_grant_settlement(线下活动发放奖励结算)】的数据库操作Mapper | |||
| * @createDate 2024-08-09 00:13:44 | |||
| * @Entity com.iformall.domain.po.WxOfflineActivityGrantSettlement | |||
| */ | |||
| public interface WxOfflineActivityGrantSettlementMapper extends CommonMapper<WxOfflineActivityGrantSettlement, Long> { | |||
| } | |||
| @@ -0,0 +1,22 @@ | |||
| package com.iformall.mapper; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxOfflineActivityRecordGrant; | |||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||
| import org.apache.ibatis.annotations.Param; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_record_grant(线下活动参与登记与发放关联表)】的数据库操作Mapper | |||
| * @createDate 2024-08-09 00:13:44 | |||
| * @Entity com.iformall.domain.po.WxOfflineActivityRecordGrant | |||
| */ | |||
| public interface WxOfflineActivityRecordGrantMapper extends CommonMapper<WxOfflineActivityRecordGrant, Long> { | |||
| Integer selectGrantCount(@Param("tenantId")String tenantId, @Param("activityId")Long activityId, @Param("recordId")Long recordId); | |||
| } | |||
| @@ -0,0 +1,30 @@ | |||
| package com.iformall.mapper; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxOfflineActivityRecord; | |||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||
| import com.iformall.domain.vo.OfflineActivityRecordStatistics; | |||
| import org.apache.ibatis.annotations.Param; | |||
| import java.util.List; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_record(线下活动参与登记)】的数据库操作Mapper | |||
| * @createDate 2024-08-09 00:13:44 | |||
| * @Entity com.iformall.domain.po.WxOfflineActivityRecord | |||
| */ | |||
| public interface WxOfflineActivityRecordMapper extends CommonMapper<WxOfflineActivityRecord, Long> { | |||
| List<WxOfflineActivityRecord> findList(WxOfflineActivityRecord record); | |||
| WxOfflineActivityRecord selectById(@Param("id")Long id, @Param("tenantId")String tenantId); | |||
| List<OfflineActivityRecordStatistics> auditStatusStatistics(WxOfflineActivityRecord wxOfflineActivityRecord); | |||
| void updateAuditStatus(WxOfflineActivityRecord record); | |||
| } | |||
| @@ -0,0 +1,20 @@ | |||
| package com.iformall.service; | |||
| import com.iformall.domain.po.WxOfflineActivityGrantAward; | |||
| import com.baomidou.mybatisplus.extension.service.IService; | |||
| import com.iformall.domain.po.WxOfflineActivityRecord; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_grant_award(线下活动发放奖励)】的数据库操作Service | |||
| * @createDate 2024-08-09 00:13:44 | |||
| */ | |||
| public interface WxOfflineActivityGrantAwardService { | |||
| Map<String, Object> getRecordStatistics(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord); | |||
| List<WxOfflineActivityRecord> getRecordList(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord); | |||
| } | |||
| @@ -0,0 +1,13 @@ | |||
| package com.iformall.service; | |||
| import com.iformall.domain.po.WxOfflineActivityGrantItem; | |||
| import com.baomidou.mybatisplus.extension.service.IService; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_grant_item(线下活动发放奖励)】的数据库操作Service | |||
| * @createDate 2024-08-09 00:13:44 | |||
| */ | |||
| public interface WxOfflineActivityGrantItemService { | |||
| } | |||
| @@ -0,0 +1,13 @@ | |||
| package com.iformall.service; | |||
| import com.iformall.domain.po.WxOfflineActivityGrantSettlement; | |||
| import com.baomidou.mybatisplus.extension.service.IService; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_grant_settlement(线下活动发放奖励结算)】的数据库操作Service | |||
| * @createDate 2024-08-09 00:13:44 | |||
| */ | |||
| public interface WxOfflineActivityGrantSettlementService { | |||
| } | |||
| @@ -0,0 +1,13 @@ | |||
| package com.iformall.service; | |||
| import com.iformall.domain.po.WxOfflineActivityRecordGrant; | |||
| import com.baomidou.mybatisplus.extension.service.IService; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_record_grant(线下活动参与登记与发放关联表)】的数据库操作Service | |||
| * @createDate 2024-08-09 00:13:44 | |||
| */ | |||
| public interface WxOfflineActivityRecordGrantService{ | |||
| } | |||
| @@ -0,0 +1,28 @@ | |||
| package com.iformall.service; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.domain.po.WxOfflineActivityRecord; | |||
| import com.baomidou.mybatisplus.extension.service.IService; | |||
| import com.iformall.domain.po.WxRaffleActivityRecord; | |||
| import java.util.Map; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_record(线下活动参与登记)】的数据库操作Service | |||
| * @createDate 2024-08-09 00:13:44 | |||
| */ | |||
| public interface WxOfflineActivityRecordService { | |||
| PageInfo<WxOfflineActivityRecord> listAsPage(WxOfflineActivityRecord record, Integer pageNum, Integer pageSize); | |||
| void saveOrUpdate(WxOfflineActivityRecord wxOfflineActivityRecord); | |||
| WxOfflineActivityRecord getById(Long id, String tenantId); | |||
| WxOfflineActivityRecord getInfoById(Long id, String tenantId); | |||
| Map<String, Integer> getStatistics(WxOfflineActivityRecord wxOfflineActivityRecord); | |||
| void auditRecord(WxOfflineActivityRecord wxOfflineActivityRecord, Long userId); | |||
| } | |||
| @@ -0,0 +1,119 @@ | |||
| package com.iformall.service.impl; | |||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||
| import com.iformall.domain.po.*; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.domain.vo.OfflineActivityRecordStatistics; | |||
| import com.iformall.enums.EnumOfflineActivityRecordStatus; | |||
| import com.iformall.mapper.WxOfflineActivityMapper; | |||
| import com.iformall.mapper.WxOfflineActivityRecordGrantMapper; | |||
| import com.iformall.mapper.WxOfflineActivityRecordMapper; | |||
| import com.iformall.service.MallUserInfoService; | |||
| import com.iformall.service.WxMerchantService; | |||
| import com.iformall.service.WxOfflineActivityGrantAwardService; | |||
| import com.iformall.mapper.WxOfflineActivityGrantAwardMapper; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import java.util.Collections; | |||
| import java.util.HashMap; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_grant_award(线下活动发放奖励)】的数据库操作Service实现 | |||
| * @createDate 2024-08-09 00:13:44 | |||
| */ | |||
| @Service | |||
| public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivityGrantAwardService{ | |||
| @Autowired | |||
| private WxOfflineActivityGrantAwardMapper wxOfflineActivityGrantAwardMapper; | |||
| @Autowired | |||
| WxOfflineActivityMapper wxOfflineActivityMapper; | |||
| @Autowired | |||
| WxOfflineActivityRecordMapper wxOfflineActivityRecordMapper; | |||
| @Autowired | |||
| WxOfflineActivityRecordGrantMapper wxOfflineActivityRecordGrantMapper; | |||
| @Autowired | |||
| WxMerchantService wxMerchantService; | |||
| @Autowired | |||
| MallUserInfoService mallUserInfoService; | |||
| @Override | |||
| public Map<String, Object> getRecordStatistics(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord) { | |||
| WxOfflineActivity activity = wxOfflineActivityMapper.selectById(activityId, wxOfflineActivityRecord.getTenantId()); | |||
| if (activity == null) { | |||
| return Collections.emptyMap(); | |||
| } | |||
| wxOfflineActivityRecord.setCreateDateBegin(activity.getStartTime()); | |||
| wxOfflineActivityRecord.setCreateDateEnd(activity.getEndTime()); | |||
| List<OfflineActivityRecordStatistics> recordStatistics = wxOfflineActivityRecordMapper.auditStatusStatistics(wxOfflineActivityRecord); | |||
| Map<String, Object> result = new HashMap<>(); | |||
| Integer audting = 0, audi_success = 0, audt_fail = 0,sum_success = 0, sum_fail = 0; | |||
| for(OfflineActivityRecordStatistics statistics : recordStatistics){ | |||
| if(EnumOfflineActivityRecordStatus.AUDTING.getCode().equals(statistics.getAuditStatus())){ | |||
| audting = statistics.getCount(); | |||
| } else if (EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(statistics.getAuditStatus())) { | |||
| audi_success = statistics.getCount(); | |||
| sum_success = statistics.getSumMoney(); | |||
| } else if (EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(statistics.getAuditStatus())) { | |||
| audt_fail = statistics.getCount(); | |||
| } | |||
| } | |||
| result.put("audting",audting); | |||
| result.put("audi_success",audi_success); | |||
| result.put("sum_success",sum_success); | |||
| result.put("audt_fail",audt_fail); | |||
| result.put("sum_count",audting+audi_success+audt_fail); | |||
| return result; | |||
| } | |||
| @Override | |||
| public List<WxOfflineActivityRecord> getRecordList(Long activityId, WxOfflineActivityRecord wxOfflineActivityRecord) { | |||
| WxOfflineActivity activity = wxOfflineActivityMapper.selectById(activityId, wxOfflineActivityRecord.getTenantId()); | |||
| if (activity == null) { | |||
| return Collections.emptyList(); | |||
| } | |||
| wxOfflineActivityRecord.setCreateDateBegin(activity.getStartTime()); | |||
| wxOfflineActivityRecord.setCreateDateEnd(activity.getEndTime()); | |||
| List<WxOfflineActivityRecord> recordList = wxOfflineActivityRecordMapper.findList(wxOfflineActivityRecord); | |||
| handleRecordList(wxOfflineActivityRecord,activity,recordList); | |||
| return recordList; | |||
| } | |||
| private void handleRecordList(TenantEntity tenantEntity, WxOfflineActivity activity, List<WxOfflineActivityRecord> recordList) { | |||
| if (recordList == null || recordList.isEmpty()) { | |||
| return; | |||
| } | |||
| WxMerchant merchantQ = new WxMerchant(); | |||
| merchantQ.updateTenantInfo(tenantEntity); | |||
| Map<Long, String> idAndNamesMap = wxMerchantService.getIdAndNamesMap(merchantQ); | |||
| MallUserInfo userInfoQ = new MallUserInfo(); | |||
| userInfoQ.updateTenantInfo(tenantEntity); | |||
| Map<Long, MallUserInfo> userMap = mallUserInfoService.getUserMap(userInfoQ); | |||
| for (WxOfflineActivityRecord record : recordList) { | |||
| record.setMerchantName(idAndNamesMap.get(record.getMerchantId())); | |||
| if(record.getAuditBy() != null){ | |||
| record.setAuditByName(userMap.get(record.getAuditBy()).getName()); | |||
| } | |||
| //判断订单是否发奖 | |||
| Integer grantCount = wxOfflineActivityRecordGrantMapper.selectGrantCount(tenantEntity.getTenantId(),activity.getId(),record.getId()); | |||
| if(grantCount >= 1){ | |||
| record.setAuditStatus(EnumOfflineActivityRecordStatus.IS_GRANT.getCode()); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,21 @@ | |||
| package com.iformall.service.impl; | |||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||
| import com.iformall.domain.po.WxOfflineActivityGrantItem; | |||
| import com.iformall.service.WxOfflineActivityGrantItemService; | |||
| import com.iformall.mapper.WxOfflineActivityGrantItemMapper; | |||
| import org.springframework.stereotype.Service; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_grant_item(线下活动发放奖励)】的数据库操作Service实现 | |||
| * @createDate 2024-08-09 00:13:44 | |||
| */ | |||
| @Service | |||
| public class WxOfflineActivityGrantItemServiceImpl implements WxOfflineActivityGrantItemService{ | |||
| } | |||
| @@ -0,0 +1,21 @@ | |||
| package com.iformall.service.impl; | |||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||
| import com.iformall.domain.po.WxOfflineActivityGrantSettlement; | |||
| import com.iformall.service.WxOfflineActivityGrantSettlementService; | |||
| import com.iformall.mapper.WxOfflineActivityGrantSettlementMapper; | |||
| import org.springframework.stereotype.Service; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_grant_settlement(线下活动发放奖励结算)】的数据库操作Service实现 | |||
| * @createDate 2024-08-09 00:13:44 | |||
| */ | |||
| @Service | |||
| public class WxOfflineActivityGrantSettlementServiceImpl implements WxOfflineActivityGrantSettlementService{ | |||
| } | |||
| @@ -0,0 +1,21 @@ | |||
| package com.iformall.service.impl; | |||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||
| import com.iformall.domain.po.WxOfflineActivityRecordGrant; | |||
| import com.iformall.service.WxOfflineActivityRecordGrantService; | |||
| import com.iformall.mapper.WxOfflineActivityRecordGrantMapper; | |||
| import org.springframework.stereotype.Service; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_record_grant(线下活动参与登记与发放关联表)】的数据库操作Service实现 | |||
| * @createDate 2024-08-09 00:13:44 | |||
| */ | |||
| @Service | |||
| public class WxOfflineActivityRecordGrantServiceImpl implements WxOfflineActivityRecordGrantService{ | |||
| } | |||
| @@ -0,0 +1,120 @@ | |||
| package com.iformall.service.impl; | |||
| import com.github.pagehelper.PageHelper; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.IdWorker; | |||
| import com.iformall.domain.po.WxMerchant; | |||
| import com.iformall.domain.po.WxOfflineActivityRecord; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.domain.vo.OfflineActivityRecordStatistics; | |||
| import com.iformall.enums.EnumOfflineActivityRecordStatus; | |||
| import com.iformall.service.WxMerchantService; | |||
| import com.iformall.service.WxOfflineActivityRecordService; | |||
| import com.iformall.mapper.WxOfflineActivityRecordMapper; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import java.util.*; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_record(线下活动参与登记)】的数据库操作Service实现 | |||
| * @createDate 2024-08-09 00:13:44 | |||
| */ | |||
| @Service | |||
| public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityRecordService{ | |||
| @Autowired | |||
| private WxOfflineActivityRecordMapper wxOfflineActivityRecordMapper; | |||
| @Autowired | |||
| WxMerchantService wxMerchantService; | |||
| @Override | |||
| public PageInfo<WxOfflineActivityRecord> listAsPage(WxOfflineActivityRecord record, Integer pageNum, Integer pageSize) { | |||
| PageInfo<WxOfflineActivityRecord> recordPageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxOfflineActivityRecordMapper.findList(record)); | |||
| handlerRecordList(record,recordPageInfo.getList()); | |||
| return recordPageInfo; | |||
| } | |||
| private void handlerRecordList(TenantEntity tenantEntity,List<WxOfflineActivityRecord> recordList) { | |||
| if (recordList != null && recordList.size() > 0) { | |||
| WxMerchant merchantQ = new WxMerchant(); | |||
| merchantQ.updateTenantInfo(tenantEntity); | |||
| Map<Long, String> idAndNamesMap = wxMerchantService.getIdAndNamesMap(merchantQ); | |||
| for (WxOfflineActivityRecord record : recordList) { | |||
| record.setMerchantName(idAndNamesMap.get(record.getMerchantId())); | |||
| } | |||
| } | |||
| } | |||
| @Override | |||
| public void saveOrUpdate(WxOfflineActivityRecord wxOfflineActivityRecord) { | |||
| if(wxOfflineActivityRecord.getMerchantId() != null){ | |||
| WxMerchant merchant = wxMerchantService.selectById(wxOfflineActivityRecord.getMerchantId()); | |||
| wxOfflineActivityRecord.setBusinessId(merchant.getBusinessId()); | |||
| } | |||
| Date now = new Date(); | |||
| if(wxOfflineActivityRecord.getId() == null){ | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| wxOfflineActivityRecord.setId(idWorker.nextId()); | |||
| wxOfflineActivityRecord.setCreateDate(now); | |||
| wxOfflineActivityRecord.setUpdateDate(now); | |||
| wxOfflineActivityRecord.setAuditStatus(EnumOfflineActivityRecordStatus.AUDTING.getCode()); | |||
| wxOfflineActivityRecordMapper.insert(wxOfflineActivityRecord); | |||
| } | |||
| else{ | |||
| wxOfflineActivityRecord.setUpdateDate(now); | |||
| wxOfflineActivityRecordMapper.updateById(wxOfflineActivityRecord); | |||
| } | |||
| } | |||
| @Override | |||
| public WxOfflineActivityRecord getById(Long id, String tenantId) { | |||
| return wxOfflineActivityRecordMapper.selectById(id,tenantId); | |||
| } | |||
| @Override | |||
| public WxOfflineActivityRecord getInfoById(Long id, String tenantId) { | |||
| WxOfflineActivityRecord record = wxOfflineActivityRecordMapper.selectById(id, tenantId); | |||
| if(record != null){ | |||
| WxMerchant merchant = wxMerchantService.selectById(record.getMerchantId()); | |||
| record.setMerchantName(merchant.getName()); | |||
| } | |||
| return record; | |||
| } | |||
| @Override | |||
| public Map<String, Integer> getStatistics(WxOfflineActivityRecord wxOfflineActivityRecord) { | |||
| List<OfflineActivityRecordStatistics> auditStatusStatistics = wxOfflineActivityRecordMapper.auditStatusStatistics(wxOfflineActivityRecord); | |||
| Map<String, Integer> result = new HashMap<>(); | |||
| Integer audting = 0, audi_success = 0, audt_fail = 0; | |||
| for(OfflineActivityRecordStatistics statistics : auditStatusStatistics){ | |||
| if(EnumOfflineActivityRecordStatus.AUDTING.getCode().equals(statistics.getAuditStatus())){ | |||
| audting = statistics.getCount(); | |||
| } else if (EnumOfflineActivityRecordStatus.AUDI_SUCCESS.getCode().equals(statistics.getAuditStatus())) { | |||
| audi_success = statistics.getCount(); | |||
| } else if (EnumOfflineActivityRecordStatus.AUDT_FAIL.getCode().equals(statistics.getAuditStatus())) { | |||
| audt_fail = statistics.getCount(); | |||
| } | |||
| } | |||
| result.put("audting",audting); | |||
| result.put("audi_success",audi_success); | |||
| result.put("audt_fail",audt_fail); | |||
| result.put("sum_count",audting+audi_success+audt_fail); | |||
| return result; | |||
| } | |||
| @Override | |||
| public void auditRecord(WxOfflineActivityRecord record, Long userId) { | |||
| Date now = new Date(); | |||
| record.setUpdateDate(now); | |||
| record.setAuditTime(now); | |||
| record.setAuditBy(userId); | |||
| wxOfflineActivityRecordMapper.updateAuditStatus(record); | |||
| } | |||
| } | |||
| @@ -0,0 +1,35 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE mapper | |||
| PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
| "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||
| <mapper namespace="com.iformall.mapper.WxOfflineActivityGrantAwardMapper"> | |||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxOfflineActivityGrantAward"> | |||
| <id property="id" column="id" jdbcType="BIGINT"/> | |||
| <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="orderCount" column="order_count" jdbcType="INTEGER"/> | |||
| <result property="cusName" column="cus_name" jdbcType="VARCHAR"/> | |||
| <result property="cusPhone" column="cus_phone" jdbcType="VARCHAR"/> | |||
| <result property="realName" column="real_name" jdbcType="VARCHAR"/> | |||
| <result property="realCard" column="real_card" jdbcType="VARCHAR"/> | |||
| <result property="signImg" column="sign_img" jdbcType="VARCHAR"/> | |||
| <result property="createBy" column="create_by" jdbcType="BIGINT"/> | |||
| <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/> | |||
| <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | |||
| <result property="lotteryNum" column="lottery_num" jdbcType="OTHER"/> | |||
| <result property="lotteryCount" column="lottery_count" jdbcType="INTEGER"/> | |||
| <result property="anniversaryLotteryNum" column="anniversary_lottery_num" jdbcType="OTHER"/> | |||
| </resultMap> | |||
| <sql id="allColumns"> | |||
| id,tenant_id,parent_tenant_id, | |||
| activity_id,order_money_sum,order_count, | |||
| cus_name,cus_phone,real_name, | |||
| real_card,sign_img,create_by, | |||
| create_date,update_date,lottery_num, | |||
| lottery_count,anniversary_lottery_num | |||
| </sql> | |||
| </mapper> | |||
| @@ -0,0 +1,44 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE mapper | |||
| PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
| "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||
| <mapper namespace="com.iformall.mapper.WxOfflineActivityGrantItemMapper"> | |||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxOfflineActivityGrantItem"> | |||
| <id property="id" column="id" jdbcType="BIGINT"/> | |||
| <result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/> | |||
| <result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/> | |||
| <result property="grantId" column="grant_id" jdbcType="BIGINT"/> | |||
| <result property="activityId" column="activity_id" jdbcType="BIGINT"/> | |||
| <result property="activityName" column="activity_name" jdbcType="VARCHAR"/> | |||
| <result property="activityItemId" column="activity_item_id" jdbcType="BIGINT"/> | |||
| <result property="activityItemName" column="activity_item_name" jdbcType="INTEGER"/> | |||
| <result property="activityItemType" column="activity_item_type" jdbcType="SMALLINT"/> | |||
| <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="cashBackRatio" column="cash_back_ratio" jdbcType="DECIMAL"/> | |||
| <result property="awardPrice" column="award_price" jdbcType="INTEGER"/> | |||
| <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"/> | |||
| <result property="mallSharePrice" column="mall_share_price" jdbcType="INTEGER"/> | |||
| <result property="merchantShareRate" column="merchant_share_rate" jdbcType="DECIMAL"/> | |||
| <result property="merchantSharePrice" column="merchant_share_price" jdbcType="INTEGER"/> | |||
| <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/> | |||
| <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | |||
| </resultMap> | |||
| <sql id="allColumns"> | |||
| id,tenant_id,parent_tenant_id, | |||
| grant_id,activity_id,activity_name, | |||
| activity_item_id,activity_item_name,activity_item_type, | |||
| award_itam_id,award_name,award_grade, | |||
| award_min_amount,award_max_amount,cash_back_ratio, | |||
| award_price,award_count,money_rule, | |||
| mall_share_rate,mall_share_price,merchant_share_rate, | |||
| merchant_share_price,create_date,update_date | |||
| </sql> | |||
| </mapper> | |||
| @@ -0,0 +1,39 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE mapper | |||
| PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
| "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||
| <mapper namespace="com.iformall.mapper.WxOfflineActivityGrantSettlementMapper"> | |||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxOfflineActivityGrantSettlement"> | |||
| <id property="id" column="id" jdbcType="BIGINT"/> | |||
| <result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/> | |||
| <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="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="mallSharePrice" column="mall_share_price" jdbcType="INTEGER"/> | |||
| <result property="merchantSharePrice" column="merchant_share_price" jdbcType="INTEGER"/> | |||
| <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="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> | |||
| <sql id="allColumns"> | |||
| id,tenant_id,parent_tenant_id, | |||
| record_id,order_no,order_money, | |||
| merchant_id,activity_id,activity_item_id, | |||
| award_itam_id,grant_id,grant_price, | |||
| mall_share_price,merchant_share_price,order_ratio, | |||
| real_grant_price,real_mall_share_price,real_merchant_share_price, | |||
| create_date,update_date | |||
| </sql> | |||
| </mapper> | |||
| @@ -0,0 +1,26 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE mapper | |||
| PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
| "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||
| <mapper namespace="com.iformall.mapper.WxOfflineActivityRecordGrantMapper"> | |||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxOfflineActivityRecordGrant"> | |||
| <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="recordId" column="record_id" jdbcType="BIGINT"/> | |||
| <result property="grantId" column="grant_id" jdbcType="BIGINT"/> | |||
| </resultMap> | |||
| <sql id="allColumns"> | |||
| tenant_id,parent_tenant_id,activity_id, | |||
| record_id,grant_id | |||
| </sql> | |||
| <select id="selectGrantCount" parameterType="java.util.HashMap" resultType="java.lang.Integer"> | |||
| select COUNT(1) from wx_offline_activity_record_grant | |||
| where activity_id = #{activityId} and record_id = #{recordId} and tenant_id=#{tenantId} | |||
| </select> | |||
| </mapper> | |||
| @@ -0,0 +1,185 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE mapper | |||
| PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||
| "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||
| <mapper namespace="com.iformall.mapper.WxOfflineActivityRecordMapper"> | |||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxOfflineActivityRecord"> | |||
| <id property="id" column="id" jdbcType="BIGINT"/> | |||
| <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="cusName" column="cus_name" jdbcType="VARCHAR"/> | |||
| <result property="realCusName" column="real_cus_name" jdbcType="VARCHAR"/> | |||
| <result property="cusPhone" column="cus_phone" jdbcType="VARCHAR"/> | |||
| <result property="cusAddress" column="cus_address" jdbcType="VARCHAR"/> | |||
| <result property="cusCard" column="cus_card" jdbcType="VARCHAR"/> | |||
| <result property="lotteryNum" column="lottery_num" jdbcType="VARCHAR"/> | |||
| <result property="lotteryCount" column="lottery_count" jdbcType="INTEGER"/> | |||
| <result property="anniversaryLotteryNum" column="anniversary_lottery_num" jdbcType="VARCHAR"/> | |||
| <result property="createBy" column="create_by" jdbcType="BIGINT"/> | |||
| <result property="merchantId" column="merchant_id" jdbcType="BIGINT"/> | |||
| <result property="businessId" column="business_id" jdbcType="INTEGER"/> | |||
| <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/> | |||
| <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | |||
| <result property="auditRemark" column="audit_remark" jdbcType="VARCHAR"/> | |||
| <result property="auditStatus" column="audit_status" jdbcType="INTEGER"/> | |||
| <result property="auditBy" column="audit_by" jdbcType="BIGINT"/> | |||
| <result property="auditTime" column="audit_time" jdbcType="TIMESTAMP"/> | |||
| </resultMap> | |||
| <sql id="allColumns"> | |||
| id,tenant_id,parent_tenant_id, | |||
| order_no,order_money,cus_name, | |||
| real_cus_name,cus_phone,cus_address, | |||
| cus_card,lottery_num,lottery_count, | |||
| anniversary_lottery_num,create_by,merchant_id,business_id, | |||
| create_date,update_date,audit_remark, | |||
| audit_status,audit_by,audit_time | |||
| </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 != merchantId "> | |||
| and `merchant_id` = #{merchantId} | |||
| </if> | |||
| <if test=" null != businessId "> | |||
| and `business_id` = #{businessId} | |||
| </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 != orderNo and orderNo != '' "> | |||
| and `order_no` like concat('%', #{orderNo},'%') | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and `create_date` >= #{createDateBegin} | |||
| </if> | |||
| <if test=" null != createDateEnd"> | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| <if test=" null != auditTimeBegin"> | |||
| and `audit_time` >= #{auditTimeBegin} | |||
| </if> | |||
| <if test=" null != auditTimeEnd"> | |||
| and `audit_time` <= #{auditTimeEnd} | |||
| </if> | |||
| <if test=" null != auditStatus "> | |||
| and `audit_status` = #{auditStatus} | |||
| </if> | |||
| <if test=" null != merchantIdList "> | |||
| and merchant_id in | |||
| <foreach collection="merchantIdList" index="index" item="midItem" open="(" separator="," close=")"> | |||
| #{midItem} | |||
| </foreach> | |||
| </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.WxOfflineActivityRecord" resultMap="BaseResultMap"> | |||
| select <include refid="allColumns" /> from wx_offline_activity_record | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| <select id="selectById" parameterType="java.util.HashMap" resultMap="BaseResultMap"> | |||
| select <include refid="allColumns" /> from wx_offline_activity_record where id = #{id} and tenant_id=#{tenantId} | |||
| </select> | |||
| <select id="auditStatusStatistics" parameterType="com.iformall.domain.po.WxOfflineActivityRecord" resultType="com.iformall.domain.vo.OfflineActivityRecordStatistics"> | |||
| SELECT audit_status as 'auditStatus', | |||
| count(1) as 'count',sum(order_money) as 'sumMoney' | |||
| FROM wx_offline_activity_record | |||
| where 1 = 1 | |||
| <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 != merchantId "> | |||
| and `merchant_id` = #{merchantId} | |||
| </if> | |||
| <if test=" null != businessId "> | |||
| and `business_id` = #{businessId} | |||
| </if> | |||
| <if test=" null != cusPhone and cusPhone != '' "> | |||
| and `cus_phone` = #{cusPhone} | |||
| </if> | |||
| <if test=" null != createDateBegin"> | |||
| and `create_date` >= #{createDateBegin} | |||
| </if> | |||
| <if test=" null != createDateEnd"> | |||
| and `create_date` <= #{createDateEnd} | |||
| </if> | |||
| GROUP BY audit_status | |||
| </select> | |||
| <update id="updateAuditStatus" parameterType="com.iformall.domain.po.WxOfflineActivityRecord"> | |||
| update wx_offline_activity_record | |||
| set `audit_status` = #{auditStatus}, | |||
| <if test=" null != lotteryNum and '' != lotteryNum"> | |||
| `lottery_num` = #{lotteryNum}, | |||
| </if> | |||
| <if test=" null != lotteryCount and '' != lotteryCount"> | |||
| `lottery_Count` = #{lotteryCount}, | |||
| </if> | |||
| <if test=" null != anniversaryLotteryNum and '' != anniversaryLotteryNum"> | |||
| `anniversary_lottery_num` = #{anniversaryLotteryNum}, | |||
| </if> | |||
| <if test=" null != auditRemark and '' != auditRemark"> | |||
| `audit_remark` = #{auditRemark}, | |||
| </if> | |||
| <if test=" null != auditTime"> | |||
| `audit_time` = #{auditTime}, | |||
| </if> | |||
| <if test=" null != auditBy"> | |||
| `audit_by` = #{auditBy}, | |||
| </if> | |||
| `update_date` = #{updateDate} | |||
| where id=#{id} | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| </update> | |||
| </mapper> | |||