| @@ -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<WxActivity> 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); | |||
| } | |||
| } | |||
| @@ -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"; | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -5,8 +5,13 @@ import com.iformall.domain.po.WxActivityJoin; | |||
| import java.util.List; | |||
| /** | |||
| * @author gongbiao | |||
| */ | |||
| public interface WxActivityJoinMapper extends CommonMapper<WxActivityJoin, Long> { | |||
| List<WxActivityJoin> findList(WxActivityJoin params); | |||
| void cfindList(WxActivityJoin wxActivityJoin); | |||
| } | |||
| @@ -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<WxActivity> clistAsPage(WxActivityJoin wxActivityJoin, Integer pageNum, Integer pageSize); | |||
| ResultData join(WxActivityJoin wxActivityJoin); | |||
| } | |||
| @@ -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<WxActivityJoin> 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<WxActivity> 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<String, Object> 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("活动发送短信开始"); | |||
| @@ -66,6 +66,16 @@ | |||
| from wx_activity_join | |||
| <include refid="dynamicWhereConditions"/> | |||
| </select> | |||
| <select id="cfindList" parameterType="com.iformall.domain.po.WxActivityJoin" | |||
| resultMap="com.iformall.domain.po.WxActivity"> | |||
| select a.cover_img,a.title,a.activity_start_time,activity_end_time,a.`status` | |||
| from wx_activity_join aj left join wx_activity a on aj.activity_id=a.id | |||
| where aj.user_id=#{user_id} | |||
| <if test=" null != tenantId "> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != sortColumns">order by ${sortColumns}</if> | |||
| </select> | |||
| </mapper> | |||