package com.stylefeng.guns.modular.system.controller.general;
|
|
|
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.log.LogObjectHolder;
|
import com.stylefeng.guns.core.shiro.ShiroKit;
|
import com.stylefeng.guns.core.util.SinataUtil;
|
import com.stylefeng.guns.core.util.ToolUtil;
|
import com.stylefeng.guns.modular.system.model.*;
|
import com.stylefeng.guns.modular.system.response.MerchantActivityVo;
|
import com.stylefeng.guns.modular.system.response.UserRequest;
|
import com.stylefeng.guns.modular.system.service.*;
|
import com.stylefeng.guns.modular.system.util.OrderUtil;
|
import org.apache.commons.collections.CollectionUtils;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.ui.Model;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
import static com.stylefeng.guns.modular.system.service.impl.MerchantActivityServiceImpl.getOrderTypeName;
|
|
@Controller
|
@RequestMapping("/merchantActivityGive")
|
public class MerchantActivityGiveController extends BaseController {
|
|
private String PREFIX = "/system/merchantActivityGive/";
|
|
@Autowired
|
private IMerchantActivityService merchantActivityService;
|
@Autowired
|
private IMerchantCouponService merchantCouponService;
|
@Autowired
|
private IMerchantActivitySlaveService merchantActivitySlaveService;
|
@Autowired
|
private ITMerchantService merchantService;
|
@Autowired
|
private IUserMerchantCouponService userMerchantCouponService;
|
|
@Autowired
|
private IUserService userService;
|
|
@RequestMapping("/index")
|
public String index() {
|
return PREFIX + "merchantActivityGive.html";
|
}
|
|
/**
|
* @param startTime
|
* @param endTime
|
* @param type 券类型(1=优惠券。2=商品券)
|
* @param merchantName 商家名称
|
* @param status 状态 0未开始 1开始 2结束
|
* @return
|
*/
|
@RequestMapping("/list")
|
@ResponseBody
|
public Object list(String startTime, String endTime, Integer type, String merchantName, Integer status) {
|
|
Integer companyId = ShiroKit.getUser().getObjectId();
|
|
Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
|
List<Map<String, Object>> list = merchantActivityService.getMerchantActivityGiveList(startTime, endTime, type, merchantName, status, companyId, page);
|
page.setRecords(list);
|
return super.packForBT(page);
|
}
|
|
|
@RequestMapping("/activityGiveAdd")
|
public String activityGiveAdd(Model model) {
|
/*查询商家列表*/
|
List<Map<String, Object>> list = merchantCouponService.getMerchantList();
|
model.addAttribute("item", list);
|
|
return PREFIX + "merchantActivityGive_add.html";
|
}
|
|
/**
|
* 跳转到修改详情
|
*/
|
@RequestMapping("/merchantActivityUpdate")
|
public String merchantActivityUpdate(Integer id, Model model) {
|
|
MerchantActivity activity = merchantActivityService.selectById(id);
|
|
|
MerchantActivityVo vo = new MerchantActivityVo();
|
BeanUtils.copyProperties(activity, vo);
|
|
vo.setOrderTypeName(getOrderTypeName(activity.getOrderType()));
|
|
/*券信息*/
|
List<Map<String, Object>> mapList = merchantActivitySlaveService.getActivitySlaveList(vo.getId());
|
|
List<Map<String, Object>> userList = userMerchantCouponService.getUserList(vo.getId());
|
|
/*查询商家列表*/
|
List<Map<String, Object>> list = merchantCouponService.getMerchantList();
|
model.addAttribute("merchantList", list);
|
model.addAttribute("item", vo);
|
model.addAttribute("mapList", mapList);
|
model.addAttribute("userList", userList);
|
|
|
LogObjectHolder.me().set(activity);
|
|
return PREFIX + "merchantActivityGive_edit.html";
|
}
|
|
|
/**
|
* 跳转选择商家卷
|
*
|
* @return
|
*/
|
@RequestMapping("/choiceCoupon")
|
public String choiceCoupon(String ids, String merchantIds, Integer type, Model model) {
|
|
model.addAttribute("item", ids);
|
model.addAttribute("merchantIds", merchantIds);
|
model.addAttribute("type", type);
|
|
return PREFIX + "merchantCoupon.html";
|
}
|
|
|
/**
|
* 搜索商品券/商家券信息
|
*
|
* @param ids
|
* @param merchantIds
|
* @param type
|
* @param startTime
|
* @param endTime
|
* @param merchantName
|
* @param name
|
* @return
|
*/
|
@RequestMapping("/getCouponList")
|
@ResponseBody
|
public Object getCouponList(String ids, String merchantIds, Integer type, String startTime, String endTime, String merchantName, String name) {
|
|
String[] split = ids.split(",");
|
List<Integer> couponIds = new ArrayList<>();
|
for (String id : split) {
|
couponIds.add(Integer.valueOf(id));
|
}
|
String[] split1 = merchantIds.split(",");
|
List<String> asList = Arrays.asList(split1);
|
|
Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
|
List<Map<String, Object>> list = merchantCouponService.getCouponList(asList, type, startTime, endTime, merchantName, name, page);
|
list.forEach(one -> {
|
if (couponIds.contains(Integer.valueOf(one.get("id").toString()))) {
|
one.put("selectItem", Boolean.TRUE);
|
}
|
});
|
page.setRecords(list);
|
return super.packForBT(page);
|
}
|
|
|
/**
|
* 跳转选择用户信息
|
*
|
* @param ids
|
* @param type
|
* @param model
|
* @return
|
*/
|
@RequestMapping("/choiceUser")
|
public String choiceUser(String ids, Integer type, Model model) {
|
model.addAttribute("item", ids);
|
model.addAttribute("type", type);
|
|
return PREFIX + "userInfo.html";
|
}
|
|
/**
|
* 查询用户/司机列表
|
*
|
* @param ids
|
* @param type
|
* @return
|
*/
|
@RequestMapping("/getUserList")
|
@ResponseBody
|
public Object getUserList(String ids, Integer type, String name,String companyName, String phone, String startTime, String endTime) {
|
|
String[] split = ids.split(",");
|
List<Integer> userIds = new ArrayList<>();
|
for (String id : split) {
|
userIds.add(Integer.valueOf(id));
|
}
|
List<Map<String, Object>> userList = new ArrayList<>();
|
Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
|
if (type == 1) {
|
userList = merchantActivityService.getUserList(page, name, phone, startTime, endTime);
|
}
|
if (type == 2) {
|
userList = merchantActivityService.getDriverList(page, name,companyName, phone, startTime, endTime);
|
}
|
userList.forEach(one -> {
|
if (userIds.contains(Integer.valueOf(one.get("id").toString()))) {
|
one.put("selectItem", Boolean.TRUE);
|
}
|
});
|
page.setRecords(userList);
|
|
return super.packForBT(page);
|
}
|
|
/**
|
* 添加数据
|
*
|
* @param activity
|
* @return
|
*/
|
@ResponseBody
|
@RequestMapping("/add")
|
public Object add(@RequestBody MerchantActivity activity) {
|
|
Integer userId = ShiroKit.getUser().getId();
|
User user = userService.selectById(userId);
|
if (ToolUtil.isNotEmpty(user)) {
|
if (user.getRoleType().equals(2)) {
|
activity.setAuditStatus(1);
|
}
|
if (user.getRoleType().equals(1)) {
|
activity.setAuditStatus(2);
|
}
|
}
|
activity.setStatus(0);
|
activity.setState(1);
|
activity.setCompanyType(user.getRoleType());
|
activity.setCompanyId(user.getObjectId());
|
activity.setActivityType(2);
|
activity.setType(1);
|
activity.setCreateTime(new Date());
|
|
/*用户/司机数据*/
|
List<UserRequest> userList = activity.getUserList();
|
/*商家券数据*/
|
List<MerchantActivitySlave> activitySlaveList = activity.getMerchantActivitySlaveList();
|
Map<Integer, List<MerchantActivitySlave>> listMap = activitySlaveList.stream().collect(Collectors.groupingBy(b -> b.getMerchantId()));
|
for (Integer key : listMap.keySet()) {
|
|
MerchantActivity merchantActivity = new MerchantActivity();
|
|
BeanUtils.copyProperties(activity, merchantActivity);
|
merchantActivity.setMerchantId(key);
|
merchantActivityService.insert(merchantActivity);
|
|
List<MerchantActivitySlave> merchantActivitySlaves = listMap.get(key);
|
for (MerchantActivitySlave activitySlave : merchantActivitySlaves) {
|
activitySlave.setMerchantActivityId(merchantActivity.getId());
|
activitySlave.setLaveNumber(activitySlave.getTotalNumber());
|
activitySlave.setTotalNumber(userList.size());
|
activitySlave.setLaveNumber(userList.size());
|
merchantActivitySlaveService.insert(activitySlave);
|
|
/*生成用户商家数据*/
|
userList.forEach(two -> {
|
UserMerchantCoupon userMerchantCoupon = new UserMerchantCoupon();
|
userMerchantCoupon.setUserId(two.getUserId());
|
userMerchantCoupon.setUserType(two.getType());
|
userMerchantCoupon.setCode(OrderUtil.getRandomCode(16));
|
userMerchantCoupon.setMerchantActivityId(merchantActivity.getId());
|
userMerchantCoupon.setMerchantCouponId(activitySlave.getMerchantCouponId());
|
userMerchantCoupon.setStatus(1);
|
userMerchantCoupon.setState(3);
|
userMerchantCoupon.setCreateTime(new Date());
|
userMerchantCouponService.insert(userMerchantCoupon);
|
});
|
}
|
}
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 删除活动数据
|
*
|
* @param ids
|
* @return
|
*/
|
@RequestMapping("/activityDelete")
|
@ResponseBody
|
public Object activityDelete(String ids) {
|
List<Integer> activityIds = new ArrayList<>();
|
if (SinataUtil.isNotEmpty(ids)) {
|
String[] split = ids.split(",");
|
for (String id : split) {
|
activityIds.add(Integer.valueOf(id));
|
}
|
}
|
if (CollectionUtils.isEmpty(activityIds)) {
|
activityIds.add(0);
|
}
|
Wrapper<MerchantActivity> wrapper = new EntityWrapper<>();
|
wrapper.in("id", activityIds);
|
List<MerchantActivity> activityList = merchantActivityService.selectList(wrapper);
|
if (CollectionUtils.isNotEmpty(activityList)) {
|
activityList.forEach(one -> {
|
one.setState(3);
|
merchantActivityService.updateById(one);
|
});
|
}
|
return SUCCESS_TIP;
|
}
|
|
|
/**
|
* 活动发送
|
*
|
* @param ids
|
* @return
|
*/
|
@RequestMapping("/sendOut")
|
@ResponseBody
|
public Object sendOut(String ids) {
|
|
List<Integer> activityIds = new ArrayList<>();
|
if (SinataUtil.isNotEmpty(ids)) {
|
String[] split = ids.split(",");
|
for (String id : split) {
|
activityIds.add(Integer.valueOf(id));
|
}
|
}
|
if (CollectionUtils.isEmpty(activityIds)) {
|
activityIds.add(0);
|
}
|
Wrapper<MerchantActivity> wrapper = new EntityWrapper<>();
|
wrapper.in("id", activityIds);
|
List<MerchantActivity> activityList = merchantActivityService.selectList(wrapper);
|
if (CollectionUtils.isNotEmpty(activityList)) {
|
activityList.forEach(emp -> {
|
|
emp.setStatus(2);
|
merchantActivityService.updateById(emp);
|
/*修改从表信息*/
|
Wrapper<MerchantActivitySlave> slaveWrapper = new EntityWrapper<>();
|
slaveWrapper.eq("merchantActivityId", emp.getId());
|
List<MerchantActivitySlave> slaveList = merchantActivitySlaveService.selectList(slaveWrapper);
|
if (CollectionUtils.isNotEmpty(slaveList)) {
|
slaveList.forEach(slave -> {
|
slave.setLaveNumber(0);
|
merchantActivitySlaveService.updateById(slave);
|
});
|
}
|
|
Wrapper<UserMerchantCoupon> couponWrapper = new EntityWrapper<>();
|
couponWrapper.eq("merchantActivityId", emp.getId()).eq("state", 3);
|
List<UserMerchantCoupon> merchantCoupons = userMerchantCouponService.selectList(couponWrapper);
|
|
if (CollectionUtils.isNotEmpty(merchantCoupons)) {
|
merchantCoupons.forEach(one -> {
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(new Date());
|
one.setState(1);
|
/*计算失效时间*/
|
calendar.add(Calendar.DAY_OF_YEAR, emp.getEffectiveDays());
|
one.setEndTime(calendar.getTime());
|
userMerchantCouponService.updateById(one);
|
});
|
}
|
});
|
}
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 跳转领取记录页面
|
*
|
* @return
|
*/
|
@RequestMapping("/receiveIndex")
|
public String receiveIndex(Integer merchantActivityId, Model model) {
|
|
model.addAttribute("item", merchantActivityId);
|
|
return PREFIX + "receivingRecord.html";
|
}
|
|
/**
|
* 领取记录
|
*
|
* @return
|
*/
|
@RequestMapping("/getReceiveList")
|
@ResponseBody
|
public Object getReceiveList(Integer merchantActivityId, String userName, String phone, String
|
startTime, String endTime, Integer status) {
|
|
Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
|
|
List<Map<String, Object>> list = merchantActivityService.getReceiveList(merchantActivityId, userName, phone, startTime, endTime, status, page);
|
page.setRecords(list);
|
return super.packForBT(page);
|
}
|
|
@ResponseBody
|
@RequestMapping("/receiveDelete")
|
public Object receiveDelete(String ids) {
|
List<Integer> activityIds = new ArrayList<>();
|
if (SinataUtil.isNotEmpty(ids)) {
|
String[] split = ids.split(",");
|
for (String id : split) {
|
activityIds.add(Integer.valueOf(id));
|
}
|
}
|
if (CollectionUtils.isEmpty(activityIds)) {
|
activityIds.add(0);
|
}
|
Wrapper<UserMerchantCoupon> wrapper = new EntityWrapper<>();
|
wrapper.in("id", activityIds);
|
List<UserMerchantCoupon> merchantCoupons = userMerchantCouponService.selectList(wrapper);
|
if (CollectionUtils.isNotEmpty(merchantCoupons)) {
|
merchantCoupons.forEach(one -> {
|
one.setState(3);
|
userMerchantCouponService.updateById(one);
|
});
|
}
|
return SUCCESS_TIP;
|
}
|
|
}
|