diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxTopicController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxTopicController.java index 3a730c4d7..d6a290540 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxTopicController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxTopicController.java @@ -2,14 +2,17 @@ package com.iformall.controller.market; import com.github.pagehelper.PageInfo; import com.iformall.annotation.SystemControllerLog; +import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.*; import com.iformall.enums.EnumWxTopicStatus; +import com.iformall.enums.EnumWxTopicType; import com.iformall.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -32,6 +35,7 @@ public class WxTopicController extends BaseController { public ResultData list(WxTopic wxTopic, Integer pageNum, Integer pageSize) { logger.debug("[" + getIpAddr() + "] WxTopicController::list"); wxTopic.updateTenantInfo(getTenantInfo()); + wxTopic.setTopicType(EnumWxTopicType.SPECIAL_TOPIC.getCode()); PageInfo page = wxTopicService.listAsPage(wxTopic, pageNum, pageSize); //可投放、已上线,时间区间查的是活动开始时间 @@ -59,13 +63,45 @@ public class WxTopicController extends BaseController { return new ResultData(queryTopic); } + @PostMapping("saveOrUpdate") @SystemControllerLog(description = "专题-保存更新") public ResultData saveOrUpdate(@RequestBody WxTopic wxTopic) { logger.debug("[" + getIpAddr() + "] WxTopicController::saveOrUpdate"); wxTopic.updateTenantInfo(getTenantInfo()); + if(wxTopic.getTopicType() == null){ + wxTopic.setTopicType(EnumWxTopicType.SPECIAL_TOPIC.getCode()); + } return wxTopicService.saveOrUpdate(wxTopic); } + @GetMapping("findByType") + @SystemControllerLog(description = "专题-获取详情") + public ResultData findByType(Integer topicType) { + logger.debug("[" + getIpAddr() + "] WxTopicController::findByType"); + if(topicType == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + WxTopic wxTopic = new WxTopic(); + wxTopic.updateTenantInfo(getTenantInfo()); + wxTopic.setTopicType(topicType); + WxTopic queryTopic = wxTopicService.findByType(wxTopic); + return new ResultData(queryTopic); + } + + @PostMapping("updateByType") + @SystemControllerLog(description = "专题-保存更新") + public ResultData updateByType(@RequestBody WxTopic wxTopic) { + logger.debug("[" + getIpAddr() + "] WxTopicController::updateByType"); + wxTopic.updateTenantInfo(getTenantInfo()); + if(wxTopic.getTopicType() == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + wxTopic.setName(EnumWxTopicType.getEnum(wxTopic.getTopicType()).getMessage()); + if(StringUtils.isBlank(wxTopic.getName())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); + } + return wxTopicService.saveOrUpdate(wxTopic); + } } diff --git a/mallinkAdmin/src/main/resources/db/migration/V2021120900001__add_topic_type.sql b/mallinkAdmin/src/main/resources/db/migration/V2021120900001__add_topic_type.sql new file mode 100644 index 000000000..0dfb12edd --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2021120900001__add_topic_type.sql @@ -0,0 +1,2 @@ +ALTER TABLE `mallink`.`wx_topic` + ADD COLUMN `topic_type` smallint(3) NOT NULL DEFAULT 1 COMMENT 'EnumWxTopicType' AFTER `parent_tenant_id`; \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxTopic.java b/mallinkService/src/main/java/com/iformall/domain/po/WxTopic.java index c0709fcf7..ea284a944 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxTopic.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxTopic.java @@ -3,6 +3,7 @@ package com.iformall.domain.po; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumWxTopicType; import com.iformall.utils.Constant; import lombok.Data; import lombok.EqualsAndHashCode; @@ -19,6 +20,8 @@ public class WxTopic extends TenantEntity { protected Long id; + @io.swagger.annotations.ApiModelProperty(value="专题类型",name="topicType") + private Integer topicType; @io.swagger.annotations.ApiModelProperty(value="名称",name="name") private String name; @io.swagger.annotations.ApiModelProperty(value="标题",name="title") @@ -81,12 +84,16 @@ public class WxTopic extends TenantEntity { public String getWeappPath() { if(id == null) return Constant.mainPageUrl; - return Constant.mainPageUrl + "?type=td&id="+id; + if(EnumWxTopicType.SPECIAL_TOPIC.getCode().equals(topicType)) + return Constant.mainPageUrl + "?type=td&id="+id; + return Constant.mainPageUrl; } public String getWeappScene() { if(id == null) return ""; - return "t:td:" + id; + if(EnumWxTopicType.SPECIAL_TOPIC.getCode().equals(topicType)) + return "t:td:" + id; + return ""; } } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumWxTopicType.java b/mallinkService/src/main/java/com/iformall/enums/EnumWxTopicType.java new file mode 100644 index 000000000..8c0cb30a3 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumWxTopicType.java @@ -0,0 +1,40 @@ +package com.iformall.enums; + +/** + * Created by + */ +public enum EnumWxTopicType { + SPECIAL_TOPIC(1, "默认专题"), + FLASH_SALE(2, "限时抢购"), + PRESS(3, "砍价专区"), + GROUP(4, "拼团专区"), + CARD_MULTIMCH(5, "消费卡"), + CREDIT(6, "积分商城"), + ; + + + public static EnumWxTopicType getEnum(Integer code) { + for (EnumWxTopicType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumWxTopicType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxTopicService.java b/mallinkService/src/main/java/com/iformall/service/WxTopicService.java index 25697d582..399bd223c 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxTopicService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxTopicService.java @@ -26,5 +26,5 @@ public interface WxTopicService { WxTopic findById(WxTopic record); - + WxTopic findByType(WxTopic wxTopic); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxTopicServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxTopicServiceImpl.java index 8534a171d..023bcdb96 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxTopicServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxTopicServiceImpl.java @@ -12,6 +12,7 @@ import com.iformall.domain.po.WxTopic; import com.iformall.enums.EnumCouponChannelType; import com.iformall.enums.EnumPayWay; import com.iformall.enums.EnumWxTopicStatus; +import com.iformall.enums.EnumWxTopicType; import com.iformall.mapper.WxCouponChannelMapper; import com.iformall.mapper.WxCouponMapper; import com.iformall.mapper.WxTopicMapper; @@ -109,19 +110,22 @@ public class WxTopicServiceImpl implements WxTopicService { record.setId(idWorker.nextId()); wxTopicMapper.insert(record); - if(StringUtils.isNotBlank(record.getCouponIds())) { + if(EnumWxTopicType.SPECIAL_TOPIC.getCode().equals(record.getTopicType()) + && StringUtils.isNotBlank(record.getCouponIds())) { addCouponTopic(record); } return new ResultData(Result.SUCCESS,"添加成功"); } else { record.setUpdatetime(new Date()); wxTopicMapper.updateById(record); - if(StringUtils.isNotBlank(record.getCouponIds())) { - //优化:区分添加的和删除的 - wxCouponChannelMapper.delByTopic(record); - addCouponTopic(record); + if(EnumWxTopicType.SPECIAL_TOPIC.getCode().equals(record.getTopicType())){ + if(StringUtils.isNotBlank(record.getCouponIds())) { + //优化:区分添加的和删除的 + wxCouponChannelMapper.delByTopic(record); + addCouponTopic(record); + } + wxTopicMapper.couponDownLine(record); } - wxTopicMapper.couponDownLine(record); return new ResultData(Result.SUCCESS,"更新成功"); } } @@ -166,20 +170,31 @@ public class WxTopicServiceImpl implements WxTopicService { @Override public WxTopic findById(WxTopic record) { WxTopic wxTopic = wxTopicMapper.selectById(record.getId()); - List wxCouponList = wxCouponMapper.findCouponByTopic(record); - wxTopic.setCouponList(wxCouponList); - String couponIds = ""; - if(CollectionUtils.isNotEmpty(wxCouponList)) { - for (int i = 0; i < wxCouponList.size(); i++) { - WxCoupon wxCoupon = wxCouponList.get(i); - if (i == wxCouponList.size() - 1) { - couponIds += wxCoupon.getType() +"-"+ wxCoupon.getId().toString(); - } else { - couponIds += wxCoupon.getType() +"-"+ wxCoupon.getId().toString() + ","; + if(EnumWxTopicType.SPECIAL_TOPIC.getCode().equals(record.getTopicType())){ + List wxCouponList = wxCouponMapper.findCouponByTopic(record); + wxTopic.setCouponList(wxCouponList); + String couponIds = ""; + if(CollectionUtils.isNotEmpty(wxCouponList)) { + for (int i = 0; i < wxCouponList.size(); i++) { + WxCoupon wxCoupon = wxCouponList.get(i); + if (i == wxCouponList.size() - 1) { + couponIds += wxCoupon.getType() +"-"+ wxCoupon.getId().toString(); + } else { + couponIds += wxCoupon.getType() +"-"+ wxCoupon.getId().toString() + ","; + } } + wxTopic.setCouponIds(couponIds); } - wxTopic.setCouponIds(couponIds); } return wxTopic; } + + @Override + public WxTopic findByType(WxTopic wxTopic) { + List list = wxTopicMapper.findList(wxTopic); + if(list != null && list.size() > 0){ + return list.get(0); + } + return null; + } } diff --git a/mallinkService/src/main/resources/mapper/WxTopicMapper.xml b/mallinkService/src/main/resources/mapper/WxTopicMapper.xml index 63c650ce7..88d55b292 100644 --- a/mallinkService/src/main/resources/mapper/WxTopicMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxTopicMapper.xml @@ -5,6 +5,7 @@ + @@ -22,7 +23,7 @@ - `id`,`tenant_id`,`parent_tenant_id`,`name`,`title`,`content`,`cover`,`cover_picture`,`detail_picture`,`advert`,`begin_time`,`end_time`,`createtime`,`updatetime`,`bg_color` + `id`,`tenant_id`,`parent_tenant_id`,`topic_type`,`name`,`title`,`content`,`cover`,`cover_picture`,`detail_picture`,`advert`,`begin_time`,`end_time`,`createtime`,`updatetime`,`bg_color` @@ -37,6 +38,10 @@ and `parent_tenant_id` = #{parentTenantId} + + and `topic_type` = #{topicType} + + and `begin_time` >= #{beginTime} @@ -83,7 +88,7 @@ select t.* from wx_topic t - where t.status = 1 + where t.status = 1 and t.`topic_type` = 1 and now() >= t.begin_time and now() <= t.end_time and t.tenant_id = #{tenantId} order by t.begin_time desc @@ -100,14 +105,14 @@ update wx_topic set status = 3 where id in( select t.id from ( - select id from wx_topic where status !=3 and now() >= end_time and tenant_id = #{tenantId} + select id from wx_topic where `topic_type` = 1 and status !=3 and now() >= end_time and tenant_id = #{tenantId} ) t ) update wx_coupon_channel set status = 1 where status = 0 and target_ad = 8 and sub_target_id in( - select id from wx_topic where status in(2,3) and tenant_id = #{tenantId} + select id from wx_topic where `topic_type` = 1 and status in(2,3) and tenant_id = #{tenantId} )