From af9c13fd3048a760aab3cff744f7fc9f3d7049ac Mon Sep 17 00:00:00 2001 From: gongbiao Date: Mon, 10 Jun 2019 11:53:09 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=B4=BB=E5=8A=A8][=E4=BF=AE=E6=94=B9][?= =?UTF-8?q?=E6=8A=A5=E5=90=8D]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxActivityJoinController.java | 58 +++++++++++++++++++ .../com/iformall/domain/po/WxActivity.java | 5 +- .../enums/EnumActivityUseCreditStatus.java | 36 ++++++++++++ .../iformall/mapper/WxActivityJoinMapper.java | 5 ++ .../service/WxActivityJoinService.java | 5 ++ .../impl/WxActivityJoinServiceImpl.java | 55 ++++++++++++++++++ .../resources/mapper/WxActivityJoinMapper.xml | 12 +++- 7 files changed, 173 insertions(+), 3 deletions(-) create mode 100644 mallinkCApi/src/main/java/com/iformall/controller/WxActivityJoinController.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumActivityUseCreditStatus.java diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxActivityJoinController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxActivityJoinController.java new file mode 100644 index 000000000..be783368c --- /dev/null +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxActivityJoinController.java @@ -0,0 +1,58 @@ +package com.iformall.controller; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxActivity; +import com.iformall.domain.po.WxActivityJoin; +import com.iformall.service.WxActivityJoinService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @author gongbiao + */ +@RestController +@RequestMapping("/api/wxActivityJoin") +@Api(description = "活动报名") +public class WxActivityJoinController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxActivityJoinService wxActivityJoinService; + + @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 WxActivityJoin wxActivityJoin, Integer pageNum, Integer pageSize) { + if (null == wxActivityJoin) wxActivityJoin = new WxActivityJoin(); + wxActivityJoin.setTenantId(getTenantId()); + wxActivityJoin.setSortColumns(WxActivityJoin.Field.CreateTime_DESC); + final PageInfo page = wxActivityJoinService.clistAsPage(wxActivityJoin, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation("报名") + @PostMapping("join") + public ResultData join(@RequestBody WxActivityJoin wxActivityJoin) { + if (wxActivityJoin.getUserId() == null) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "userId不能为空"); + } + if (wxActivityJoin.getActivityId() == null) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "activityId不能为空"); + } + wxActivityJoin.setTenantId(getTenantId()); + wxActivityJoin.setUserId(getUserId()); + return wxActivityJoinService.join(wxActivityJoin); + } + + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxActivity.java index 767763718..6ab0394fa 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxActivity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxActivity.java @@ -73,11 +73,11 @@ public class WxActivity extends BaseEntity { @Transient @io.swagger.annotations.ApiModelProperty(value = "开始时间", name = "starttime") - protected Date starttime; + private Date starttime; @Transient @io.swagger.annotations.ApiModelProperty(value = "结束时间", name = "endtime") - protected Date endtime; + private Date endtime; @Transient @@ -88,6 +88,7 @@ public class WxActivity extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value = "小程序二维码Scene", name = "weappScene") protected String weappScene; + public String getWeappPath() { if (type == null) return "pages/index/index"; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumActivityUseCreditStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumActivityUseCreditStatus.java new file mode 100644 index 000000000..b8d647775 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumActivityUseCreditStatus.java @@ -0,0 +1,36 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumActivityUseCreditStatus { + + + YES(1, "使用"), + NO(0, "不使用"),; + + public static EnumActivityUseCreditStatus getEnum(Integer code) { + for (EnumActivityUseCreditStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumActivityUseCreditStatus(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/mapper/WxActivityJoinMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxActivityJoinMapper.java index 1d6583c2f..6fa357902 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxActivityJoinMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxActivityJoinMapper.java @@ -5,8 +5,13 @@ import com.iformall.domain.po.WxActivityJoin; import java.util.List; +/** + * @author gongbiao + */ public interface WxActivityJoinMapper extends CommonMapper { List findList(WxActivityJoin params); + void cfindList(WxActivityJoin wxActivityJoin); + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxActivityJoinService.java b/mallinkService/src/main/java/com/iformall/service/WxActivityJoinService.java index 0e13e825d..94dbf2cb5 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxActivityJoinService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxActivityJoinService.java @@ -2,6 +2,7 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; +import com.iformall.domain.po.WxActivity; import com.iformall.domain.po.WxActivityJoin; import javax.servlet.http.HttpServletRequest; @@ -22,4 +23,8 @@ public interface WxActivityJoinService { ResultData sendMsg(WxActivityJoin wxActivityJoin); + PageInfo clistAsPage(WxActivityJoin wxActivityJoin, Integer pageNum, Integer pageSize); + + ResultData join(WxActivityJoin wxActivityJoin); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxActivityJoinServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxActivityJoinServiceImpl.java index 69df3f102..091143864 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxActivityJoinServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxActivityJoinServiceImpl.java @@ -7,11 +7,15 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.WxActivity; import com.iformall.domain.po.WxActivityJoin; +import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.msg.WxMsgRecord; import com.iformall.domain.vo.WxBillDailyVo; import com.iformall.enums.*; import com.iformall.mapper.WxActivityJoinMapper; import com.iformall.mapper.WxActivityMapper; +import com.iformall.mapper.WxCUserBasicInfoMapper; +import com.iformall.mapper.WxCUserMapper; import com.iformall.mq.MqBaseProducer; import com.iformall.service.ExcelService; import com.iformall.service.WxActivityJoinService; @@ -21,6 +25,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -47,6 +53,12 @@ public class WxActivityJoinServiceImpl implements WxActivityJoinService { @Autowired private MqBaseProducer mqBaseProducer; + @Autowired + WxCUserMapper wxCUserMapper; + + @Autowired + WxCUserBasicInfoMapper wxCUserBasicInfoMapper; + @Override public PageInfo listAsPage(WxActivityJoin record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxActivityJoinMapper.findList(record)); @@ -104,6 +116,49 @@ public class WxActivityJoinServiceImpl implements WxActivityJoinService { return new ResultData(); } + @Override + public PageInfo clistAsPage(WxActivityJoin wxActivityJoin, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxActivityJoinMapper.cfindList(wxActivityJoin)); + } + + + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) + @Override + public ResultData join(WxActivityJoin wxActivityJoin) { + WxCUser user = wxCUserMapper.selectByPrimaryKey(wxActivityJoin.getUserId()); + WxCUserBasicInfo basicInfo = new WxCUserBasicInfo(); + basicInfo.setPhone(user.getPhone()); + basicInfo.setTenantId(user.getTenantId()); + WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoMapper.selectOne(basicInfo); + //保存到会员表中 + wxCUserBasicInfo.setName(wxActivityJoin.getName()); + wxCUserBasicInfo.setNickName(wxActivityJoin.getNickName()); + wxCUserBasicInfo.setSex(wxActivityJoin.getSex()); + wxCUserBasicInfo.setAddress(wxActivityJoin.getAddress()); + wxCUserBasicInfoMapper.updateByPrimaryKeySelective(wxCUserBasicInfo); + //保存到报名表中 + wxActivityJoinMapper.insertSelective(wxActivityJoin); + //查询是否消耗积分 + WxActivity wxActivity = wxActivityMapper.selectByPrimaryKey(wxActivityJoin.getActivityId()); + if (wxActivity.getUseCredit().equals(EnumActivityUseCreditStatus.YES.getCode())) { + Integer userCredit = user.getCredit(); + Integer credit = wxActivity.getCredit(); + Map data = new HashMap<>(); + if (credit > userCredit) { + data.put("useCredit", credit); + data.put("totalCredit", userCredit); + return new ResultData(ErrorCode.CREDIT_NOT_ENOUGH, data); + } + userCredit = userCredit - credit; + user.setCredit(userCredit); + wxCUserMapper.updateByPrimaryKeySelective(user); + data.put("useCredit", credit); + data.put("totalCredit", userCredit); + return new ResultData(data); + } + return new ResultData(); + } + private void sendMessage(WxActivityJoin join, WxActivity activity) { logger.info("》》》》》》》》》》》"); logger.info("活动发送短信开始"); diff --git a/mallinkService/src/main/resources/mapper/WxActivityJoinMapper.xml b/mallinkService/src/main/resources/mapper/WxActivityJoinMapper.xml index 29de895c2..751fab00a 100644 --- a/mallinkService/src/main/resources/mapper/WxActivityJoinMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxActivityJoinMapper.xml @@ -66,6 +66,16 @@ from wx_activity_join - + +