package com.dsh.guns.modular.system.controller.general;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.dsh.course.feignClient.activity.TUserClinet;
|
import com.dsh.course.feignClient.activity.UserCouponRecordClient;
|
import com.dsh.guns.config.UserExt;
|
import com.dsh.guns.core.base.controller.BaseController;
|
import com.dsh.guns.core.common.constant.factory.PageFactory;
|
import com.dsh.guns.core.log.LogObjectHolder;
|
import com.dsh.guns.core.util.SinataUtil;
|
import com.dsh.guns.modular.system.enums.ActivityTypeEnum;
|
import com.dsh.guns.modular.system.model.*;
|
import com.dsh.guns.modular.system.service.ISysCouponActivityService;
|
import com.dsh.guns.modular.system.service.ISysCouponRecordService;
|
import com.dsh.guns.modular.system.service.ITAuditRecordService;
|
import com.dsh.guns.modular.system.util.DateUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.ui.Model;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
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 TUserClinet tUserClinet;
|
|
@Autowired
|
private ISysCouponRecordService couponRecordService;
|
|
@Autowired
|
UserCouponRecordClient userCouponRecordClient;
|
@Autowired
|
private ITAuditRecordService auditRecordService;
|
|
/**
|
* 跳转到首页
|
*/
|
@RequestMapping("")
|
public String index(Model model) {
|
model.addAttribute("language",UserExt.getLanguage());
|
model.addAttribute("companyId",UserExt.getUser().getObjectId());
|
return PREFIX + "sysCouponActivity.html";
|
}
|
|
/**
|
* 跳转到选择优惠券页面
|
* @return
|
*/
|
@RequestMapping("/sysCouponRecord")
|
public String sysCouponRecord(Model model) {
|
model.addAttribute("language",UserExt.getLanguage());
|
|
return PREFIX + "sysCouponRecord.html";
|
}
|
|
/**
|
* 跳转到选择用户页面
|
* @return
|
*/
|
@RequestMapping("user")
|
public String user(Model model) {
|
model.addAttribute("language",UserExt.getLanguage());
|
return PREFIX + "tUser.html";
|
}
|
/**
|
* 跳转到添加
|
*/
|
@RequestMapping("/sysCouponActivity_add")
|
public String sysCouponActivityAdd(Model model) {
|
model.addAttribute("language",UserExt.getLanguage());
|
return PREFIX + "sysCouponActivity_add.html";
|
}
|
|
/**
|
* 跳转到修改
|
*/
|
@RequestMapping("/sysCouponActivity_update/{sysCouponActivityId}")
|
public String sysCouponActivityUpdate(@PathVariable Integer sysCouponActivityId, Model model) {
|
SysCouponActivity sysCouponActivity = sysCouponActivityService.getById(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<SysCouponActivity> page = new PageFactory<SysCouponActivity>().defaultPage();
|
LambdaQueryWrapper<SysCouponActivity> wrapper = new LambdaQueryWrapper<>();
|
// Wrapper wrapper = new QueryWrapper<SysCouponActivity>().lambda();
|
if(SinataUtil.isNotEmpty(createTime)){
|
wrapper.between(SysCouponActivity::getInsertTime,startTimes,endTimes);
|
}
|
if(SinataUtil.isNotEmpty(couponUseType)){wrapper.eq(SysCouponActivity::getCouponUseType,couponUseType);}
|
if(SinataUtil.isNotEmpty(status)){wrapper.eq(SysCouponActivity::getStatus,status);}
|
// ShiroUser user = ShiroKit.getUser();
|
// if(user.getRoleType()!=1){
|
// wrapper.eq(SysCouponActivity::getCompanyId,user.getObjectId());
|
// wrapper.eq(SysCouponActivity::getCompanyType,user.getRoleType());
|
// }
|
wrapper.ne(SysCouponActivity::getStatus,4);
|
wrapper.orderByDesc(SysCouponActivity::getId);
|
return super.packForBT(sysCouponActivityService.getBaseMapper().selectPage(page,wrapper));
|
}
|
|
|
/**
|
* 新增
|
*/
|
@RequestMapping(value = "/add")
|
@ResponseBody
|
public Object add(SysCouponActivity sysCouponActivity,Integer activityId,Integer allNum) {
|
SysCouponRecord sysCouponRecord = couponRecordService.getById(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(UserExt.getUser().getObjectId());
|
sysCouponActivity.setCompanyType(UserExt.getUser().getRoleType());
|
sysCouponActivity.setAllNum(allNum);
|
// 数量
|
Integer number = sysCouponActivity.getNumber();
|
|
sysCouponActivity.setStatus(sysCouponActivity.getCompanyType()==1?3:1);
|
sysCouponActivityService.save(sysCouponActivity);
|
if(true){
|
//定时发送优惠券 Timed delivery of discount coupons.
|
Timer timer = new Timer();
|
timer.schedule(new timerTaskTest(sysCouponActivity.getId(),number,allNum),30*1000);//timer.schedule(执行的方法,延迟多久执行(ms))
|
}
|
return SUCCESS_TIP;
|
}
|
/**
|
* 跳转到立即处理页面
|
*/
|
@RequestMapping("/sysCouponActivity_immediately/{id}")
|
public String sysCouponActivityImmediately(@PathVariable Integer id, Model model) {
|
model.addAttribute("id",id);
|
model.addAttribute("language",UserExt.getLanguage());
|
return PREFIX + "sysCouponActivity_immediately.html";
|
}
|
/**
|
* 立即处理操作
|
*/
|
@RequestMapping(value = "/immediately")
|
@Transactional(rollbackFor = Exception.class)
|
@ResponseBody
|
public Object immediately(@RequestParam Integer id,@RequestParam Integer state,@RequestParam String remark) {
|
SysCouponActivity sysCouponActivity = sysCouponActivityService.getById(id);
|
if (SinataUtil.isNotEmpty(sysCouponActivity)){
|
sysCouponActivity.setStatus(state);
|
sysCouponActivity.setRemark(remark);
|
sysCouponActivityService.updateById(sysCouponActivity);
|
|
// 添加审核记录
|
TAuditRecord tAuditRecord = new TAuditRecord();
|
tAuditRecord.setActivityId(id);
|
tAuditRecord.setActivityName(sysCouponActivity.getName());
|
if(state == 2){
|
tAuditRecord.setAuditStatus(3);
|
}
|
if(state == 3){
|
tAuditRecord.setAuditStatus(2);
|
}
|
tAuditRecord.setAuditTime(new Date());
|
tAuditRecord.setAuditUserId(Objects.requireNonNull(UserExt.getUser()).getId());
|
tAuditRecord.setRemark(remark);
|
tAuditRecord.setActivityType(ActivityTypeEnum.SEND_ACTIVITY.getCode());
|
auditRecordService.save(tAuditRecord);
|
|
if(state==3){
|
//定时发送优惠券 Timed delivery of discount coupons.
|
Timer timer = new Timer();
|
timer.schedule(new timerTaskTest(id),30*1000);//timer.schedule(执行的方法,延迟多久执行(ms))
|
}
|
}
|
return SUCCESS_TIP;
|
}
|
class timerTaskTest extends TimerTask {
|
private Integer id;
|
|
private Integer number;
|
|
private Integer allNum;
|
|
public timerTaskTest(Integer id) {
|
this.id = id;
|
}
|
public timerTaskTest(Integer id,Integer number,Integer allNum) {
|
this.id = id;
|
this.number = number;
|
this.allNum = allNum;
|
}
|
@Override
|
public void run() {
|
SysCouponActivity sysCouponActivity = sysCouponActivityService.getById(id);
|
|
SysCouponRecord sysCouponRecord = couponRecordService.getBaseMapper().selectById(sysCouponActivity.getCouponId());
|
|
UserCouponRecord userCouponRecord = new UserCouponRecord();
|
if(sysCouponActivity.getCouponType()==3){
|
userCouponRecord.setType(2);
|
userCouponRecord.setTotalAmount(sysCouponRecord.getMoney().doubleValue());
|
userCouponRecord.setResidualAmount(sysCouponRecord.getMoney().doubleValue());
|
}
|
userCouponRecord.setMoney(sysCouponActivity.getMoney());
|
userCouponRecord.setFullMoney(sysCouponActivity.getFullMoney());
|
Date nowDay = new Date();
|
userCouponRecord.setInsertTime(nowDay);
|
userCouponRecord.setCouponId(sysCouponRecord.getId());
|
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=选择用户 1:all user 2:select user
|
if(sysCouponActivity.getSendType()==1){
|
Integer companyId =null;
|
// if(sysCouponActivity.getCompanyType()!=1){
|
companyId = sysCouponActivity.getCompanyId();
|
// }
|
// List<TUser> list = userService.selectList(wrapper);
|
|
List<TUser> list = tUserClinet.queryUserListByCompanyId(companyId);
|
for(TUser user:list){
|
userCouponRecord.setUserId(user.getId());
|
for (int i=0;i<sysCouponActivity.getNumber();i++){
|
if(allNum<number){
|
break;
|
}
|
userCouponRecordClient.addUserCouponRecord(userCouponRecord);
|
allNum=allNum-number;
|
}
|
}
|
sysCouponActivity.setSendUserNum(list.size());
|
sysCouponActivity.updateById();
|
}else{
|
JSONArray userId = JSON.parseArray(sysCouponActivity.getSendUserId());
|
for(int j=0;j<userId.size();j++){
|
userCouponRecord.setUserId(userId.getJSONObject(j).getInteger("userId"));
|
for (int i=0;i<sysCouponActivity.getNumber();i++){
|
if(allNum<number){
|
break;
|
}
|
userCouponRecordClient.addUserCouponRecord(userCouponRecord);
|
allNum=allNum-number;
|
}
|
}
|
sysCouponActivity.setSendUserNum(userId.size());
|
sysCouponActivity.updateById();
|
|
}
|
|
}
|
}
|
/**
|
* 删除
|
*/
|
@RequestMapping(value = "/delete")
|
@ResponseBody
|
public Object delete(@RequestParam Integer sysCouponActivityId) {
|
SysCouponActivity sysCouponActivity = new SysCouponActivity();
|
sysCouponActivity.setId(sysCouponActivityId);
|
sysCouponActivity.setStatus(4);
|
sysCouponActivityService.updateById(sysCouponActivity);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 修改
|
*/
|
@RequestMapping(value = "/update")
|
@ResponseBody
|
public Object update(SysCouponActivity sysCouponActivity,Integer activityId) {
|
SysCouponRecord sysCouponRecord = couponRecordService.getById(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(11);
|
sysCouponActivity.setCompanyType(33);
|
sysCouponActivity.setStatus(sysCouponActivity.getCompanyType()==1?3:1);
|
sysCouponActivityService.updateById(sysCouponActivity);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 详情
|
*/
|
@RequestMapping(value = "/detail/{sysCouponActivityId}")
|
@ResponseBody
|
public Object detail(@PathVariable("sysCouponActivityId") Integer sysCouponActivityId) {
|
return sysCouponActivityService.getById(sysCouponActivityId);
|
}
|
}
|