package com.stylefeng.guns.modular.system.controller.general; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.plugins.Page; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.common.constant.factory.PageFactory; import com.stylefeng.guns.core.shiro.ShiroKit; import com.stylefeng.guns.core.shiro.ShiroUser; import com.stylefeng.guns.core.util.DateUtil; import com.stylefeng.guns.core.util.SinataUtil; import com.stylefeng.guns.modular.system.model.SysCouponRecord; import com.stylefeng.guns.modular.system.model.TUser; import com.stylefeng.guns.modular.system.model.UserCouponRecord; import com.stylefeng.guns.modular.system.service.ISysCouponRecordService; import com.stylefeng.guns.modular.system.service.ITUserService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.beans.factory.annotation.Autowired; import com.stylefeng.guns.core.log.LogObjectHolder; import org.springframework.web.bind.annotation.RequestParam; import com.stylefeng.guns.modular.system.model.SysCouponActivity; import com.stylefeng.guns.modular.system.service.ISysCouponActivityService; import java.util.*; /** * 控制器 * * @author fengshuonan * @Date 2020-06-17 09:14:59 */ @Controller @RequestMapping("/sysCouponActivity") public class SysCouponActivityController extends BaseController { private String PREFIX = "/system/sysCouponActivity/"; @Autowired private ISysCouponActivityService sysCouponActivityService; @Autowired private ITUserService userService; @Autowired private ISysCouponRecordService couponRecordService; /** * 跳转到首页 */ @RequestMapping("") public String index() { return PREFIX + "sysCouponActivity.html"; } /** * 跳转到选择优惠券页面 * @return */ @RequestMapping("/sysCouponRecord") public String sysCouponRecord() { return PREFIX + "sysCouponRecord.html"; } /** * 跳转到选择用户页面 * @return */ @RequestMapping("user") public String user() { return PREFIX + "tUser.html"; } /** * 跳转到添加 */ @RequestMapping("/sysCouponActivity_add") public String sysCouponActivityAdd() { return PREFIX + "sysCouponActivity_add.html"; } /** * 跳转到修改 */ @RequestMapping("/sysCouponActivity_update/{sysCouponActivityId}") public String sysCouponActivityUpdate(@PathVariable Integer sysCouponActivityId, Model model) { SysCouponActivity sysCouponActivity = sysCouponActivityService.selectById(sysCouponActivityId); model.addAttribute("item",sysCouponActivity); if(sysCouponActivity.getSendType()==2){ model.addAttribute("sendUserInfoList",JSON.parseArray(sysCouponActivity.getSendUserId())); }else{ model.addAttribute("sendUserInfoList",new ArrayList<>()); } LogObjectHolder.me().set(sysCouponActivity); return PREFIX + "sysCouponActivity_edit.html"; } /** * 获取列表 */ @RequestMapping(value = "/list") @ResponseBody public Object list(String createTime,Integer couponUseType,Integer status) { Date startTimes = null; Date endTimes = null; if (SinataUtil.isNotEmpty(createTime)){ String[] timeArray = createTime.split(" - "); startTimes = DateUtil.getDate_str3(timeArray[0]+" 00:00:00"); endTimes = DateUtil.getDate_str3(timeArray[1]+" 23:59:59"); } Page page = new PageFactory().defaultPage(); Wrapper wrapper = new EntityWrapper(); if(SinataUtil.isNotEmpty(createTime)){ wrapper.between("insertTime",startTimes,endTimes); } if(SinataUtil.isNotEmpty(couponUseType)){wrapper.eq("couponUseType",couponUseType);} if(SinataUtil.isNotEmpty(status)){wrapper.eq("status",status);} ShiroUser user = ShiroKit.getUser(); if(user.getRoleType()!=1){ wrapper.eq("companyId",user.getObjectId()); wrapper.eq("companyType",user.getRoleType()); } wrapper.ne("status",4); wrapper.orderBy("id",false); return super.packForBT(sysCouponActivityService.selectPage(page,wrapper)); } /** * 新增 */ @RequestMapping(value = "/add") @ResponseBody public Object add(SysCouponActivity sysCouponActivity,Integer activityId) { SysCouponRecord sysCouponRecord = couponRecordService.selectById(activityId); sysCouponActivity.setCouponType(sysCouponRecord.getCouponType()); sysCouponActivity.setCouponUseType(sysCouponRecord.getCouponUseType()); sysCouponActivity.setMoney(sysCouponRecord.getMoney()); sysCouponActivity.setFullMoney(sysCouponRecord.getFullMoney()); sysCouponActivity.setInsertTime(new Date()); sysCouponActivity.setCouponId(activityId); sysCouponActivity.setCompanyId(ShiroKit.getUser().getObjectId()); sysCouponActivity.setCompanyType(ShiroKit.getUser().getRoleType()); sysCouponActivity.setStatus(sysCouponActivity.getCompanyType()==1?3:1); sysCouponActivityService.insert(sysCouponActivity); if(sysCouponActivity.getCompanyType()==1){ //定时发送优惠券 Timer timer = new Timer(); timer.schedule(new timerTaskTest(sysCouponActivity.getId()),30*1000);//timer.schedule(执行的方法,延迟多久执行(ms)) } return SUCCESS_TIP; } /** * 跳转到立即处理页面 */ @RequestMapping("/sysCouponActivity_immediately/{id}") public String sysCouponActivityImmediately(@PathVariable Integer id, Model model) { model.addAttribute("id",id); return PREFIX + "sysCouponActivity_immediately.html"; } /** * 立即处理操作 */ @RequestMapping(value = "/immediately") @ResponseBody public Object immediately(@RequestParam Integer id,@RequestParam Integer state,@RequestParam String remark) { SysCouponActivity sysCouponActivity = sysCouponActivityService.selectById(id); if (SinataUtil.isNotEmpty(sysCouponActivity)){ sysCouponActivity.setStatus(state); sysCouponActivity.setRemark(remark); sysCouponActivityService.updateById(sysCouponActivity); if(state==3){ //定时发送优惠券 Timer timer = new Timer(); timer.schedule(new timerTaskTest(id),30*1000);//timer.schedule(执行的方法,延迟多久执行(ms)) } } return SUCCESS_TIP; } class timerTaskTest extends TimerTask { private Integer id; public timerTaskTest(Integer id) { this.id = id; } @Override public void run() { SysCouponActivity sysCouponActivity = sysCouponActivityService.selectById(id); UserCouponRecord userCouponRecord = new UserCouponRecord(); userCouponRecord.setMoney(sysCouponActivity.getMoney()); userCouponRecord.setFullMoney(sysCouponActivity.getFullMoney()); Date nowDay = new Date(); userCouponRecord.setInsertTime(nowDay); userCouponRecord.setExpirationTime(new Date(nowDay.getTime()+sysCouponActivity.getEffective()*24*3600*1000L)); userCouponRecord.setCompanyId(sysCouponActivity.getCompanyId()); userCouponRecord.setState(1); userCouponRecord.setCouponType(sysCouponActivity.getCouponType()); userCouponRecord.setCouponUseType(sysCouponActivity.getCouponUseType()); userCouponRecord.setCouponActivityId(sysCouponActivity.getId()); userCouponRecord.setActivityType(1); //判断发送类型1=全部用户,2=选择用户 if(sysCouponActivity.getSendType()==1){ Wrapper wrapper = new EntityWrapper(); if(sysCouponActivity.getCompanyType()!=1){ wrapper.eq("companyId",sysCouponActivity.getCompanyId()); } List list = userService.selectList(wrapper); for(TUser user:list){ userCouponRecord.setUserId(user.getId()); for (int i=0;i