From fcf4e95e2ca28f90f8d6870694a763667eff0268 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Wed, 5 Jun 2019 12:56:34 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=AE=A3=E4=BC=A0=E6=B4=BB=E5=8A=A8=E6=8A=A5?= =?UTF-8?q?=E5=90=8D][=E4=BF=AE=E6=94=B9][=E5=AE=A1=E6=A0=B8=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E3=80=81=E5=AF=BC=E5=87=BA=E6=8A=A5=E5=90=8D=E8=A1=A8?= =?UTF-8?q?=E3=80=81=E5=8F=91=E7=9F=AD=E4=BF=A1=E7=AD=89]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/WxCampaignJoinController.java | 45 ++++++++- .../iformall/domain/po/WxCampaignJoin.java | 11 +++ .../enums/EnumCampaignJoinSignStatus.java | 36 +++++++ .../enums/EnumCampaignJoinStatus.java | 38 ++++++++ .../java/com/iformall/enums/EnumMsgModel.java | 1 + .../service/WxCampaignJoinService.java | 12 +++ .../impl/WxCampaignJoinServiceImpl.java | 94 +++++++++++++++++++ 7 files changed, 236 insertions(+), 1 deletion(-) create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumCampaignJoinSignStatus.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumCampaignJoinStatus.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCampaignJoinController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCampaignJoinController.java index 3857254f5..6a4e3d89f 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCampaignJoinController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCampaignJoinController.java @@ -6,6 +6,7 @@ import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.WxCampaignJoin; +import com.iformall.exception.MallinkException; import com.iformall.service.WxCampaignJoinService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -16,6 +17,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * @author gongbiao */ @@ -45,7 +49,7 @@ public class WxCampaignJoinController extends BaseController { @ApiOperation("确认或取消报名") @PostMapping("modifyStatus") - @SystemControllerLog(description = "宣传页-新增") + @SystemControllerLog(description = "活动参与信息-确认或取消报名") public ResultData modifyStatus(@RequestBody WxCampaignJoin wxCampaignJoin) { logger.debug("[" + getIpAddr() + "] WxCampaignJoinController::modifyStatus"); @@ -59,4 +63,43 @@ public class WxCampaignJoinController extends BaseController { return wxCampaignJoinService.modifyStatus(wxCampaignJoin); } + @ApiOperation("导出报名表") + @RequestMapping("/exportData") + @SystemControllerLog(description = "活动参与信息-导出报名表") + public void exportData(@ModelAttribute WxCampaignJoin wxCampaignJoin, HttpServletRequest request, HttpServletResponse response) { + logger.debug("[" + getIpAddr() + "] WxCampaignJoinController::exportData"); + if (wxCampaignJoin.getCampaignId() == null) { + throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "campaignId不能为空"); + } + wxCampaignJoin.setTenantId(getTenantId()); + wxCampaignJoinService.exportData(request, response, wxCampaignJoin); + + } + + @ApiOperation("查询报名总数") + @GetMapping("queryJoinInfo") + @SystemControllerLog(description = "活动参与信息-查询报名总数") + public ResultData queryJoinInfo(@ModelAttribute WxCampaignJoin wxCampaignJoin) { + logger.debug("[" + getIpAddr() + "] WxCampaignJoinController::queryJoinInfo"); + + if (wxCampaignJoin.getCampaignId() == null) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "campaignId不能为空"); + } + wxCampaignJoin.setTenantId(getTenantId()); + return wxCampaignJoinService.queryJoinInfo(wxCampaignJoin); + } + + @ApiOperation("确认报名完成") + @GetMapping("confirmCompletion") + @SystemControllerLog(description = "活动参与信息-确认报名完成") + public ResultData confirmCompletion(@ModelAttribute WxCampaignJoin wxCampaignJoin) { + logger.debug("[" + getIpAddr() + "] WxCampaignJoinController::confirmCompletion"); + + if (wxCampaignJoin.getCampaignId() == null) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "campaignId不能为空"); + } + wxCampaignJoin.setTenantId(getTenantId()); + return wxCampaignJoinService.confirmCompletion(wxCampaignJoin); + } + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCampaignJoin.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCampaignJoin.java index bbaac9f68..d64cd523d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCampaignJoin.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCampaignJoin.java @@ -1,5 +1,6 @@ package com.iformall.domain.po; +import cn.afterturn.easypoi.excel.annotation.Excel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; @@ -38,26 +39,36 @@ public class WxCampaignJoin extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value = "活动ID", name = "campaignId") private Long campaignId; + @Excel(name = "姓名", width = 10, orderNum = "1") @io.swagger.annotations.ApiModelProperty(value = "姓名", name = "name") private String name; + + @Excel(name = "微信昵称", width = 10, orderNum = "4") @io.swagger.annotations.ApiModelProperty(value = "昵称", name = "nickName") private String nickName; @io.swagger.annotations.ApiModelProperty(value = "生日", name = "birthday") private Date birthday; + + @Excel(name = "性别", replace = {"保密_0", "男_1", "女_2"}, width = 10, orderNum = "3") @io.swagger.annotations.ApiModelProperty(value = "性别0保密1男2女", name = "sex") private Integer sex; + @io.swagger.annotations.ApiModelProperty(value = "地址", name = "address") private String address; + @Excel(name = "电话号码", width = 10, orderNum = "2") @io.swagger.annotations.ApiModelProperty(value = "手机", name = "phone") private String phone; @io.swagger.annotations.ApiModelProperty(value = "答案", name = "answer") private String answer; + @Excel(name = "活动签到", replace = {"未签到_0", "已签到_1"}, width = 10, orderNum = "6") @io.swagger.annotations.ApiModelProperty(value = "签到状态1签到0未签到", name = "signIn") private Integer signIn; + @Excel(name = "报名状态", replace = {"未确认_0", "已确认_1", "取消报名_2", "活动过期_3"}, width = 10, orderNum = "7") @io.swagger.annotations.ApiModelProperty(value = "状态0未确认-报名中1确认-报名成功2取消-报名失败3过期", name = "status") private Integer status; + @Excel(name = "报名时间", format = "yyyy-MM-dd HH:mm:ss", width = 10, orderNum = "5") @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createTime") private Date createTime; @io.swagger.annotations.ApiModelProperty(value = "更新时间", name = "updateTime") diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCampaignJoinSignStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumCampaignJoinSignStatus.java new file mode 100644 index 000000000..02e982f5d --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCampaignJoinSignStatus.java @@ -0,0 +1,36 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ +public enum EnumCampaignJoinSignStatus { + + YES(1, "签到"), + NO(0, "未签到"),; + + public static EnumCampaignJoinSignStatus getEnum(Integer code) { + for (EnumCampaignJoinSignStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumCampaignJoinSignStatus(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/enums/EnumCampaignJoinStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumCampaignJoinStatus.java new file mode 100644 index 000000000..f291561a1 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCampaignJoinStatus.java @@ -0,0 +1,38 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ +public enum EnumCampaignJoinStatus { + + NOT_CONFIRMED(0, "未确认"), + CONFIRMED(1, "已确认"), + CANCEL(2, "已取消"), + EXPIRED(3, "活动过期"),; + + public static EnumCampaignJoinStatus getEnum(Integer code) { + for (EnumCampaignJoinStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumCampaignJoinStatus(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/enums/EnumMsgModel.java b/mallinkService/src/main/java/com/iformall/enums/EnumMsgModel.java index 4502d3688..71bd8df77 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumMsgModel.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMsgModel.java @@ -22,6 +22,7 @@ public enum EnumMsgModel { ACCEPT_SHARING_ACCOUNT_NOTIFY_MANAGER(14, "商户分账账户使用回执"), REJECT_SHARING_ACCOUNT_NOTIFY_MANAGER(15, "商户分账账户不使用回执"), DELETE_SHARING_ACCOUNT_NOTIFY_MERCHANT(16, "商户分账账户删除提醒"), + TIME_LIMIT_CAMPAIGN(17, "限时活动"), ; public static EnumMsgModel getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/service/WxCampaignJoinService.java b/mallinkService/src/main/java/com/iformall/service/WxCampaignJoinService.java index a62cf88fd..6edf1bb50 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCampaignJoinService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCampaignJoinService.java @@ -4,10 +4,22 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.WxCampaignJoin; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * @author gongbiao + */ public interface WxCampaignJoinService { PageInfo listAsPage(WxCampaignJoin wxCampaignJoin, Integer pageNum, Integer pageSize); ResultData modifyStatus(WxCampaignJoin wxCampaignJoin); + void exportData(HttpServletRequest request, HttpServletResponse response, WxCampaignJoin wxCampaignJoin); + + ResultData queryJoinInfo(WxCampaignJoin wxCampaignJoin); + + ResultData confirmCompletion(WxCampaignJoin wxCampaignJoin); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCampaignJoinServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCampaignJoinServiceImpl.java index bad753fc5..3617f9e50 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCampaignJoinServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCampaignJoinServiceImpl.java @@ -4,14 +4,30 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.Result; import com.iformall.common.ResultData; +import com.iformall.domain.po.WxCampaign; import com.iformall.domain.po.WxCampaignJoin; +import com.iformall.domain.po.msg.WxMsgRecord; +import com.iformall.domain.vo.WxBillDailyVo; +import com.iformall.enums.*; import com.iformall.mapper.WxCampaignJoinMapper; +import com.iformall.mapper.WxCampaignMapper; +import com.iformall.mq.MqBaseProducer; +import com.iformall.service.ExcelService; import com.iformall.service.WxCampaignJoinService; +import com.iformall.utils.DateUtils; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * @author gongbiao */ @@ -22,6 +38,14 @@ public class WxCampaignJoinServiceImpl implements WxCampaignJoinService { @Autowired WxCampaignJoinMapper wxCampaignJoinMapper; + @Autowired + WxCampaignMapper wxCampaignMapper; + + @Autowired + ExcelService excelService; + + @Autowired + private MqBaseProducer mqBaseProducer; @Override public PageInfo listAsPage(WxCampaignJoin record, Integer pageIndex, Integer pageSize) { @@ -34,5 +58,75 @@ public class WxCampaignJoinServiceImpl implements WxCampaignJoinService { return new ResultData(Result.SUCCESS, "操作成功"); } + @Override + public void exportData(HttpServletRequest request, HttpServletResponse response, WxCampaignJoin wxCampaignJoin) { + WxCampaign wxCampaign = wxCampaignMapper.selectByPrimaryKey(wxCampaignJoin.getCampaignId()); + String title = wxCampaign.getTitle(); + List list = wxCampaignJoinMapper.findList(wxCampaignJoin); + excelService.exportExcel(list, null, title, WxBillDailyVo.class, "报名表.xlsx", response, false); + } + + @Override + public ResultData queryJoinInfo(WxCampaignJoin wxCampaignJoin) { + WxCampaign wxCampaign = wxCampaignMapper.selectByPrimaryKey(wxCampaignJoin.getCampaignId()); + //活动人数 + Integer personLimit = wxCampaign.getPersonLimit(); + //总人数 + int total = wxCampaignJoinMapper.selectCount(wxCampaignJoin); + wxCampaignJoin.setStatus(EnumCampaignJoinStatus.CONFIRMED.getCode()); + //确认数 + int confirm = wxCampaignJoinMapper.selectCount(wxCampaignJoin); + Map data = new HashMap<>(); + data.put("personLimit", personLimit); + data.put("confirm", confirm); + data.put("total", total); + return new ResultData(data); + } + + @Override + public ResultData confirmCompletion(WxCampaignJoin wxCampaignJoin) { + //1、修改活动状态 + WxCampaign wxCampaign = new WxCampaign(); + wxCampaign.setId(wxCampaignJoin.getCampaignId()); + wxCampaign.setStatus(EnumCampaignStatus.STATUS_TAKE_OFFF.getCode()); + wxCampaign.setUpdateTime(new Date()); + wxCampaignMapper.updateByPrimaryKeySelective(wxCampaign); + //2、发送短信 + WxCampaign campaign = wxCampaignMapper.selectByPrimaryKey(wxCampaignJoin.getCampaignId()); + List joinList = wxCampaignJoinMapper.select(wxCampaignJoin); + for (WxCampaignJoin join : joinList) { + sendMessage(join, campaign); + } + return new ResultData(); + } + + private void sendMessage(WxCampaignJoin join, WxCampaign campaign) { + logger.info("》》》》》》》》》》》"); + logger.info("活动发送短信开始"); + logger.info("》》》》》》》》》》》"); + //人名 + String name = join.getName(); + name = StringUtils.isNotEmpty(name) ? name : ""; + //找出用户手机号 + String phone = join.getPhone(); + //活动名 + String party = campaign.getTitle(); + String time = DateUtils.date2String(campaign.getActivityTime()); + Map msgReplaceMap = new HashMap(); + msgReplaceMap.put("name", name); + msgReplaceMap.put("party", party); + msgReplaceMap.put("time", time); + WxMsgRecord wxMsgRecord = new WxMsgRecord(); + wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); + wxMsgRecord.setModelType(EnumMsgModel.TIME_LIMIT_CAMPAIGN.getCode()); + wxMsgRecord.setReceiver(phone); + wxMsgRecord.setTenantId(join.getTenantId()); + wxMsgRecord.setDynamicContentMap(msgReplaceMap); + mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); + logger.info("》》》》》》》》》》》"); + logger.info("活动发送短信结束"); + logger.info("》》》》》》》》》》》"); + } + }