From 2ae0c06d27beb3f2de3dd7032f3fb262598f2bf3 Mon Sep 17 00:00:00 2001 From: masterspirit Date: Sun, 19 Aug 2018 15:55:12 +0800 Subject: [PATCH] =?UTF-8?q?[=E7=B2=BE=E5=87=86=E6=8A=95=E6=94=BE][?= =?UTF-8?q?=E6=96=B0=E5=A2=9E]=E6=94=AF=E6=8C=81=E7=B2=BE=E5=87=86?= =?UTF-8?q?=E6=8A=95=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CouponInjectController.java | 100 +++++++ .../com/simple/domain/po/CouponInject.java | 274 ++++++++++++++++++ .../com/simple/mapper/CouponInjectMapper.java | 17 ++ .../simple/service/CouponInjectService.java | 53 ++++ .../simple/service/WxCouponOrderService.java | 7 + .../service/impl/CouponInjectServiceImpl.java | 110 +++++++ .../impl/WxCouponOrderServiceImpl.java | 8 + .../resources/mapper/CouponInjectMapper.xml | 120 ++++++++ 8 files changed, 689 insertions(+) create mode 100644 mallinkAdmin/src/main/java/com/simple/controller/CouponInjectController.java create mode 100644 mallinkService/src/main/java/com/simple/domain/po/CouponInject.java create mode 100644 mallinkService/src/main/java/com/simple/mapper/CouponInjectMapper.java create mode 100644 mallinkService/src/main/java/com/simple/service/CouponInjectService.java create mode 100644 mallinkService/src/main/java/com/simple/service/impl/CouponInjectServiceImpl.java create mode 100644 mallinkService/src/main/resources/mapper/CouponInjectMapper.xml diff --git a/mallinkAdmin/src/main/java/com/simple/controller/CouponInjectController.java b/mallinkAdmin/src/main/java/com/simple/controller/CouponInjectController.java new file mode 100644 index 000000000..a6e7c959f --- /dev/null +++ b/mallinkAdmin/src/main/java/com/simple/controller/CouponInjectController.java @@ -0,0 +1,100 @@ +package com.simple.controller; + +import com.alibaba.fastjson.JSON; +import com.github.pagehelper.PageInfo; +import com.simple.common.Result; +import com.simple.common.ResultData; +import com.simple.domain.po.CouponInject; +import com.simple.service.CouponInjectService; +import com.simple.service.WxCUserTagsService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Api(description = "精准投放接口") +@RestController +@RequestMapping("couponInject") +public class CouponInjectController extends BaseController +{ + @Autowired + private CouponInjectService couponInjectService; + @Autowired + private WxCUserTagsService wxCUserTagsService; + + private Logger logger = Logger.getLogger(CouponInjectController.class); + + @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 CouponInject couponInject, Integer pageNum, Integer pageSize) { + if (null == couponInject) couponInject = new CouponInject(); + if(couponInject.getStatus()!=null&&couponInject.getStatus()==-1){ + couponInject.setStatus(null); + } + final PageInfo page = couponInjectService.listAsPage(couponInject, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation("新增接口") + @PostMapping("add") + public ResultData add(@RequestBody CouponInject couponInject) { + + couponInject.setTenantId(getUser().getTenantId()); + couponInject.setModelId(getUser().getId()); + if(couponInject.getSendType()==0){ + couponInject.setSendTime(new Date()); + } + //Assert.notNull(couponInject.getName(), "角色名不能为空"); + //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); + couponInjectService.add(couponInject); + return new ResultData(); + } + + @ApiOperation("根据id更新接口") + @PostMapping("update") + public ResultData update(@RequestBody CouponInject couponInject) { + String[] arys = couponInject.getTags().split(","); + List tagids = new ArrayList<>(); + for (int i = 0; i < arys.length; i++) { + tagids.add(Long.parseLong(arys[i])); + } + couponInject.setTags(JSON.toJSONString(arys)); + couponInjectService.saveOrUpdate(couponInject); + return new ResultData(); + } + + @ApiOperation("根据id删除接口") + @GetMapping("/del") + @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) + public ResultData delete(Long id) { + couponInjectService.deleteById(id); + return new ResultData(Result.SUCCESS, "删除成功", null); + } + + @ApiOperation("根据id查询接口") + @GetMapping("/findById") + @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) + public ResultData findById(Long id) { + + CouponInject couponInject = couponInjectService.getById(id); + if(couponInject!=null) { + List tagids = JSON.parseArray(couponInject.getTags(), Long.class); + couponInject.setWxChooseTagVo(wxCUserTagsService.findChooseTag(tagids)); + } + return new ResultData(Result.SUCCESS,"查询成功",couponInject); + } + + + +} diff --git a/mallinkService/src/main/java/com/simple/domain/po/CouponInject.java b/mallinkService/src/main/java/com/simple/domain/po/CouponInject.java new file mode 100644 index 000000000..1410c8c7e --- /dev/null +++ b/mallinkService/src/main/java/com/simple/domain/po/CouponInject.java @@ -0,0 +1,274 @@ +package com.simple.domain.po; + +import com.simple.domain.vo.WxChooseTagVo; + +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Table(name = "coupon_inject") +public class CouponInject implements Serializable { + private static final long serialVersionUID = 1L; + + @Id + protected Long id; + + @Transient + protected List ids; + @Transient + protected String sortColumns; + @Transient + protected Long modelId; + @Transient + private WxChooseTagVo wxChooseTagVo; + + public WxChooseTagVo getWxChooseTagVo() { + return wxChooseTagVo; + } + + public void setWxChooseTagVo(WxChooseTagVo wxChooseTagVo) { + this.wxChooseTagVo = wxChooseTagVo; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getSortColumns() { + return sortColumns; + } + + public List getIds() { + return ids; + } + + public void setIds(List ids) { + this.ids = ids; + } + + + + /***/ + @io.swagger.annotations.ApiModelProperty(value="",name="tenantId") + private String tenantId; + /*任务名称**/ + @io.swagger.annotations.ApiModelProperty(value="任务名称",name="name") + private String name; + /***/ + @io.swagger.annotations.ApiModelProperty(value="",name="mUserId") + private String mUserId; + /*发送方式0:立即发送 1:定时发送**/ + @io.swagger.annotations.ApiModelProperty(value="发送方式0:立即发送 1:定时发送",name="sendType") + private Integer sendType; + /*券id**/ + @io.swagger.annotations.ApiModelProperty(value="券id",name="couponId") + private Long couponId; + /*券名称**/ + @io.swagger.annotations.ApiModelProperty(value="券名称",name="couponName") + private String couponName; + /*发送时间**/ + @io.swagger.annotations.ApiModelProperty(value="发送时间",name="sendTime") + private Date sendTime; + @Transient + private Date sendTimeStart; + @Transient + private Date sendTimeEnd; + + public Date getSendTimeStart() { + return sendTimeStart; + } + + public void setSendTimeStart(Date sendTimeStart) { + this.sendTimeStart = sendTimeStart; + } + + public Date getSendTimeEnd() { + return sendTimeEnd; + } + + public void setSendTimeEnd(Date sendTimeEnd) { + this.sendTimeEnd = sendTimeEnd; + } + + /*实际发送数量**/ + @io.swagger.annotations.ApiModelProperty(value="实际发送数量",name="sendAmount") + private Integer sendAmount; + /*0:待发送1:已发送2:发送失败**/ + @io.swagger.annotations.ApiModelProperty(value="0:待发送1:已发送2:发送失败",name="status") + private Integer status; + /*发送失败原因**/ + @io.swagger.annotations.ApiModelProperty(value="发送失败原因",name="errorMsg") + private String errorMsg; + /*发送人群标签**/ + @io.swagger.annotations.ApiModelProperty(value="发送人群标签",name="tags") + private String tags; + /*创建时间**/ + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime") + private Date createTime; + /*修改时间**/ + @io.swagger.annotations.ApiModelProperty(value="修改时间",name="updateTime") + private Date updateTime; + public String getTenantId() { + return tenantId; + } + public void setTenantId(String _tenantId) { + tenantId = _tenantId; + } + public String getName() { + return name; + } + public void setName(String _name) { + name = _name; + } + public String getMUserId() { + return mUserId; + } + public void setMUserId(String _mUserId) { + mUserId = _mUserId; + } + public Integer getSendType() { + return sendType; + } + public void setSendType(Integer _sendType) { + sendType = _sendType; + } + public Long getCouponId() { + return couponId; + } + public void setCouponId(Long _couponId) { + couponId = _couponId; + } + public String getCouponName() { + return couponName; + } + public void setCouponName(String _couponName) { + couponName = _couponName; + } + public Date getSendTime() { + return sendTime; + } + public void setSendTime(Date _sendTime) { + sendTime = _sendTime; + } + public Integer getSendAmount() { + return sendAmount; + } + public void setSendAmount(Integer _sendAmount) { + sendAmount = _sendAmount; + } + public Integer getStatus() { + return status; + } + public void setStatus(Integer _status) { + status = _status; + } + public String getErrorMsg() { + return errorMsg; + } + public void setErrorMsg(String _errorMsg) { + errorMsg = _errorMsg; + } + public String getTags() { + return tags; + } + public void setTags(String _tags) { + tags = _tags; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date _createTime) { + createTime = _createTime; + } + public Date getUpdateTime() { + return updateTime; + } + public void setUpdateTime(Date _updateTime) { + updateTime = _updateTime; + } + public Long getModelId() { + return modelId; + } + + public void setModelId(Long modelId) { + this.modelId = modelId; + } + + + + public static enum Field + { + Id_ASC("`id` ASC"),Id_DESC("`id` DESC") + ,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC") + ,Name_ASC("`name` ASC"),Name_DESC("`name` DESC") + ,MUserId_ASC("`mUserId` ASC"),MUserId_DESC("`mUserId` DESC") + ,SendType_ASC("`sendType` ASC"),SendType_DESC("`sendType` DESC") + ,CouponId_ASC("`couponId` ASC"),CouponId_DESC("`couponId` DESC") + ,CouponName_ASC("`couponName` ASC"),CouponName_DESC("`couponName` DESC") + ,SendTime_ASC("`sendTime` ASC"),SendTime_DESC("`sendTime` DESC") + ,SendAmount_ASC("`sendAmount` ASC"),SendAmount_DESC("`sendAmount` DESC") + ,Status_ASC("`status` ASC"),Status_DESC("`status` DESC") + ,ErrorMsg_ASC("`errorMsg` ASC"),ErrorMsg_DESC("`errorMsg` DESC") + ,Tags_ASC("`tags` ASC"),Tags_DESC("`tags` DESC") + ,CreateTime_ASC("`createTime` ASC"),CreateTime_DESC("`createTime` DESC") + ,UpdateTime_ASC("`updateTime` ASC"),UpdateTime_DESC("`updateTime` DESC") + ; + private String value; + Field(String value){ + this.value = value; + } + public String getValue() { + return value; + } + public void setCol(String value) { + this.value = value; + } + @Override + public String toString() { + return this.getValue(); + } + } + + public void setSortColumns(CouponInject.Field... fields) + { + if (fields == null || fields.length == 0) { + return; + } + for (int k = 0; k < fields.length; k++) { + if (fields[k] == null) { + return; + } + } + StringBuilder sb = new StringBuilder(fields[0].toString()); + for (int k = 1; k < fields.length; k++) { + sb.append(","); + sb.append(fields[k].toString()); + } + + } + + public void setSortColumns(String sortColumns) + { + if (sortColumns == null || "".equals(sortColumns.trim())) { + return; + } + if (sortColumns.contains(",")) { + String[] cols = sortColumns.split(","); + List fList = new ArrayList(); + for (int k = 0; k < cols.length; k++) { + fList.add(Field.valueOf(cols[k])); + } + this.setSortColumns(fList.toArray(new Field[fList.size()])); + } else { + this.setSortColumns(Field.valueOf(sortColumns)); + } + } +} diff --git a/mallinkService/src/main/java/com/simple/mapper/CouponInjectMapper.java b/mallinkService/src/main/java/com/simple/mapper/CouponInjectMapper.java new file mode 100644 index 000000000..00da103a8 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/mapper/CouponInjectMapper.java @@ -0,0 +1,17 @@ +package com.simple.mapper; + +import com.simple.common.CommonMapper; +import com.simple.domain.po.CouponInject; + +import java.util.List; + +public interface CouponInjectMapper extends CommonMapper { + + List findList(CouponInject couponInject); + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/CouponInjectService.java b/mallinkService/src/main/java/com/simple/service/CouponInjectService.java new file mode 100644 index 000000000..5871fba32 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/CouponInjectService.java @@ -0,0 +1,53 @@ +package com.simple.service; + +import com.github.pagehelper.PageInfo; +import com.simple.domain.po.CouponInject; + +public interface CouponInjectService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param offset + * @param limit + * @return + */ + PageInfo listAsPage(CouponInject record, Integer pageIndex, Integer pageSize); + + /** + * 根据Id获得实体 + * + * @param id + * @return + */ + CouponInject getById(Long id); + + /** + * 保存或更新实体 + * + * @param record + */ + void saveOrUpdate(CouponInject record); + + /** + * 根据Id删除实体 + * + * @param id + */ + void deleteById(Long id); + /** + * 根据Id删除实体 + * + * @param id + */ + void add(CouponInject record); + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java index 897e2a2fe..c54954ba4 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java @@ -34,6 +34,13 @@ public interface WxCouponOrderService { */ void saveOrUpdate(WxCouponOrder record); + /** + * 返回id + * @param record + * @return + */ + Long insertOne(WxCouponOrder record); + /** * 根据Id删除实体 * diff --git a/mallinkService/src/main/java/com/simple/service/impl/CouponInjectServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/CouponInjectServiceImpl.java new file mode 100644 index 000000000..d5767a3b4 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/impl/CouponInjectServiceImpl.java @@ -0,0 +1,110 @@ +package com.simple.service.impl; + +import com.alibaba.fastjson.JSON; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.simple.common.IdWorker; +import com.simple.domain.po.*; +import com.simple.mapper.CouponInjectMapper; +import com.simple.service.CouponInjectService; +import com.simple.service.WxCUserTagsService; +import com.simple.service.WxCouponOrderService; +import com.simple.service.WxCouponService; +import org.apache.commons.lang.time.DateUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +@Service +public class CouponInjectServiceImpl implements CouponInjectService { + + @Autowired + CouponInjectMapper couponInjectMapper; + @Autowired + WxCouponOrderService wxCouponOrderService; + @Autowired + WxCouponService wxCouponService; + @Autowired + WxCUserTagsService wxCUserTagsService; + + + @Override + public PageInfo listAsPage(CouponInject record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> couponInjectMapper.findList(record)); + } + + @Override + public CouponInject getById(Long id) { + return couponInjectMapper.selectByPrimaryKey(id); + } + + @Override + public void saveOrUpdate(CouponInject record) { + if (record.getId() == null) { + //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); + final IdWorker idWorker = new IdWorker(0, 0); + record.setId(idWorker.nextId()); + couponInjectMapper.insertSelective(record); + } else { + couponInjectMapper.updateByPrimaryKeySelective(record); + } + } + + @Override + public void deleteById(Long id) { + couponInjectMapper.deleteByPrimaryKey(id); + } + + @Override + public void add(CouponInject record) { + WxCoupon wxCoupon = wxCouponService.getById(record.getCouponId()); + if (wxCoupon.getValidType() == 1) { //时间范围 + if (new Date().after(wxCoupon.getValidEndDate())) { + return; + } + } + final IdWorker idWorker = new IdWorker(0, 0); + record.setId(idWorker.nextId()); + record.setStatus(1); + couponInjectMapper.insertSelective(record); + + + String[] arys = record.getTags().split(","); + List tagids = new ArrayList<>(); + for (int i = 0; i < arys.length; i++) { + tagids.add(Long.parseLong(arys[i])); + } + + //查询标签用户 + List cUsers = wxCUserTagsService.findUserByTag(tagids); + record.setTags(JSON.toJSONString(arys)); + + for (WxCUser tempCUser : cUsers) { + WxCouponOrder wxCouponOrder = new WxCouponOrder(); + wxCouponOrder.setCouponId(record.getCouponId()); + wxCouponOrder.setCouponOrderStatus(0); + wxCouponOrder.setCUserId(tempCUser.getId()); + wxCouponOrder.setCouponPrice(0); + wxCouponOrder.setCreateDate(new Date()); + if (wxCoupon.getValidType() == 1) { //时间范围区间 + wxCouponOrder.setExpiredTime(wxCoupon.getValidEndDate()); + } else { + Date date = DateUtils.addDays(new Date(), wxCoupon.getValidDays()); + wxCouponOrder.setExpiredTime(date); + } + wxCouponOrder.setTenantId(wxCoupon.getTenantId()); + wxCouponOrderService.saveOrUpdate(wxCouponOrder); + + //短信通知 + + } + + } + + +} diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java index ebbd55b1e..691757aee 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java @@ -60,6 +60,14 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } } + @Override + public Long insertOne(WxCouponOrder record) { + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + wxCouponOrderMapper.insertSelective(record); + return record.getId(); + } + @Override public void deleteById(Long id) { wxCouponOrderMapper.deleteByPrimaryKey(id); diff --git a/mallinkService/src/main/resources/mapper/CouponInjectMapper.xml b/mallinkService/src/main/resources/mapper/CouponInjectMapper.xml new file mode 100644 index 000000000..9ec0efbd8 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/CouponInjectMapper.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`name`,`m_user_id`,`send_type`,`coupon_id`,`coupon_name`,`send_time`,`send_amount`,`status`,`error_msg`,`tags`,`create_time`,`update_time` + + + + where 1 = 1 + + + and `id` = #{id} + + + + + and `tenant_id` like concat('%', #{tenantId},'%') + + + + + and `name` like concat('%', #{name},'%') + + + + + and `m_user_id` like concat('%', #{mUserId},'%') + + + + + and `send_type` = #{sendType} + + + + + and `coupon_id` = #{couponId} + + + + + and `coupon_name` like concat('%', #{couponName},'%') + + + + + and `send_time` = #{sendTime} + + + + + and `send_time` >= #{sendTimeStart} and `send_time` <= #{sendTimeEnd} + + + + and `send_amount` = #{sendAmount} + + + + + and `status` = #{status} + + + + + and `error_msg` like concat('%', #{errorMsg},'%') + + + + + and `tags` like concat('%', #{tags},'%') + + + + + and `create_time` = #{createTime} + + + + + and `update_time` = #{updateTime} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + +