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