package com.stylefeng.guns.modular.system.controller.general;
|
|
import cn.hutool.system.UserInfo;
|
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.TSystemNotice;
|
import com.stylefeng.guns.modular.system.model.TUser;
|
import com.stylefeng.guns.modular.system.model.UserRedPacketRecord;
|
import com.stylefeng.guns.modular.system.service.ITSystemNoticeService;
|
import com.stylefeng.guns.modular.system.service.ITUserService;
|
import com.stylefeng.guns.modular.system.service.IUserRedPacketRecordService;
|
import com.stylefeng.guns.modular.system.service.impl.UserServiceImpl;
|
import com.stylefeng.guns.modular.system.util.ResultUtil;
|
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.SysRedPacketRecord;
|
import com.stylefeng.guns.modular.system.service.ISysRedPacketRecordService;
|
|
import java.math.BigDecimal;
|
import java.util.*;
|
|
/**
|
* 控制器
|
*
|
* @author fengshuonan
|
* @Date 2020-06-13 10:50:42
|
*/
|
@Controller
|
@RequestMapping("/sysRedPacketRecord")
|
public class SysRedPacketRecordController extends BaseController {
|
|
private String PREFIX = "/system/sysRedPacketRecord/";
|
|
@Autowired
|
private ISysRedPacketRecordService sysRedPacketRecordService;
|
@Autowired
|
private IUserRedPacketRecordService userRedPacketRecordService;
|
|
|
@RequestMapping("/redRecord")
|
public String index( Model model,Integer couponActivityId,Integer activityType) {
|
model.addAttribute("activityType",activityType);
|
model.addAttribute("couponActivityId",couponActivityId);
|
return PREFIX + "userRedRecord.html";
|
}
|
|
|
/**
|
* 跳转到首页
|
*/
|
@RequestMapping("")
|
public String index() {
|
return PREFIX + "sysRedPacketRecord.html";
|
}
|
|
@RequestMapping("/tUser")
|
public String tUser() {
|
return PREFIX + "tUser.html";
|
}
|
|
/**
|
* 跳转到添加
|
*/
|
@RequestMapping("/sysRedPacketRecord_add")
|
public String sysRedPacketRecordAdd() {
|
return PREFIX + "sysRedPacketRecord_add.html";
|
}
|
|
/**
|
* 跳转到修改
|
*/
|
@RequestMapping("/sysRedPacketRecord_update/{sysRedPacketRecordId}")
|
public String sysRedPacketRecordUpdate(@PathVariable Integer sysRedPacketRecordId, Model model) {
|
SysRedPacketRecord sysRedPacketRecord = sysRedPacketRecordService.selectById(sysRedPacketRecordId);
|
model.addAttribute("item",sysRedPacketRecord);
|
LogObjectHolder.me().set(sysRedPacketRecord);
|
return PREFIX + "sysRedPacketRecord_edit.html";
|
}
|
|
|
@Autowired
|
private ITSystemNoticeService systemNoticeService;
|
|
@Autowired
|
private ITUserService userService;
|
|
|
@RequestMapping(value = "/direct")
|
@ResponseBody
|
public ResultUtil direct(String ids, Integer redId) {
|
System.err.println("========="+ids+"======="+redId);
|
Double money = 0D;
|
SysRedPacketRecord sysRedPacketRecord = sysRedPacketRecordService.selectById(redId);
|
List<UserRedPacketRecord> redPacketActivityId = userRedPacketRecordService.selectList(new EntityWrapper<UserRedPacketRecord>().eq("redPacketActivityId", redId));
|
|
double totalRemainingAmount = redPacketActivityId.stream()
|
.mapToDouble(UserRedPacketRecord::getRemainingAmount)
|
.sum();
|
|
//还可发放的金额
|
double v = sysRedPacketRecord.getTotalMoney().doubleValue() - totalRemainingAmount;
|
|
if(null != sysRedPacketRecord){
|
Integer type = sysRedPacketRecord.getType();
|
if(type == 1){//固定金额
|
|
money = Double.valueOf(String.valueOf(sysRedPacketRecord.getMoney()));
|
//计算剩余金额是否够
|
|
if (v-money*ids.split(",").length < 0){
|
return ResultUtil.error("当前红包剩余金额不足");
|
}
|
|
|
|
}
|
|
// else{//随机金额
|
// Double startMoney = Double.valueOf(String.valueOf(sysRedPacketRecord.getStartMoney()));
|
// Double endMoney = Double.valueOf(String.valueOf(sysRedPacketRecord.getEndMoney()));
|
// int i = new BigDecimal(endMoney).subtract(new BigDecimal(startMoney)).intValue();
|
// Random random = new Random();
|
// int num = random.nextInt(i);
|
// money = new BigDecimal(startMoney).add(new BigDecimal(num)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
|
// }
|
|
}
|
String[] split = ids.split(",");
|
for (String s : split) {
|
if(money > 0||sysRedPacketRecord.getType()!=1){
|
if (sysRedPacketRecord.getType()!=1){
|
Double startMoney = Double.valueOf(String.valueOf(sysRedPacketRecord.getStartMoney()));
|
Double endMoney = Double.valueOf(String.valueOf(sysRedPacketRecord.getEndMoney()));
|
int i = new BigDecimal(endMoney).subtract(new BigDecimal(startMoney)).intValue();
|
Random random = new Random();
|
int num;
|
if (!startMoney.equals(endMoney)){
|
num = random.nextInt(i);
|
|
}else {
|
num = 0;
|
}
|
money = new BigDecimal(startMoney).add(new BigDecimal(num)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
|
v=v-money;
|
if (v<0){
|
return ResultUtil.success("当前红包为随机红包,可能有部分用户无法领取",null,"当前红包为随机红包,可能有部分用户无法领取");
|
}
|
}
|
//添加临时红包数据
|
UserRedPacketRecord userRedPacketRecord = new UserRedPacketRecord();
|
userRedPacketRecord.setMoney(money);
|
userRedPacketRecord.setRemainingAmount(money);
|
userRedPacketRecord.setInsertTime(new Date());
|
userRedPacketRecord.setCompanyId(1);
|
userRedPacketRecord.setState(1);
|
userRedPacketRecord.setOrderId(null);
|
// 标记为后台发放的红包
|
userRedPacketRecord.setIsGrant(1);
|
userRedPacketRecord.setRedPacketActivityId(redId);
|
// userRedPacketRecord.setOrderType(3);
|
userRedPacketRecord.setUserId(Integer.valueOf(s));
|
userRedPacketRecordService.insert(userRedPacketRecord);
|
|
TUser tUser = userService.selectById(Integer.valueOf(s));
|
Integer language = tUser.getLanguage();
|
try {
|
systemNoticeService.addSystemNotice(1, language == 1 ? "您收到一个额度为GHS"+money+"的红包,请查收。" : language == 2 ? "You have received a red envelope with a limit of GHS"+money+". Please check it." : "Vous recevez un paquet rouge avec une limite de ghs+"+money+", veuillez vérifier.", tUser.getId());
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
}
|
}
|
return ResultUtil.success("指派成功",null,"当前红包为随机红包,可能有部分用户无法领取");
|
}
|
|
@RequestMapping(value = "/user/list")
|
@ResponseBody
|
public Object list(String createTime,String userName,String userPhone,Integer couponActivityId,Integer activityType,Integer state) {
|
String beginTime = null;
|
String endTime = null;
|
if (SinataUtil.isNotEmpty(createTime)){
|
String[] timeArray = createTime.split(" - ");
|
beginTime = timeArray[0];
|
endTime = timeArray[1];
|
}
|
Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
|
page.setRecords(sysRedPacketRecordService.getList(page,beginTime,endTime,userName,userPhone,couponActivityId,activityType,state));
|
return super.packForBT(page);
|
}
|
|
/**
|
* 获取列表
|
*/
|
@RequestMapping(value = "/list")
|
@ResponseBody
|
public Object list(String createTime) {
|
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<SysRedPacketRecord> page = new PageFactory<SysRedPacketRecord>().defaultPage();
|
Wrapper wrapper = new EntityWrapper<SysRedPacketRecord>();
|
if(SinataUtil.isNotEmpty(createTime)){
|
wrapper.between("insertTime",startTimes,endTimes);
|
}
|
wrapper.eq("companyId",ShiroKit.getUser().getObjectId());
|
wrapper.eq("companyType",ShiroKit.getUser().getRoleType());
|
wrapper.orderBy("id",false);
|
return super.packForBT(sysRedPacketRecordService.selectPage(page,wrapper));
|
}
|
|
/**
|
* 新增
|
*/
|
@RequestMapping(value = "/add")
|
@ResponseBody
|
public Object add(SysRedPacketRecord sysRedPacketRecord) {
|
sysRedPacketRecord.setInsertTime(new Date());
|
sysRedPacketRecord.setCompanyId(ShiroKit.getUser().getObjectId());
|
sysRedPacketRecord.setCompanyType(ShiroKit.getUser().getRoleType());
|
sysRedPacketRecordService.insert(sysRedPacketRecord);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 删除
|
*/
|
@RequestMapping(value = "/delete")
|
@ResponseBody
|
public Object delete(@RequestParam Integer sysRedPacketRecordId) {
|
sysRedPacketRecordService.deleteById(sysRedPacketRecordId);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 修改
|
*/
|
@RequestMapping(value = "/update")
|
@ResponseBody
|
public Object update(SysRedPacketRecord sysRedPacketRecord) {
|
sysRedPacketRecordService.updateById(sysRedPacketRecord);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 详情
|
*/
|
@RequestMapping(value = "/detail/{sysRedPacketRecordId}")
|
@ResponseBody
|
public Object detail(@PathVariable("sysRedPacketRecordId") Integer sysRedPacketRecordId) {
|
return sysRedPacketRecordService.selectById(sysRedPacketRecordId);
|
}
|
}
|