| @@ -0,0 +1,133 @@ | |||
| package com.iformall.controller.market; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.annotation.ApiVersion; | |||
| import com.iformall.common.Result; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.constant.SwaggerConstant; | |||
| import com.iformall.controller.base.BaseController; | |||
| import com.iformall.domain.po.*; | |||
| import com.iformall.domain.po.base.BaseEntity.SortField; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.enums.*; | |||
| import com.iformall.service.*; | |||
| import com.iformall.utils.DateUtils; | |||
| import io.swagger.annotations.Api; | |||
| import io.swagger.annotations.ApiImplicitParam; | |||
| import io.swagger.annotations.ApiImplicitParams; | |||
| import io.swagger.annotations.ApiOperation; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.*; | |||
| import java.math.BigDecimal; | |||
| import java.util.*; | |||
| /** | |||
| * @author alascor | |||
| * | |||
| */ | |||
| @RestController | |||
| @RequestMapping("/offline") | |||
| @Api(description = "线下活动相关接口") | |||
| public class WxOfflineActivityController extends BaseController { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| private WxOfflineActivityService wxOfflineActivityService; | |||
| @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 WxOfflineActivity wxOfflineActivity, Integer pageNum, Integer pageSize) { | |||
| if (null == wxOfflineActivity) wxOfflineActivity = new WxOfflineActivity(); | |||
| TenantEntity tenantInfo = getTenantInfo(); | |||
| wxOfflineActivity.updateTenantInfo(tenantInfo); | |||
| wxOfflineActivity.setSortColumns(SortField.CreateDate_DESC); | |||
| final PageInfo<WxOfflineActivity> page = wxOfflineActivityService.listAsPage(wxOfflineActivity, pageNum, pageSize); | |||
| return new ResultData(page); | |||
| } | |||
| @ApiOperation("新增修改接口") | |||
| @PostMapping("saveOrUpdate") | |||
| public ResultData saveOrUpdate(@RequestBody WxOfflineActivity wxOfflineActivity) { | |||
| TenantEntity tenantEntity = getTenantInfo(); | |||
| wxOfflineActivity.updateTenantInfo(tenantEntity); | |||
| if(wxOfflineActivity.getActivityItemList() == null || wxOfflineActivity.getActivityItemList().size() == 0){ | |||
| return new ResultData(Result.ERROR,"活动项不能为空"); | |||
| } | |||
| if(wxOfflineActivity.getAllMerchant() == null){ | |||
| return new ResultData(Result.ERROR,"活动商户不能为空"); | |||
| } | |||
| for (WxOfflineActivityItem activityItem:wxOfflineActivity.getActivityItemList()){ | |||
| if(activityItem.getActivityAwardsItemList() == null || activityItem.getActivityAwardsItemList().size() == 0){ | |||
| return new ResultData(Result.ERROR,"活动["+activityItem.getName()+"]奖项不能为空"); | |||
| } | |||
| for (WxOfflineActivityAwardsItem activityAwardsItem :activityItem.getActivityAwardsItemList()){ | |||
| if(EnumOfflineActivityAwardsMoneyRule.MALL_ONLY.getCode().equals(activityAwardsItem.getMoneyRule())){ | |||
| activityAwardsItem.setMallShareRate(new BigDecimal(100)); | |||
| activityAwardsItem.setMerchantShareRate(new BigDecimal(0)); | |||
| } | |||
| else if (EnumOfflineActivityAwardsMoneyRule.MERCHANT_ONLY.getCode().equals(activityAwardsItem.getMoneyRule())){ | |||
| activityAwardsItem.setMallShareRate(new BigDecimal(0)); | |||
| activityAwardsItem.setMerchantShareRate(new BigDecimal(100)); | |||
| } | |||
| else if (EnumOfflineActivityAwardsMoneyRule.SHARE.getCode().equals(activityAwardsItem.getMoneyRule())) { | |||
| if (activityAwardsItem.getMallShareRate().add(activityAwardsItem.getMerchantShareRate()).intValue() != 100) { | |||
| return new ResultData(Result.ERROR,"分担规则下,商户和商管的比例总和需要为100%"); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| if(EnumOfflineActivityMerchantType.ADD.getCode().equals(wxOfflineActivity.getAllMerchant())){ | |||
| if(wxOfflineActivity.getActivityMerchantList() == null || wxOfflineActivity.getActivityMerchantList().size() == 0){ | |||
| return new ResultData(Result.ERROR,"活动参加商户不能为空"); | |||
| } | |||
| } | |||
| else if (EnumOfflineActivityMerchantType.UN_ADD.getCode().equals(wxOfflineActivity.getAllMerchant())) { | |||
| if(wxOfflineActivity.getActivityMerchantList() == null || wxOfflineActivity.getActivityMerchantList().size() == 0){ | |||
| return new ResultData(Result.ERROR,"活动不参加商户不能为空"); | |||
| } | |||
| } | |||
| wxOfflineActivityService.saveOrUpdate(wxOfflineActivity); | |||
| return new ResultData(wxOfflineActivity); | |||
| } | |||
| @ApiOperation("上架") | |||
| @PostMapping("online") | |||
| public ResultData online(@RequestBody WxOfflineActivity wxOfflineActivity) { | |||
| TenantEntity tenantEntity = getTenantInfo(); | |||
| wxOfflineActivity.updateTenantInfo(tenantEntity); | |||
| wxOfflineActivity.setStatus(EnumOfflineActivityStatus.ON_LINE.getCode()); | |||
| wxOfflineActivityService.updateStatus(wxOfflineActivity); | |||
| return new ResultData(); | |||
| } | |||
| @ApiOperation("下架") | |||
| @PostMapping("offline") | |||
| public ResultData offline(@RequestBody WxOfflineActivity wxOfflineActivity) { | |||
| TenantEntity tenantEntity = getTenantInfo(); | |||
| wxOfflineActivity.updateTenantInfo(tenantEntity); | |||
| wxOfflineActivity.setStatus(EnumOfflineActivityStatus.OFF_LINE.getCode()); | |||
| wxOfflineActivityService.updateStatus(wxOfflineActivity); | |||
| 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(); | |||
| WxOfflineActivity activity = wxOfflineActivityService.getInfoById(id, tenantInfo.getTenantId()); | |||
| return new ResultData(activity); | |||
| } | |||
| } | |||
| @@ -0,0 +1,88 @@ | |||
| package com.iformall.domain.po; | |||
| import com.baomidou.mybatisplus.annotation.TableField; | |||
| import com.baomidou.mybatisplus.annotation.TableId; | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| import java.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 | |||
| */ | |||
| @TableName(value ="wx_offline_activity") | |||
| @Data | |||
| @ToString(callSuper = true) | |||
| @EqualsAndHashCode(callSuper = true) | |||
| public class WxOfflineActivity extends TenantEntity { | |||
| /** | |||
| * 主键ID | |||
| */ | |||
| @TableId(value = "id") | |||
| private Long id; | |||
| /** | |||
| * 活动名称 | |||
| */ | |||
| @TableField(value = "name") | |||
| private String name; | |||
| /** | |||
| * 开始时间 | |||
| */ | |||
| @TableField(value = "start_time") | |||
| private Date startTime; | |||
| /** | |||
| * 结束时间 | |||
| */ | |||
| @TableField(value = "end_time") | |||
| private Date endTime; | |||
| /** | |||
| * 状态(0:未上架 1:已上架) | |||
| */ | |||
| @TableField(value = "status") | |||
| private Integer status; | |||
| /** | |||
| * 创建时间 | |||
| */ | |||
| @TableField(value = "create_date") | |||
| private Date createDate; | |||
| /** | |||
| * 更新时间 | |||
| */ | |||
| @TableField(value = "update_date") | |||
| private Date updateDate; | |||
| /** | |||
| * 是否全部商户 | |||
| */ | |||
| @TableField(value = "all_merchant") | |||
| private Integer allMerchant; | |||
| @TableField(exist = false) | |||
| private List<WxOfflineActivityItem> activityItemList; | |||
| @TableField(exist = false) | |||
| private List<WxOfflineActivityMerchant> activityMerchantList; | |||
| @TableField(exist = false) | |||
| private Date begin; | |||
| @TableField(exist = false) | |||
| private Date end; | |||
| /** | |||
| * 是否过期 | |||
| */ | |||
| @TableField(exist = false) | |||
| private Integer validStatus; | |||
| } | |||
| @@ -0,0 +1,95 @@ | |||
| package com.iformall.domain.po; | |||
| import com.baomidou.mybatisplus.annotation.TableField; | |||
| import com.baomidou.mybatisplus.annotation.TableId; | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| import java.math.BigDecimal; | |||
| import java.util.Date; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| import lombok.ToString; | |||
| /** | |||
| * 线下活动奖项 | |||
| * @TableName wx_offline_activity_awards_item | |||
| */ | |||
| @TableName(value ="wx_offline_activity_awards_item") | |||
| @Data | |||
| @ToString(callSuper = true) | |||
| @EqualsAndHashCode(callSuper = true) | |||
| public class WxOfflineActivityAwardsItem extends TenantEntity { | |||
| /** | |||
| * 主键ID | |||
| */ | |||
| @TableId(value = "id") | |||
| private Long id; | |||
| /** | |||
| * 活动项id | |||
| */ | |||
| @TableField(value = "activity_item_id") | |||
| private Long activityItemId; | |||
| /** | |||
| * 奖项名称 | |||
| */ | |||
| @TableField(value = "name") | |||
| private String name; | |||
| /** | |||
| * 奖项等级 | |||
| */ | |||
| @TableField(value = "grade") | |||
| private Integer grade; | |||
| /** | |||
| * 限制最小金额 | |||
| */ | |||
| @TableField(value = "min_amount") | |||
| private Integer minAmount; | |||
| /** | |||
| * 限制最大金额 | |||
| */ | |||
| @TableField(value = "max_amount") | |||
| private Integer maxAmount; | |||
| /** | |||
| * 奖项价值 | |||
| */ | |||
| @TableField(value = "price") | |||
| private Integer price; | |||
| /** | |||
| * 分担规则(0-商管 1-商户 2-分担) | |||
| */ | |||
| @TableField(value = "money_rule") | |||
| private Integer moneyRule; | |||
| /** | |||
| * 商管分担比例 | |||
| */ | |||
| @TableField(value = "mall_share_rate") | |||
| private BigDecimal mallShareRate; | |||
| /** | |||
| * 商户分担比例 | |||
| */ | |||
| @TableField(value = "merchant_share_rate") | |||
| private BigDecimal merchantShareRate; | |||
| /** | |||
| * 创建时间 | |||
| */ | |||
| @TableField(value = "create_date") | |||
| private Date createDate; | |||
| /** | |||
| * 更新时间 | |||
| */ | |||
| @TableField(value = "update_date") | |||
| private Date updateDate; | |||
| } | |||
| @@ -0,0 +1,86 @@ | |||
| package com.iformall.domain.po; | |||
| import com.baomidou.mybatisplus.annotation.TableField; | |||
| import com.baomidou.mybatisplus.annotation.TableId; | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| import java.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_item | |||
| */ | |||
| @TableName(value ="wx_offline_activity_item") | |||
| @Data | |||
| @ToString(callSuper = true) | |||
| @EqualsAndHashCode(callSuper = true) | |||
| public class WxOfflineActivityItem extends TenantEntity { | |||
| /** | |||
| * 主键ID | |||
| */ | |||
| @TableId(value = "id") | |||
| private Long id; | |||
| /** | |||
| * 活动id | |||
| */ | |||
| @TableField(value = "activity_id") | |||
| private Long activityId; | |||
| /** | |||
| * 活动项类型 | |||
| */ | |||
| @TableField(value = "type") | |||
| private Integer type; | |||
| /** | |||
| * 活动项名称 | |||
| */ | |||
| @TableField(value = "name") | |||
| private String name; | |||
| /** | |||
| * 参与金额 | |||
| */ | |||
| @TableField(value = "limit_money") | |||
| private Integer limitMoney; | |||
| /** | |||
| * 奖项单价 | |||
| */ | |||
| @TableField(value = "awards_item_price") | |||
| private Integer awardsItemPrice; | |||
| /** | |||
| * 奖项总数量 | |||
| */ | |||
| @TableField(value = "awards_item_count") | |||
| private Integer awardsItemCount; | |||
| /** | |||
| * 奖项计算规则(0代表无规则) | |||
| */ | |||
| @TableField(value = "awards_item_rule") | |||
| private Integer awardsItemRule; | |||
| /** | |||
| * 创建时间 | |||
| */ | |||
| @TableField(value = "create_date") | |||
| private Date createDate; | |||
| /** | |||
| * 更新时间 | |||
| */ | |||
| @TableField(value = "update_date") | |||
| private Date updateDate; | |||
| @TableField(exist = false) | |||
| private List<WxOfflineActivityAwardsItem> activityAwardsItemList; | |||
| } | |||
| @@ -0,0 +1,62 @@ | |||
| package com.iformall.domain.po; | |||
| import com.baomidou.mybatisplus.annotation.TableField; | |||
| import com.baomidou.mybatisplus.annotation.TableId; | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| import java.util.Date; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| import lombok.ToString; | |||
| /** | |||
| * 线下活动商户 | |||
| * @TableName wx_offline_activity_merchant | |||
| */ | |||
| @TableName(value ="wx_offline_activity_merchant") | |||
| @Data | |||
| @ToString(callSuper = true) | |||
| @EqualsAndHashCode(callSuper = true) | |||
| public class WxOfflineActivityMerchant extends TenantEntity { | |||
| /** | |||
| * 主键ID | |||
| */ | |||
| @TableId(value = "id") | |||
| private Long id; | |||
| /** | |||
| * 活动编号 | |||
| */ | |||
| @TableField(value = "activity_id") | |||
| private Long activityId; | |||
| /** | |||
| * 商户编号 | |||
| */ | |||
| @TableField(value = "merchant_id") | |||
| private Long merchantId; | |||
| /** | |||
| * | |||
| */ | |||
| @TableField(value = "whether_in") | |||
| private Integer whetherIn; | |||
| /** | |||
| * 创建时间 | |||
| */ | |||
| @TableField(value = "create_date") | |||
| private Date createDate; | |||
| /** | |||
| * 更新时间 | |||
| */ | |||
| @TableField(value = "update_date") | |||
| private Date updateDate; | |||
| @TableField(exist = false) | |||
| private WxMerchant merchant; | |||
| } | |||
| @@ -0,0 +1,37 @@ | |||
| package com.iformall.enums; | |||
| /** | |||
| * @author gongbiao | |||
| */ | |||
| public enum EnumOfflineActivityAwardsMoneyRule { | |||
| MALL_ONLY(0, "商管承担全部"), | |||
| MERCHANT_ONLY(1, "商户承担全部"), | |||
| SHARE(2, "商管商户分担"); | |||
| public static EnumOfflineActivityAwardsMoneyRule getEnum(Integer code) { | |||
| for (EnumOfflineActivityAwardsMoneyRule value : values()) { | |||
| if (value.getCode().equals(code)) { | |||
| return value; | |||
| } | |||
| } | |||
| return null; | |||
| } | |||
| private Integer code; | |||
| private String message; | |||
| EnumOfflineActivityAwardsMoneyRule(Integer code, String message) { | |||
| this.code = code; | |||
| this.message = message; | |||
| } | |||
| public Integer getCode() { | |||
| return code; | |||
| } | |||
| public String getMessage() { | |||
| return message; | |||
| } | |||
| } | |||
| @@ -0,0 +1,37 @@ | |||
| package com.iformall.enums; | |||
| /** | |||
| * @author gongbiao | |||
| */ | |||
| public enum EnumOfflineActivityAwardsRule { | |||
| YUAN(1, "四舍五入(元)"), | |||
| FEN(2, "四舍五入(分)"), | |||
| ; | |||
| public static EnumOfflineActivityAwardsRule getEnum(Integer code) { | |||
| for (EnumOfflineActivityAwardsRule value : values()) { | |||
| if (value.getCode().equals(code)) { | |||
| return value; | |||
| } | |||
| } | |||
| return null; | |||
| } | |||
| private Integer code; | |||
| private String message; | |||
| EnumOfflineActivityAwardsRule(Integer code, String message) { | |||
| this.code = code; | |||
| this.message = message; | |||
| } | |||
| public Integer getCode() { | |||
| return code; | |||
| } | |||
| public String getMessage() { | |||
| return message; | |||
| } | |||
| } | |||
| @@ -0,0 +1,38 @@ | |||
| package com.iformall.enums; | |||
| /** | |||
| * @author gongbiao | |||
| */ | |||
| public enum EnumOfflineActivityMerchantType { | |||
| ALL(0, "全部商户"), | |||
| ADD(1, "参加商户"), | |||
| UN_ADD(2, "不参加商户") | |||
| ; | |||
| public static EnumOfflineActivityMerchantType getEnum(Integer code) { | |||
| for (EnumOfflineActivityMerchantType value : values()) { | |||
| if (value.getCode().equals(code)) { | |||
| return value; | |||
| } | |||
| } | |||
| return null; | |||
| } | |||
| private Integer code; | |||
| private String message; | |||
| EnumOfflineActivityMerchantType(Integer code, String message) { | |||
| this.code = code; | |||
| this.message = message; | |||
| } | |||
| public Integer getCode() { | |||
| return code; | |||
| } | |||
| public String getMessage() { | |||
| return message; | |||
| } | |||
| } | |||
| @@ -0,0 +1,38 @@ | |||
| package com.iformall.enums; | |||
| /** | |||
| * @author gongbiao | |||
| */ | |||
| public enum EnumOfflineActivityStatus { | |||
| OFF_LINE(0, "未上架"), | |||
| ON_LINE(1, "已上架"), | |||
| EXPIRE(2, "已过期") | |||
| ; | |||
| public static EnumOfflineActivityStatus getEnum(Integer code) { | |||
| for (EnumOfflineActivityStatus value : values()) { | |||
| if (value.getCode().equals(code)) { | |||
| return value; | |||
| } | |||
| } | |||
| return null; | |||
| } | |||
| private Integer code; | |||
| private String message; | |||
| EnumOfflineActivityStatus(Integer code, String message) { | |||
| this.code = code; | |||
| this.message = message; | |||
| } | |||
| public Integer getCode() { | |||
| return code; | |||
| } | |||
| public String getMessage() { | |||
| return message; | |||
| } | |||
| } | |||
| @@ -0,0 +1,38 @@ | |||
| package com.iformall.enums; | |||
| /** | |||
| * @author gongbiao | |||
| */ | |||
| public enum EnumOfflineActivityType { | |||
| LOTTERY_DRAW(1, "抽奖活动"), | |||
| GIFT(2, "满额赠礼"), | |||
| CASHBACK(3, "返现活动") | |||
| ; | |||
| public static EnumOfflineActivityType getEnum(Integer code) { | |||
| for (EnumOfflineActivityType value : values()) { | |||
| if (value.getCode().equals(code)) { | |||
| return value; | |||
| } | |||
| } | |||
| return null; | |||
| } | |||
| private Integer code; | |||
| private String message; | |||
| EnumOfflineActivityType(Integer code, String message) { | |||
| this.code = code; | |||
| this.message = message; | |||
| } | |||
| public Integer getCode() { | |||
| return code; | |||
| } | |||
| public String getMessage() { | |||
| return message; | |||
| } | |||
| } | |||
| @@ -0,0 +1,28 @@ | |||
| package com.iformall.mapper; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxOfflineActivityAwardsItem; | |||
| import org.apache.ibatis.annotations.Param; | |||
| import java.util.List; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_awards_item(线下活动奖项)】的数据库操作Mapper | |||
| * @createDate 2024-08-06 13:20:56 | |||
| * @Entity com.iformall.domain.po.WxOfflineActivityAwardsItem | |||
| */ | |||
| public interface WxOfflineActivityAwardsItemMapper extends CommonMapper<WxOfflineActivityAwardsItem, Long> { | |||
| WxOfflineActivityAwardsItem selectById(@Param("id")Long id, @Param("tenantId")String tenantId); | |||
| List<WxOfflineActivityAwardsItem> findList(WxOfflineActivityAwardsItem wxOfflineActivityAwardsItem); | |||
| Integer itemCount(WxOfflineActivityAwardsItem wxOfflineActivityAwardsItem); | |||
| void delete(WxOfflineActivityAwardsItem wxOfflineActivityAwardsItem); | |||
| } | |||
| @@ -0,0 +1,28 @@ | |||
| package com.iformall.mapper; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxOfflineActivityItem; | |||
| import org.apache.ibatis.annotations.Param; | |||
| import java.util.List; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_item(线下活动项目)】的数据库操作Mapper | |||
| * @createDate 2024-08-06 13:20:56 | |||
| * @Entity com.iformall.domain.po.WxOfflineActivityItem | |||
| */ | |||
| public interface WxOfflineActivityItemMapper extends CommonMapper<WxOfflineActivityItem, Long> { | |||
| WxOfflineActivityItem selectById(@Param("id")Long id, @Param("tenantId")String tenantId); | |||
| List<WxOfflineActivityItem> findList(WxOfflineActivityItem wxOfflineActivityItem); | |||
| List<Long> findIds(WxOfflineActivityItem wxOfflineActivityItem); | |||
| void delete(WxOfflineActivityItem wxOfflineActivityItem); | |||
| } | |||
| @@ -0,0 +1,28 @@ | |||
| package com.iformall.mapper; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxOfflineActivity; | |||
| import org.apache.ibatis.annotations.Param; | |||
| import java.util.List; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity(线下活动)】的数据库操作Mapper | |||
| * @createDate 2024-08-06 13:20:56 | |||
| * @Entity com.iformall.domain.po.WxOfflineActivity | |||
| */ | |||
| public interface WxOfflineActivityMapper extends CommonMapper<WxOfflineActivity, Long> { | |||
| WxOfflineActivity selectById(@Param("id")Long id, @Param("tenantId")String tenantId); | |||
| List<WxOfflineActivity> findList(WxOfflineActivity wxOfflineActivity); | |||
| void updateStatus(WxOfflineActivity wxOfflineActivity); | |||
| List<Long> findIds(WxOfflineActivity wxOfflineActivity); | |||
| } | |||
| @@ -0,0 +1,30 @@ | |||
| package com.iformall.mapper; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxOfflineActivityMerchant; | |||
| import org.apache.ibatis.annotations.Param; | |||
| import java.util.List; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_merchant(线下活动商户)】的数据库操作Mapper | |||
| * @createDate 2024-08-06 13:20:56 | |||
| * @Entity com.iformall.domain.po.WxOfflineActivityMerchant | |||
| */ | |||
| public interface WxOfflineActivityMerchantMapper extends CommonMapper<WxOfflineActivityMerchant, Long> { | |||
| WxOfflineActivityMerchant selectById(@Param("id")Long id, @Param("tenantId")String tenantId); | |||
| List<WxOfflineActivityMerchant> findList(WxOfflineActivityMerchant wxOfflineActivityMerchant); | |||
| void delete(WxOfflineActivityMerchant wxOfflineActivityMerchant); | |||
| int merchantCount(WxOfflineActivityMerchant wxOfflineActivityMerchant); | |||
| List<Long> findActivityIdList(@Param("merchantId")Long merchantId,@Param("tenantId")String tenantId); | |||
| } | |||
| @@ -0,0 +1,19 @@ | |||
| package com.iformall.service; | |||
| import com.iformall.domain.po.WxOfflineActivityAwardsItem; | |||
| import com.baomidou.mybatisplus.extension.service.IService; | |||
| import com.iformall.domain.po.WxOfflineActivityItem; | |||
| import java.util.List; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_awards_item(线下活动奖项)】的数据库操作Service | |||
| * @createDate 2024-08-06 13:20:56 | |||
| */ | |||
| public interface WxOfflineActivityAwardsItemService { | |||
| void saveOrUpdateFromActivityItem(WxOfflineActivityItem activityItem, List<WxOfflineActivityAwardsItem> activityAwardsItemList); | |||
| List<WxOfflineActivityAwardsItem> getActivityAwardsItemList(Long activityItemId, String tenantId); | |||
| } | |||
| @@ -0,0 +1,18 @@ | |||
| package com.iformall.service; | |||
| import com.iformall.domain.po.WxOfflineActivity; | |||
| import com.iformall.domain.po.WxOfflineActivityItem; | |||
| import java.util.List; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_item(线下活动项目)】的数据库操作Service | |||
| * @createDate 2024-08-06 13:20:56 | |||
| */ | |||
| public interface WxOfflineActivityItemService { | |||
| void saveOrUpdateFromActivity(WxOfflineActivity wxOfflineActivity, List<WxOfflineActivityItem> activityItemList); | |||
| List<WxOfflineActivityItem> getActivityItemList(Long activityId, String tenantId); | |||
| } | |||
| @@ -0,0 +1,19 @@ | |||
| package com.iformall.service; | |||
| import com.iformall.domain.po.WxOfflineActivity; | |||
| import com.iformall.domain.po.WxOfflineActivityMerchant; | |||
| import java.util.List; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_merchant(线下活动商户)】的数据库操作Service | |||
| * @createDate 2024-08-06 13:20:56 | |||
| */ | |||
| public interface WxOfflineActivityMerchantService { | |||
| void saveOrUpdateFromActivity(WxOfflineActivity wxOfflineActivity, List<WxOfflineActivityMerchant> activityMerchantList); | |||
| List<WxOfflineActivityMerchant> getActivityMerchantList(Long activityId, String tenantId); | |||
| } | |||
| @@ -0,0 +1,28 @@ | |||
| package com.iformall.service; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.domain.po.WxOfflineActivity; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity(线下活动)】的数据库操作Service | |||
| * @createDate 2024-08-06 13:20:56 | |||
| */ | |||
| public interface WxOfflineActivityService{ | |||
| /** | |||
| * 根据实体查询分页列表 | |||
| * | |||
| * @param record | |||
| * @param pageIndex | |||
| * @param pageSize | |||
| * @return | |||
| */ | |||
| PageInfo<WxOfflineActivity> listAsPage(WxOfflineActivity record, Integer pageIndex, Integer pageSize); | |||
| void saveOrUpdate(WxOfflineActivity wxOfflineActivity); | |||
| void updateStatus(WxOfflineActivity wxOfflineActivity); | |||
| WxOfflineActivity getInfoById(Long id, String tenantId); | |||
| } | |||
| @@ -0,0 +1,74 @@ | |||
| package com.iformall.service.impl; | |||
| import com.iformall.common.IdWorker; | |||
| import com.iformall.domain.po.WxOfflineActivityAwardsItem; | |||
| import com.iformall.domain.po.WxOfflineActivityItem; | |||
| import com.iformall.enums.EnumOfflineActivityType; | |||
| import com.iformall.service.WxOfflineActivityAwardsItemService; | |||
| import com.iformall.mapper.WxOfflineActivityAwardsItemMapper; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import java.util.Collections; | |||
| import java.util.List; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_awards_item(线下活动奖项)】的数据库操作Service实现 | |||
| * @createDate 2024-08-06 13:20:56 | |||
| */ | |||
| @Service | |||
| public class WxOfflineActivityAwardsItemServiceImpl implements WxOfflineActivityAwardsItemService{ | |||
| @Autowired | |||
| WxOfflineActivityAwardsItemMapper wxOfflineActivityAwardsItemMapper; | |||
| @Override | |||
| public void saveOrUpdateFromActivityItem(WxOfflineActivityItem activityItem, List<WxOfflineActivityAwardsItem> activityAwardsItemList) { | |||
| WxOfflineActivityAwardsItem activityAwardsItemDel = new WxOfflineActivityAwardsItem(); | |||
| activityAwardsItemDel.updateTenantInfo(activityItem); | |||
| activityAwardsItemDel.setActivityItemId(activityItem.getId()); | |||
| wxOfflineActivityAwardsItemMapper.delete(activityAwardsItemDel); | |||
| for (WxOfflineActivityAwardsItem awaItem : activityAwardsItemList) { | |||
| if(awaItem.getId() == null){ | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| awaItem.setId(idWorker.nextId()); | |||
| } | |||
| awaItem.updateTenantInfo(activityItem); | |||
| awaItem.setActivityItemId(activityItem.getId()); | |||
| if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ | |||
| awaItem.setGrade(-1); | |||
| awaItem.setMinAmount(0); | |||
| awaItem.setMaxAmount(-1); | |||
| } | |||
| else if (EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())) { | |||
| } | |||
| else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { | |||
| awaItem.setGrade(-1); | |||
| awaItem.setMinAmount(0); | |||
| awaItem.setMaxAmount(-1); | |||
| } | |||
| if(awaItem.getCreateDate() == null){ | |||
| awaItem.setCreateDate(activityItem.getUpdateDate()); | |||
| } | |||
| awaItem.setUpdateDate(activityItem.getUpdateDate()); | |||
| wxOfflineActivityAwardsItemMapper.insert(awaItem); | |||
| } | |||
| } | |||
| @Override | |||
| public List<WxOfflineActivityAwardsItem> getActivityAwardsItemList(Long activityItemId, String tenantId) { | |||
| WxOfflineActivityAwardsItem activityAwardsItemQuery = new WxOfflineActivityAwardsItem(); | |||
| activityAwardsItemQuery.setActivityItemId(activityItemId); | |||
| activityAwardsItemQuery.setTenantId(tenantId); | |||
| List<WxOfflineActivityAwardsItem> activityAwardsItemList = wxOfflineActivityAwardsItemMapper.findList(activityAwardsItemQuery); | |||
| return activityAwardsItemList; | |||
| } | |||
| } | |||
| @@ -0,0 +1,85 @@ | |||
| package com.iformall.service.impl; | |||
| import com.iformall.common.IdWorker; | |||
| import com.iformall.domain.po.WxOfflineActivity; | |||
| import com.iformall.domain.po.WxOfflineActivityAwardsItem; | |||
| import com.iformall.domain.po.WxOfflineActivityItem; | |||
| import com.iformall.enums.EnumOfflineActivityType; | |||
| import com.iformall.service.WxOfflineActivityAwardsItemService; | |||
| import com.iformall.service.WxOfflineActivityItemService; | |||
| import com.iformall.mapper.WxOfflineActivityItemMapper; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import java.util.Collections; | |||
| import java.util.List; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_item(线下活动项目)】的数据库操作Service实现 | |||
| * @createDate 2024-08-06 13:20:56 | |||
| */ | |||
| @Service | |||
| public class WxOfflineActivityItemServiceImpl implements WxOfflineActivityItemService{ | |||
| @Autowired | |||
| WxOfflineActivityItemMapper wxOfflineActivityItemMapper; | |||
| @Autowired | |||
| WxOfflineActivityAwardsItemService wxOfflineActivityAwardsItemService; | |||
| @Override | |||
| public void saveOrUpdateFromActivity(WxOfflineActivity wxOfflineActivity, List<WxOfflineActivityItem> activityItemList) { | |||
| WxOfflineActivityItem activityItemDel = new WxOfflineActivityItem(); | |||
| activityItemDel.updateTenantInfo(wxOfflineActivity); | |||
| activityItemDel.setActivityId(wxOfflineActivity.getId()); | |||
| wxOfflineActivityItemMapper.delete(activityItemDel); | |||
| for (WxOfflineActivityItem activityItem : activityItemList) { | |||
| if(activityItem.getId() == null){ | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| activityItem.setId(idWorker.nextId()); | |||
| } | |||
| activityItem.updateTenantInfo(wxOfflineActivity); | |||
| activityItem.setActivityId(wxOfflineActivity.getId()); | |||
| if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ | |||
| activityItem.setAwardsItemRule(0); | |||
| } | |||
| else if (EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())) { | |||
| activityItem.setLimitMoney(0); | |||
| activityItem.setAwardsItemPrice(0); | |||
| activityItem.setAwardsItemRule(0); | |||
| } | |||
| else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { | |||
| activityItem.setAwardsItemPrice(0); | |||
| activityItem.setAwardsItemCount(0); | |||
| } | |||
| if(activityItem.getCreateDate() == null){ | |||
| activityItem.setCreateDate(wxOfflineActivity.getUpdateDate()); | |||
| } | |||
| activityItem.setUpdateDate(wxOfflineActivity.getUpdateDate()); | |||
| wxOfflineActivityItemMapper.insert(activityItem); | |||
| //处理奖项 | |||
| wxOfflineActivityAwardsItemService.saveOrUpdateFromActivityItem(activityItem,activityItem.getActivityAwardsItemList()); | |||
| } | |||
| } | |||
| @Override | |||
| public List<WxOfflineActivityItem> getActivityItemList(Long activityId, String tenantId) { | |||
| WxOfflineActivityItem activityItemQuery = new WxOfflineActivityItem(); | |||
| activityItemQuery.setActivityId(activityId); | |||
| activityItemQuery.setTenantId(tenantId); | |||
| List<WxOfflineActivityItem> itemList = wxOfflineActivityItemMapper.findList(activityItemQuery); | |||
| for (WxOfflineActivityItem item : itemList) { | |||
| List<WxOfflineActivityAwardsItem> activityAwardsItemList = wxOfflineActivityAwardsItemService.getActivityAwardsItemList(item.getId(),tenantId); | |||
| item.setActivityAwardsItemList(activityAwardsItemList); | |||
| } | |||
| return itemList; | |||
| } | |||
| } | |||
| @@ -0,0 +1,81 @@ | |||
| package com.iformall.service.impl; | |||
| import com.iformall.common.IdWorker; | |||
| import com.iformall.domain.po.WxMerchant; | |||
| import com.iformall.domain.po.WxOfflineActivity; | |||
| import com.iformall.domain.po.WxOfflineActivityMerchant; | |||
| import com.iformall.enums.EnumOfflineActivityMerchantType; | |||
| import com.iformall.enums.EnumYesOrNo; | |||
| import com.iformall.service.WxMerchantService; | |||
| import com.iformall.service.WxOfflineActivityMerchantService; | |||
| import com.iformall.mapper.WxOfflineActivityMerchantMapper; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import java.util.Collections; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity_merchant(线下活动商户)】的数据库操作Service实现 | |||
| * @createDate 2024-08-06 13:20:56 | |||
| */ | |||
| @Service | |||
| public class WxOfflineActivityMerchantServiceImpl implements WxOfflineActivityMerchantService{ | |||
| @Autowired | |||
| private WxOfflineActivityMerchantMapper wxOfflineActivityMerchantMapper; | |||
| @Autowired | |||
| WxMerchantService wxMerchantService; | |||
| @Override | |||
| public void saveOrUpdateFromActivity(WxOfflineActivity wxOfflineActivity, List<WxOfflineActivityMerchant> activityMerchantList) { | |||
| WxOfflineActivityMerchant activityMerchantDel = new WxOfflineActivityMerchant(); | |||
| activityMerchantDel.updateTenantInfo(wxOfflineActivity); | |||
| activityMerchantDel.setActivityId(wxOfflineActivity.getId()); | |||
| wxOfflineActivityMerchantMapper.delete(activityMerchantDel); | |||
| if(EnumOfflineActivityMerchantType.ALL.getCode().equals(wxOfflineActivity.getAllMerchant())){ | |||
| return; | |||
| } | |||
| for (WxOfflineActivityMerchant wxOfflineActivityMerchant : activityMerchantList) { | |||
| if(wxOfflineActivityMerchant.getId() == null){ | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| wxOfflineActivityMerchant.setId(idWorker.nextId()); | |||
| } | |||
| wxOfflineActivityMerchant.updateTenantInfo(wxOfflineActivity); | |||
| wxOfflineActivityMerchant.setActivityId(wxOfflineActivity.getId()); | |||
| if(EnumOfflineActivityMerchantType.ADD.getCode().equals(wxOfflineActivity.getAllMerchant())){ | |||
| wxOfflineActivityMerchant.setWhetherIn(EnumYesOrNo.YES.getCode()); | |||
| } | |||
| else if (EnumOfflineActivityMerchantType.UN_ADD.getCode().equals(wxOfflineActivity.getAllMerchant())) { | |||
| wxOfflineActivityMerchant.setWhetherIn(EnumYesOrNo.NO.getCode()); | |||
| } | |||
| wxOfflineActivityMerchantMapper.insert(wxOfflineActivityMerchant); | |||
| } | |||
| } | |||
| @Override | |||
| public List<WxOfflineActivityMerchant> getActivityMerchantList(Long activityId, String tenantId) { | |||
| WxOfflineActivityMerchant activityMerchantQuery = new WxOfflineActivityMerchant(); | |||
| activityMerchantQuery.setActivityId(activityId); | |||
| activityMerchantQuery.setTenantId(tenantId); | |||
| List<WxOfflineActivityMerchant> activityMerchantList = wxOfflineActivityMerchantMapper.findList(activityMerchantQuery); | |||
| WxMerchant merchantQ = new WxMerchant(); | |||
| merchantQ.setTenantId(tenantId); | |||
| Map<Long, WxMerchant> merchantMap = wxMerchantService.findMerchantMap(merchantQ); | |||
| for (WxOfflineActivityMerchant wxOfflineActivityMerchant : activityMerchantList) { | |||
| wxOfflineActivityMerchant.setMerchant(merchantMap.get(wxOfflineActivityMerchant.getMerchantId())); | |||
| } | |||
| return activityMerchantList; | |||
| } | |||
| } | |||
| @@ -0,0 +1,117 @@ | |||
| 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.WxOfflineActivity; | |||
| import com.iformall.domain.po.WxOfflineActivityItem; | |||
| import com.iformall.domain.po.WxOfflineActivityMerchant; | |||
| import com.iformall.domain.po.WxRaffleActivity; | |||
| import com.iformall.enums.EnumOfflineActivityMerchantType; | |||
| import com.iformall.enums.EnumOfflineActivityStatus; | |||
| import com.iformall.enums.EnumYesOrNo; | |||
| import com.iformall.service.WxOfflineActivityItemService; | |||
| import com.iformall.service.WxOfflineActivityMerchantService; | |||
| import com.iformall.service.WxOfflineActivityService; | |||
| import com.iformall.mapper.WxOfflineActivityMapper; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import org.springframework.transaction.annotation.Transactional; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| /** | |||
| * @author xiaohu | |||
| * @description 针对表【wx_offline_activity(线下活动)】的数据库操作Service实现 | |||
| * @createDate 2024-08-06 13:20:56 | |||
| */ | |||
| @Service | |||
| public class WxOfflineActivityServiceImpl implements WxOfflineActivityService{ | |||
| @Autowired | |||
| WxOfflineActivityMapper wxOfflineActivityMapper; | |||
| @Autowired | |||
| WxOfflineActivityItemService wxOfflineActivityItemService; | |||
| @Autowired | |||
| WxOfflineActivityMerchantService wxOfflineActivityMerchantService; | |||
| @Override | |||
| public PageInfo<WxOfflineActivity> listAsPage(WxOfflineActivity record, Integer pageIndex, Integer pageSize) { | |||
| handlerQuery(record); | |||
| PageInfo<WxOfflineActivity> activityPageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOfflineActivityMapper.findList(record)); | |||
| handlerReturnList(activityPageInfo.getList()); | |||
| return activityPageInfo; | |||
| } | |||
| private void handlerQuery(WxOfflineActivity record) { | |||
| if (null != record.getStatus()) { | |||
| //已上架 | |||
| if(EnumOfflineActivityStatus.ON_LINE.getCode().equals(record.getStatus())){ | |||
| record.setValidStatus(EnumYesOrNo.NO.getCode()); | |||
| } | |||
| //已过期 | |||
| else if(EnumOfflineActivityStatus.EXPIRE.getCode().equals(record.getStatus())){ | |||
| record.setStatus(null); | |||
| record.setValidStatus(EnumYesOrNo.YES.getCode()); | |||
| } | |||
| } | |||
| } | |||
| private void handlerReturnList(List<WxOfflineActivity> list) { | |||
| if (null != list && !list.isEmpty()) { | |||
| Date now = new Date(); | |||
| for (WxOfflineActivity activity : list) { | |||
| if(now.before(activity.getEndTime())){ | |||
| activity.setStatus(EnumOfflineActivityStatus.EXPIRE.getCode()); | |||
| } | |||
| //获取发奖订单数 | |||
| } | |||
| } | |||
| } | |||
| @Override | |||
| @Transactional(rollbackFor = Exception.class) | |||
| public void saveOrUpdate(WxOfflineActivity wxOfflineActivity) { | |||
| Date now = new Date(); | |||
| if(wxOfflineActivity.getId() == null){ | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| wxOfflineActivity.setId(idWorker.nextId()); | |||
| wxOfflineActivity.setCreateDate(now); | |||
| wxOfflineActivity.setCreateDate(now); | |||
| wxOfflineActivity.setStatus(EnumOfflineActivityStatus.OFF_LINE.getCode()); | |||
| wxOfflineActivityMapper.insert(wxOfflineActivity); | |||
| } | |||
| else{ | |||
| wxOfflineActivity.setUpdateDate(now); | |||
| wxOfflineActivityMapper.updateStatus(wxOfflineActivity); | |||
| } | |||
| //处理活动项 | |||
| wxOfflineActivityItemService.saveOrUpdateFromActivity(wxOfflineActivity,wxOfflineActivity.getActivityItemList()); | |||
| //处理活动商户 | |||
| wxOfflineActivityMerchantService.saveOrUpdateFromActivity(wxOfflineActivity,wxOfflineActivity.getActivityMerchantList()); | |||
| } | |||
| @Override | |||
| public void updateStatus(WxOfflineActivity wxOfflineActivity) { | |||
| wxOfflineActivityMapper.updateStatus(wxOfflineActivity); | |||
| } | |||
| @Override | |||
| public WxOfflineActivity getInfoById(Long id, String tenantId) { | |||
| WxOfflineActivity wxOfflineActivity = wxOfflineActivityMapper.selectById(id, tenantId); | |||
| List<WxOfflineActivityItem> activityItemList = wxOfflineActivityItemService.getActivityItemList(wxOfflineActivity.getId(),tenantId); | |||
| wxOfflineActivity.setActivityItemList(activityItemList); | |||
| if(!EnumOfflineActivityMerchantType.ALL.getCode().equals(wxOfflineActivity.getAllMerchant())){ | |||
| List<WxOfflineActivityMerchant> activityMerchantList = wxOfflineActivityMerchantService.getActivityMerchantList(wxOfflineActivity.getId(),tenantId); | |||
| wxOfflineActivity.setActivityMerchantList(activityMerchantList); | |||
| } | |||
| return wxOfflineActivity; | |||
| } | |||
| } | |||
| @@ -0,0 +1,81 @@ | |||
| <?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.WxOfflineActivityAwardsItemMapper"> | |||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxOfflineActivityAwardsItem"> | |||
| <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="activityItemId" column="activity_item_id" jdbcType="BIGINT"/> | |||
| <result property="name" column="name" jdbcType="VARCHAR"/> | |||
| <result property="grade" column="grade" jdbcType="INTEGER"/> | |||
| <result property="minAmount" column="min_amount" jdbcType="INTEGER"/> | |||
| <result property="maxAmount" column="max_amount" jdbcType="INTEGER"/> | |||
| <result property="price" column="price" jdbcType="INTEGER"/> | |||
| <result property="moneyRule" column="money_rule" jdbcType="INTEGER"/> | |||
| <result property="mallShareRate" column="mall_share_rate" jdbcType="DECIMAL"/> | |||
| <result property="merchantShareRate" column="merchant_share_rate" 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, | |||
| activity_item_id,`name`,grade, | |||
| min_amount,max_amount,price, | |||
| money_rule,mall_share_rate,merchant_share_rate, | |||
| create_date,update_date | |||
| </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 != activityItemId "> | |||
| and `activity_item_id` = #{activityItemId} | |||
| </if> | |||
| <if test=" null != name "> | |||
| and `name` like concat('%', #{name},'%') | |||
| </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="selectById" parameterType="java.util.HashMap" resultMap="BaseResultMap"> | |||
| select <include refid="allColumns" /> from wx_offline_activity_awards_item where id = #{id} and tenant_id=#{tenantId} | |||
| </select> | |||
| <select id="findList" parameterType="com.iformall.domain.po.WxOfflineActivityAwardsItem" resultMap="BaseResultMap"> | |||
| select <include refid="allColumns" /> from wx_offline_activity_awards_item | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| <select id="itemCount" parameterType="com.iformall.domain.po.WxOfflineActivityAwardsItem" resultType="Integer"> | |||
| select count(1) from wx_offline_activity_awards_item where `activity_item_id` = #{activityItemId} and tenant_id=#{tenantId} | |||
| </select> | |||
| <delete id="delete" parameterType="com.iformall.domain.po.WxOfflineActivityAwardsItem"> | |||
| delete from wx_offline_activity_awards_item | |||
| <include refid="dynamicWhereConditions" /> | |||
| </delete> | |||
| </mapper> | |||
| @@ -0,0 +1,79 @@ | |||
| <?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.WxOfflineActivityItemMapper"> | |||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxOfflineActivityItem"> | |||
| <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="type" column="type" jdbcType="SMALLINT"/> | |||
| <result property="name" column="name" jdbcType="VARCHAR"/> | |||
| <result property="limitMoney" column="limit_money" jdbcType="INTEGER"/> | |||
| <result property="awardsItemPrice" column="awards_item_price" jdbcType="INTEGER"/> | |||
| <result property="awardsItemCount" column="awards_item_count" jdbcType="INTEGER"/> | |||
| <result property="awardsItemRule" column="awards_item_rule" 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, | |||
| activity_id,`type`,`name`, | |||
| limit_money,awards_item_price,awards_item_count, | |||
| awards_item_rule,create_date,update_date | |||
| </sql> | |||
| <sql id="dynamicWhereConditions"> | |||
| where 1 = 1 | |||
| <if test=" null != id "> | |||
| and `id` = #{id} | |||
| </if> | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <if test=" null != activityId "> | |||
| and `activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != name and name != '' "> | |||
| and `name` like concat('%', #{name},'%') | |||
| </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="selectById" parameterType="java.util.HashMap" resultMap="BaseResultMap"> | |||
| select <include refid="allColumns" /> from wx_offline_activity_item where id = #{id} and tenant_id=#{tenantId} | |||
| </select> | |||
| <select id="findList" parameterType="com.iformall.domain.po.WxOfflineActivityItem" resultMap="BaseResultMap"> | |||
| select <include refid="allColumns" /> from wx_offline_activity_item | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| <select id="findIds" parameterType="com.iformall.domain.po.WxOfflineActivityItem" resultType="Long"> | |||
| select id from wx_offline_activity_item | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| <delete id="delete" parameterType="com.iformall.domain.po.WxOfflineActivityItem"> | |||
| delete from wx_offline_activity_item | |||
| <include refid="dynamicWhereConditions" /> | |||
| </delete> | |||
| </mapper> | |||
| @@ -0,0 +1,107 @@ | |||
| <?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.WxOfflineActivityMapper"> | |||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxOfflineActivity"> | |||
| <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="name" column="name" jdbcType="VARCHAR"/> | |||
| <result property="startTime" column="start_time" jdbcType="TIMESTAMP"/> | |||
| <result property="endTime" column="end_time" jdbcType="TIMESTAMP"/> | |||
| <result property="status" column="status" jdbcType="SMALLINT"/> | |||
| <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/> | |||
| <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/> | |||
| <result property="allMerchant" column="all_merchant" jdbcType="SMALLINT"/> | |||
| </resultMap> | |||
| <sql id="allColumns"> | |||
| id,tenant_id,parent_tenant_id, | |||
| `name`,start_time,end_time, | |||
| status,create_date,update_date, | |||
| all_merchant | |||
| </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 != begin"> | |||
| and `start_time` >= #{begin} | |||
| </if> | |||
| <if test=" null != end"> | |||
| and `end_time` <= #{end} | |||
| </if> | |||
| <if test=" null != allMerchant"> | |||
| and `all_merchant` = #{allMerchant} | |||
| </if> | |||
| <!-- 未过期 --> | |||
| <if test=" 0 == validStatus"> | |||
| and end_time >= now() | |||
| </if> | |||
| <!-- 已过期 --> | |||
| <if test=" 1 == validStatus"> | |||
| and end_time <= now() | |||
| </if> | |||
| <if test=" null != name and name != '' "> | |||
| and `name` like concat('%', #{name},'%') | |||
| </if> | |||
| <if test=" null != status "> | |||
| and `status` = #{status} | |||
| </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="selectById" parameterType="java.util.HashMap" resultMap="BaseResultMap"> | |||
| select <include refid="allColumns" /> from wx_offline_activity where id = #{id} and tenant_id=#{tenantId} | |||
| </select> | |||
| <select id="findList" parameterType="com.iformall.domain.po.WxOfflineActivity" resultMap="BaseResultMap"> | |||
| select <include refid="allColumns" /> from wx_offline_activity | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| <select id="findIds" parameterType="com.iformall.domain.po.WxOfflineActivity" resultType="Long"> | |||
| select id from wx_offline_activity | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| <update id="updateStatus" parameterType="com.iformall.domain.po.WxOfflineActivity"> | |||
| update wx_offline_activity | |||
| set `status` = #{status}, | |||
| `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> | |||
| @@ -0,0 +1,84 @@ | |||
| <?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.WxOfflineActivityMerchantMapper"> | |||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxOfflineActivityMerchant"> | |||
| <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="merchantId" column="merchant_id" jdbcType="BIGINT"/> | |||
| <result property="whetherIn" column="whether_in" jdbcType="SMALLINT"/> | |||
| <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, | |||
| activity_id,merchant_id,whether_in,create_date, | |||
| update_date | |||
| </sql> | |||
| <sql id="dynamicWhereConditions"> | |||
| where 1 = 1 | |||
| <if test=" null != id "> | |||
| and `id` = #{id} | |||
| </if> | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <if test=" null != activityId "> | |||
| and `activity_id` = #{activityId} | |||
| </if> | |||
| <if test=" null != merchantId "> | |||
| and `merchant_id` = #{merchantId} | |||
| </if> | |||
| <if test=" null != whetherIn "> | |||
| and `whether_in` = #{whetherIn} | |||
| </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="selectById" parameterType="java.util.HashMap" resultMap="BaseResultMap"> | |||
| select <include refid="allColumns" /> from wx_offline_activity_merchant where id = #{id} and tenant_id=#{tenantId} | |||
| </select> | |||
| <select id="findList" parameterType="com.iformall.domain.po.WxOfflineActivityMerchant" resultMap="BaseResultMap"> | |||
| select <include refid="allColumns" /> from wx_offline_activity_merchant | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| <delete id="delete" parameterType="com.iformall.domain.po.WxOfflineActivityMerchant"> | |||
| delete from wx_offline_activity_merchant | |||
| where `activity_id` = #{activityId} | |||
| <if test=" null != merchantId "> | |||
| and `merchant_id` = #{merchantId} | |||
| </if> | |||
| </delete> | |||
| <select id="merchantCount" parameterType="com.iformall.domain.po.WxOfflineActivityMerchant" resultType="Integer"> | |||
| select count(1) from wx_offline_activity_merchant | |||
| <include refid="dynamicWhereConditions" /> | |||
| </select> | |||
| <select id="findActivityIdList" parameterType="java.util.HashMap" resultType="Long"> | |||
| select activity_id from wx_offline_activity_merchant where merchant_id = #{merchantId} and tenant_id=#{tenantId} | |||
| </select> | |||
| </mapper> | |||