diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909191300__AD_ADD_EXTINFO.sql b/mallinkAdmin/src/main/resources/db/migration/V201909191300__AD_ADD_EXTINFO.sql new file mode 100644 index 000000000..09bf2ed6a --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201909191300__AD_ADD_EXTINFO.sql @@ -0,0 +1,2 @@ +ALTER TABLE `wx_screen_ad` +ADD COLUMN `ext_info` JSON NULL DEFAULT NULL AFTER `target_id`; diff --git a/mallinkCallback/src/main/java/com/iformall/controller/device/WxDeviceScreenAdController.java b/mallinkCallback/src/main/java/com/iformall/controller/device/WxDeviceScreenAdController.java index 0664d7ce3..f8c8e9c00 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/device/WxDeviceScreenAdController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/device/WxDeviceScreenAdController.java @@ -44,6 +44,9 @@ public class WxDeviceScreenAdController extends BaseController { @Autowired private WxCampaignService wxCampaignService; + @Autowired + private WxMerchantService wxMerchantService; + @Autowired private WxCouponChannelService wxCouponChannelService; @@ -82,6 +85,8 @@ public class WxDeviceScreenAdController extends BaseController { target = wxCouponChannelService.findDetailVo(s.getTargetId()); else if (s.getType().equals(EnumScreenAdType.CAMPAIGN.getCode())) target = wxCampaignService.getById(s.getTargetId()); + else if (s.getType().equals(EnumScreenAdType.MERCHANT.getCode())) + target = wxMerchantService.getById(s.getTargetId()); s.setTarget(target); }); return new ResultData(page); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxScreenAd.java b/mallinkService/src/main/java/com/iformall/domain/po/WxScreenAd.java index d317eee00..3d8012515 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxScreenAd.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxScreenAd.java @@ -43,6 +43,9 @@ public class WxScreenAd extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value="广告目标ID: couponChannelId or campaignId",name="targetId") private Long targetId; + @io.swagger.annotations.ApiModelProperty(value="扩展信息",name="ExtInfo") + private String ExtInfo; + @TableField(exist = false) protected Object target; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumScreenAdType.java b/mallinkService/src/main/java/com/iformall/enums/EnumScreenAdType.java index d7b42b1b5..d14ad34ec 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumScreenAdType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumScreenAdType.java @@ -7,7 +7,9 @@ public enum EnumScreenAdType { COUPON(0, "券"), CAMPAIGN(1, "宣传页"), - PICTURE(2, "图片"),; + PICTURE(2, "图片"), + MERCHANT(3, "商户"); + public static EnumScreenAdType getEnum(Integer code) { for (EnumScreenAdType value : values()) { if (value.getCode().equals(code)) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxScreenAdServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxScreenAdServiceImpl.java index 4c46e3260..cda357ce5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxScreenAdServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxScreenAdServiceImpl.java @@ -1,16 +1,14 @@ package com.iformall.service.impl; import cn.binarywang.wx.miniapp.api.WxMaService; +import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; -import com.iformall.domain.po.WxAppinfo; -import com.iformall.domain.po.WxCampaign; -import com.iformall.domain.po.WxCouponChannel; -import com.iformall.domain.po.WxScreenAd; +import com.iformall.domain.po.*; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.enums.EnumCouponChannelType; import com.iformall.enums.EnumScreenAdType; @@ -18,6 +16,7 @@ import com.iformall.mapper.WxCampaignMapper; import com.iformall.mapper.WxCouponChannelMapper; import com.iformall.mapper.WxScreenAdMapper; import com.iformall.service.WxAppinfoService; +import com.iformall.service.WxMerchantService; import com.iformall.service.WxScreenAdService; import com.iformall.service.wechat.FmOpenService; import com.iformall.utils.MaUtil; @@ -43,6 +42,9 @@ public class WxScreenAdServiceImpl implements WxScreenAdService { @Autowired WxCouponChannelMapper wxCouponChannelMapper; + @Autowired + WxMerchantService wxMerchantService; + @Autowired WxCampaignMapper wxCampaignMapper; @@ -83,6 +85,19 @@ public class WxScreenAdServiceImpl implements WxScreenAdService { } else if (record.getType().equals(EnumScreenAdType.PICTURE.getCode())) { if (record.getCoverImg() == null) return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); + } else if (record.getType().equals(EnumScreenAdType.MERCHANT.getCode())) { + if (record.getExtInfo() == null) + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); + JSONObject jo = JSONObject.parseObject(record.getExtInfo()); + if (jo == null) + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); + if (jo.getInteger("executionIndex") == null || jo.getInteger("populationIndex") == null) + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); + WxMerchant wxMerchant = wxMerchantService.getById(record.getTargetId()); + if (wxMerchant == null) + return new ResultData(ErrorCode.COUPON_ORDER_IS_NULL); + record.setCoverImg(wxMerchant.getImgUrl()); + record.setTitle(wxMerchant.getName()); } final IdWorker idWorker = IdWorker.get(); diff --git a/mallinkService/src/main/resources/mapper/WxScreenAdMapper.xml b/mallinkService/src/main/resources/mapper/WxScreenAdMapper.xml index 8e9929502..7849409ac 100644 --- a/mallinkService/src/main/resources/mapper/WxScreenAdMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxScreenAdMapper.xml @@ -12,10 +12,11 @@ + - `id`, `tenant_id`, `title`, `type`, `sub_type`, `status`, `create_date`, `update_date`, `cover_img`, `target_id` + `id`, `tenant_id`, `title`, `type`, `sub_type`, `status`, `create_date`, `update_date`, `cover_img`, `target_id`, `ext_info` @@ -62,7 +63,6 @@ - and id in