diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/HomeController.java b/mallinkAdmin/src/main/java/com/iformall/controller/HomeController.java index 1a2e50b87..32f7b0be4 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/HomeController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/HomeController.java @@ -71,15 +71,8 @@ public class HomeController extends BaseController { @Autowired private MallUserActionService mallUserActionService; - @Autowired - private WxBillAllService wxBillAllService; - @GetMapping("/captcha.jpg") public void captcha(HttpServletResponse response)throws ServletException, IOException { -// //todo 测试 -// wxBillAllService.getOweBillForEmail(); - - logger.debug("[" + getIpAddr() + "] HomeController::captcha"); response.setHeader("Cache-Control", "no-store, no-cache"); response.setContentType("image/jpeg"); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxTopicController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxTopicController.java index 97572d7f5..08a7fd223 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxTopicController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxTopicController.java @@ -31,12 +31,14 @@ public class WxTopicController extends BaseController { String tenantId = getTenantId(); wxTopic.setTenantId(tenantId); PageInfo page = wxTopicService.listAsPage(wxTopic, pageNum, pageSize); -// Date now = new Date(); -// page.getList().stream().forEach(cc->{ -// if (cc.getEndTime()!=null && now.getTime() > cc.getEndTime().getTime()) { -// cc.setStatus(EnumWxTopicStatus.INVAILD.getCode()); -// } -// }); + + //设置正在上架的专题 + Date now = new Date(); + page.getList().stream().forEach(cc->{ + if (cc.getEndTime()!=null && cc.getBeginTime()!=null && now.getTime() >= cc.getBeginTime().getTime() && now.getTime() <= cc.getEndTime().getTime()) { + cc.setIsOnline(1); + } + }); return new ResultData(page); } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxTopicController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxTopicController.java index 407b931b7..ef3ccc57e 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxTopicController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxTopicController.java @@ -2,14 +2,12 @@ package com.iformall.controller; import com.iformall.common.ResultData; import com.iformall.domain.po.WxTopic; -import com.iformall.enums.EnumWxTopicStatus; import com.iformall.service.WxTopicService; import io.swagger.annotations.Api; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.Date; @RestController @RequestMapping("/api/topic") diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/BillNotificationSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/BillNotificationSchedule.java index 52babae45..3f0a46bea 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/BillNotificationSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/BillNotificationSchedule.java @@ -55,7 +55,7 @@ public class BillNotificationSchedule { sendWaitPayBill(); wxBillAllService.sendWaitPayBillEmail(); sendOweBill(); - wxBillAllService.getOweBillForEmail(); + wxBillAllService.sendOweBillForEmail(); logger.info("账单通知任务结束"); } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponTopic.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponTopic.java deleted file mode 100644 index bddf29211..000000000 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponTopic.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.iformall.domain.po; - -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; -import java.io.Serializable; -import java.util.Date; - -@Table(name = "wx_coupon_topic") -public class WxCouponTopic implements Serializable { - private static final long serialVersionUID = 1L; - - @Id - protected Long id; - @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") - private String tenantId; - @io.swagger.annotations.ApiModelProperty(value="专题ID",name="topicId") - private Long topicId; - @io.swagger.annotations.ApiModelProperty(value="业务类型1通用卷2满减卷3代金卷4礼品卷5停车卷6砍价商品7拼团商品",name="busType") - private String busType; - @io.swagger.annotations.ApiModelProperty(value="租户ID",name="busId") - private String busId; - @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createtime") - private Date createtime; - @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updatetime") - private Date updatetime; - - @io.swagger.annotations.ApiModelProperty(value="卷名称",name="couponName") - @Transient - private String couponName; - @io.swagger.annotations.ApiModelProperty(value="卷封面图片",name="couponPic") - @Transient - private String couponPic; - @io.swagger.annotations.ApiModelProperty(value="卷id",name="couponId") - @Transient - private String couponId; - - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - - public String getCouponName() { - return couponName; - } - - public void setCouponName(String couponName) { - this.couponName = couponName; - } - - public String getCouponPic() { - return couponPic; - } - - public void setCouponPic(String couponPic) { - this.couponPic = couponPic; - } - - public String getCouponId() { - return couponId; - } - - public void setCouponId(String couponId) { - this.couponId = couponId; - } - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getTenantId() { - return tenantId; - } - - public void setTenantId(String tenantId) { - this.tenantId = tenantId; - } - - public Long getTopicId() { - return topicId; - } - - public void setTopicId(Long topicId) { - this.topicId = topicId; - } - - public String getBusType() { - return busType; - } - - public void setBusType(String busType) { - this.busType = busType; - } - - public String getBusId() { - return busId; - } - - public void setBusId(String busId) { - this.busId = busId; - } -} 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 ecb2c05d8..8e2daa2ee 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxTopic.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxTopic.java @@ -64,6 +64,17 @@ public class WxTopic implements Serializable { //查询下架状态 @Transient private boolean queryDownLineStatus; + @io.swagger.annotations.ApiModelProperty(value="上架标志 1正在上架",name="isOnline") + @Transient + private Integer isOnline; + + public Integer getIsOnline() { + return isOnline; + } + + public void setIsOnline(Integer isOnline) { + this.isOnline = isOnline; + } public boolean isQueryDownLineStatus() { return queryDownLineStatus; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java index 4fe09053d..484e094e0 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java @@ -11,7 +11,8 @@ public enum EnumCouponChannelType { COUPON_CHANNEL_ID_GAME(4, "游戏"), COUPON_CHANNEL_ID_CARD(5, "卡频道"), COUPON_CHANNEL_ID_PRESS(6, "砍价频道"), - COUPON_CHANNEL_ID_ORDER_GROUP(7, "拼团频道") + COUPON_CHANNEL_ID_ORDER_GROUP(7, "拼团频道"), + COUPON_CHANNEL_ID_TOPIC(8, "专题") ; public static EnumCouponChannelType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumWxTopicStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumWxTopicStatus.java index 612baf774..42c2e6c2f 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumWxTopicStatus.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumWxTopicStatus.java @@ -5,8 +5,9 @@ package com.iformall.enums; * 状态1生效2失效3作废 */ public enum EnumWxTopicStatus { - VAILD(1, "有效"), - INVAILD(2, "无效"), + DEF(0, "保存"), + VAILD(1, "上架"), + INVAILD(2, "下架"), CANCLE(3, "作废") ; diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java index 878ddcff9..79edd18fc 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java @@ -2,6 +2,7 @@ package com.iformall.mapper; import java.util.*; import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxTopic; import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponChannelVo; import com.iformall.domain.po.WxCouponChannel; @@ -28,5 +29,6 @@ public interface WxCouponChannelMapper extends CommonMapper { List findCouponByTopic(WxTopic wxTopic); + + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponTopicMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponTopicMapper.java deleted file mode 100644 index e2e2b45d5..000000000 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponTopicMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.iformall.mapper; - -import com.iformall.common.CommonMapper; -import com.iformall.domain.po.WxCoupon; -import com.iformall.domain.po.WxCouponTopic; -import com.iformall.domain.po.WxTopic; - -import java.util.List; - -public interface WxCouponTopicMapper extends CommonMapper { - - void del(WxCouponTopic couponTopic); - - List findList(WxTopic wxTopic); -} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxTopicMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxTopicMapper.java index 5c45c845d..bdf0dd15f 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxTopicMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxTopicMapper.java @@ -11,5 +11,5 @@ public interface WxTopicMapper extends CommonMapper { WxTopic show(WxTopic record); - void updateStatus(); + void updateStatus(WxTopic record); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxBillAllService.java b/mallinkService/src/main/java/com/iformall/service/WxBillAllService.java index 22f514d52..9107cb3a5 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxBillAllService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxBillAllService.java @@ -34,5 +34,5 @@ public interface WxBillAllService { /** * 发送欠缴通知邮件 */ - void getOweBillForEmail(); + void sendOweBillForEmail(); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java index af8adcad3..86dd114fd 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java @@ -640,12 +640,63 @@ public class WxBillAllServiceImpl implements WxBillAllService { mqBaseProducer.sendMessage(mailMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); } } - } } @Override - public void getOweBillForEmail() { - wxBillAllMapper.getOweBillForEmail(); + public void sendOweBillForEmail() { + List> oweBillForEmail = wxBillAllMapper.getOweBillForEmail(); + + if(CollectionUtils.isNotEmpty(oweBillForEmail)) { + Map>> merchantMap = toMap(oweBillForEmail); + for (Long merchantId : merchantMap.keySet()) { + List> mapList = merchantMap.get(merchantId); + if(CollectionUtils.isNotEmpty(mapList)){ + String email = (String)mapList.get(0).get("email"); + if(StringUtils.isBlank(email)){ + continue; + } + String tenantId = (String)mapList.get(0).get("tenantId"); + String receiveDate = (String)mapList.get(0).get("receiveDate"); + String manager = (String)mapList.get(0).get("manager"); + String managerPhone = (String)mapList.get(0).get("managerPhone"); + Integer expiredDay = (Integer)mapList.get(0).get("expiredDay"); + + String billListStr = ""; + BigDecimal sumNeedPay = new BigDecimal(0); + for (Map bill : mapList) { + String billType = bill.get("billType").toString(); + BigDecimal needPay = (BigDecimal) bill.get("owe"); + BigDecimal price = needPay.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); + + sumNeedPay = sumNeedPay.add(price); + billListStr += "
"; + billListStr += "
"; + billListStr += "
" + billType + "
"; + billListStr += "
" + price + "
"; + billListStr += "
" + receiveDate + "
"; + billListStr += "
" + expiredDay + "
"; + billListStr += "
"; + } + //发邮件 + Map map = new HashedMap(); + map.put("price", sumNeedPay.toString()); + map.put("date", receiveDate); + map.put("billList", billListStr); + map.put("linkName",manager==null?"":manager); + map.put("linkPhone",managerPhone==null?"":managerPhone); + MailMsg mailMsg = new MailMsg(); + mailMsg.setSubject("欠缴账单通知"); + mailMsg.setHtml(true); + mailMsg.setMsgType(EnumMsgRecordType.EMAIL.getCode()); + mailMsg.setModelId(EnumMailMsgModel.MAIL_BILL_OWE.getCode()); + mailMsg.setTo(new String[]{email}); + mailMsg.setTenantId(tenantId); + mailMsg.setDynamicContentMap(map); + mqBaseProducer.sendMessage(mailMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); + } + } + } + } } 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 21d9d5b7e..88386a831 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxTopicServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxTopicServiceImpl.java @@ -6,20 +6,21 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.Result; -import com.iformall.domain.po.WxCouponTopic; +import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.WxCouponChannel; import com.iformall.domain.po.WxTopic; +import com.iformall.enums.EnumCouponChannelType; import com.iformall.enums.EnumWxTopicStatus; +import com.iformall.mapper.WxCouponChannelMapper; import com.iformall.mapper.WxCouponMapper; -import com.iformall.mapper.WxCouponTopicMapper; import com.iformall.mapper.WxTopicMapper; import com.iformall.service.WxTopicService; +import com.iformall.utils.DateUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import com.iformall.common.ResultData; import org.springframework.stereotype.Service; - import java.util.ArrayList; -import java.util.Arrays; import java.util.Date; import java.util.List; @@ -32,30 +33,13 @@ public class WxTopicServiceImpl implements WxTopicService { @Autowired private WxTopicMapper wxTopicMapper; @Autowired - private WxCouponTopicMapper wxCouponTopicMapper; - @Autowired private WxCouponMapper wxCouponMapper; - -// public void isQueryDownLineStatus(WxTopic record){ -// record.setQueryDownLineStatus(false); -// if(record.getStatus().equals(EnumWxTopicStatus.INVAILD.getCode())){ -// record.setQueryDownLineStatus(true); -// return; -// } -// if(StringUtils.isNotBlank(record.getStatusStr())){ -// String[] array = record.getStatusStr().split(","); -// for (String status:array) { -// if(status.equals(EnumWxTopicStatus.INVAILD.getCode().toString())){ -// record.setQueryDownLineStatus(true); -// break; -// } -// } -// } -// } + @Autowired + private WxCouponChannelMapper wxCouponChannelMapper; @Override public PageInfo listAsPage(WxTopic record, Integer pageIndex, Integer pageSize) { - wxTopicMapper.updateStatus(); + wxTopicMapper.updateStatus(record); if(StringUtils.isNotBlank(record.getStatusStr())){ String[] array = record.getStatusStr().split(","); List integerList = new ArrayList<>(); @@ -71,7 +55,7 @@ public class WxTopicServiceImpl implements WxTopicService { public WxTopic show(WxTopic record) { WxTopic wxTopic = wxTopicMapper.show(record); if(wxTopic != null) { - wxTopic.setCouponList(wxCouponTopicMapper.findList(wxTopic)); + wxTopic.setCouponList(wxCouponMapper.findCouponByTopic(record)); } return wxTopic; } @@ -88,22 +72,16 @@ public class WxTopicServiceImpl implements WxTopicService { } return new ResultData(Result.SUCCESS,"添加成功"); } else { - if(record.getStatus().equals(1)) { - WxTopic queryTopic = new WxTopic(); - queryTopic.setStatus(1); - queryTopic.setTenantId(record.getTenantId()); - if (wxTopicMapper.findList(queryTopic).size() > 0) { - return new ResultData(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION.getCode(), "已有正在投放的专题"); + if(record.getStatus().equals(EnumWxTopicStatus.VAILD.getCode())) { + WxTopic showTopic = wxTopicMapper.show(record); + if (showTopic != null) { + return new ResultData(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION.getCode(), "["+showTopic.getName()+"]正在活动中,截止至"+ DateUtils.date2String(showTopic.getEndTime(),"yyyy-MM-dd")); } } - record.setUpdatetime(new Date()); wxTopicMapper.updateByPrimaryKeySelective(record); if(StringUtils.isNotBlank(record.getCouponIds())) { - WxCouponTopic delCouponTopic = new WxCouponTopic(); - delCouponTopic.setTopicId(record.getId()); - wxCouponTopicMapper.del(delCouponTopic); - + wxCouponChannelMapper.delByTopic(record); addCouponTopic(record); } return new ResultData(Result.SUCCESS,"更新成功"); @@ -112,15 +90,20 @@ public class WxTopicServiceImpl implements WxTopicService { public void addCouponTopic(WxTopic record){ for (String couponId:JSONArray.parseArray(record.getCouponIds(), String.class)) { - String[] couponArray = couponId.split("-"); - WxCouponTopic couponTopic = new WxCouponTopic(); - couponTopic.setBusType(couponArray[0]); - couponTopic.setBusId(couponArray[1]); - couponTopic.setTenantId(record.getTenantId()); - couponTopic.setTopicId(record.getId()); final IdWorker idWorker = IdWorker.get(); - couponTopic.setId(idWorker.nextId()); - wxCouponTopicMapper.insertSelective(couponTopic); + String[] couponArray = couponId.split("-"); + //保存coupon_channel + WxCoupon wxCoupon = wxCouponMapper.selectByPrimaryKey(Long.parseLong(couponArray[1])); + WxCouponChannel wxCouponChannel = new WxCouponChannel(); + wxCouponChannel.setId(idWorker.nextId()); + wxCouponChannel.setBeginTime(record.getBeginTime()); + wxCouponChannel.setEndTime(record.getEndTime()); + wxCouponChannel.setCouponId(Long.parseLong(couponArray[1])); + wxCouponChannel.setSubTargetId(record.getId()); + wxCouponChannel.setTenantId(record.getTenantId()); + wxCouponChannel.setTitle(wxCoupon.getTitle()); + wxCouponChannel.setTargetAd(EnumCouponChannelType.COUPON_CHANNEL_ID_TOPIC.getCode()); + wxCouponChannelMapper.insertSelective(wxCouponChannel); } } diff --git a/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml b/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml index 6cbdfc8bc..3bc94994a 100644 --- a/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml @@ -355,7 +355,7 @@ diff --git a/mallinkService/src/main/resources/mapper/WxCouponTopicMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponTopicMapper.xml deleted file mode 100644 index a3cae28bf..000000000 --- a/mallinkService/src/main/resources/mapper/WxCouponTopicMapper.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - where 1 = 1 - - and `id` = #{id} - - - - and `tenant_id` = #{tenantId} - - - and `status` = #{status} - - - - and `name` like concat('%', #{name},'%') - - - and `begin_time` >= #{beginTime} - - - and `end_time` <= #{endTime} - - order by createtime desc - - - - - - - delete from wx_coupon_topic where topic_id = #{topicId} - - - - - diff --git a/mallinkService/src/main/resources/mapper/WxTopicMapper.xml b/mallinkService/src/main/resources/mapper/WxTopicMapper.xml index 05b188906..87a4389ce 100644 --- a/mallinkService/src/main/resources/mapper/WxTopicMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxTopicMapper.xml @@ -47,7 +47,7 @@ #{statusItem} - order by createtime desc + order by begin_time desc,status asc select * from wx_topic t where t.status = 1 and now() >= t.begin_time and now() <= t.end_time - order by t.createtime desc limit 1 + order by t.begin_time desc limit 1 - - update wx_topic set status = 2 where now() >= end_time and status !=3 + + update wx_topic set status = 2 where now() >= end_time and status not in (2,3) and tenant_id = #{tenantId}