package com.sinata.modular.system.controller;
|
|
import cn.hutool.core.util.StrUtil;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.sinata.common.enums.EnumIsDelete;
|
import com.sinata.core.base.controller.BaseController;
|
import com.sinata.modular.mall.model.MallGoods;
|
import com.sinata.modular.mall.service.IMallGoodsService;
|
import com.sinata.modular.member.model.MemUser;
|
import com.sinata.modular.member.service.IMemUserService;
|
import com.sinata.modular.system.model.AreaCity;
|
import com.sinata.modular.system.model.MyCouponProduct;
|
import com.sinata.modular.system.model.MyUserCoupon;
|
import com.sinata.modular.system.service.IAreaCityService;
|
import com.sinata.modular.system.service.IMyCouponProductService;
|
import com.sinata.modular.system.service.IMyUserCouponService;
|
import org.springframework.stereotype.Controller;
|
import com.baomidou.mybatisplus.plugins.Page;
|
import com.sinata.core.common.constant.factory.PageFactory;
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.sinata.core.common.annotion.BussinessLog;
|
import com.sinata.core.common.annotion.Permission;
|
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.sinata.core.log.LogObjectHolder;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import com.sinata.modular.system.model.MyCoupon;
|
import com.sinata.modular.system.service.IMyCouponService;
|
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
import org.springframework.util.StringUtils;
|
|
/**
|
* 优惠券控制器
|
* @author goku
|
*/
|
@Controller
|
@RequestMapping("/myCoupon")
|
public class MyCouponController extends BaseController {
|
|
private String PREFIX = "/system/myCoupon/";
|
|
private String PREFIX_PRICE = "/system/myCouponPrice/";
|
|
private String ORDER_PRICE = "/system/myUserCoupon/";
|
|
@Autowired
|
private IMyCouponService myCouponService;
|
|
@Autowired
|
private IMyCouponProductService myCouponProductService;
|
@Autowired
|
private IMallGoodsService goodsService;
|
|
@Autowired
|
private IAreaCityService areaCityService;
|
|
@Autowired
|
private IMyUserCouponService myUserCouponService;
|
|
@Autowired
|
private IMemUserService memUserService;
|
|
/**
|
* 跳转到优惠券首页
|
*/
|
@RequestMapping("")
|
public String index() {
|
return PREFIX + "myCoupon.html";
|
}
|
|
/**
|
* 跳转到添加优惠券
|
*/
|
@RequestMapping("/myCoupon_add")
|
public String myCouponAdd() {
|
return PREFIX + "myCoupon_add.html";
|
}
|
|
@RequestMapping("/Price")
|
public String indexPrice(Model model) {
|
return PREFIX_PRICE + "myCoupon.html";
|
}
|
|
@RequestMapping("/orderList")
|
public String orderList(Model model) {
|
return ORDER_PRICE + "myUserCoupon.html";
|
}
|
|
/**
|
* 跳转到添加优惠券
|
*/
|
@RequestMapping("/myCouponPrice_add")
|
public String myCouponAddPrice(Model model) {
|
Wrapper wrapper2 = new EntityWrapper<AreaCity>().orderBy("id", false);
|
wrapper2.eq("is_open",1);
|
wrapper2.eq("is_delete", EnumIsDelete.EXISTED.index);
|
model.addAttribute("cityAreaList",areaCityService.selectList(wrapper2));
|
return PREFIX_PRICE + "myCoupon_add.html";
|
}
|
|
|
/**
|
* 获取优惠券列表
|
*/
|
@ResponseBody
|
@RequestMapping(value = "/list")
|
public Object list(Integer type,String beginTime, String endTime, String name,String couponType, String serverType) {
|
Page<MyCoupon> page = new PageFactory().defaultPage();
|
Wrapper<MyCoupon> wrapper = new EntityWrapper<MyCoupon>().orderBy("id", false);
|
wrapper.eq("type",type);
|
if (StrUtil.isNotEmpty(name)){
|
wrapper.like("name",'%'+name+'%');
|
}
|
if (StrUtil.isNotEmpty(couponType)){
|
wrapper.eq("coupon_Type",couponType);
|
}if (StrUtil.isNotEmpty(serverType)){
|
wrapper.eq("server_Type",serverType);
|
}
|
// 时间搜索
|
if(!StringUtils.isEmpty(beginTime)) {
|
wrapper.ge("create_time", beginTime + " 00:00:00");
|
}
|
if(!StringUtils.isEmpty(endTime)) {
|
wrapper.le("create_time", endTime + " 23:59:59");
|
}
|
|
// 查询数据列表
|
List<MyCoupon> list = myCouponService.selectMyCouponList( type, beginTime, endTime, name, couponType,serverType,page);
|
page.setRecords(list);
|
return super.packForBT(page);
|
}
|
|
/**
|
* 新增优惠券
|
*/
|
@Permission
|
@ResponseBody
|
@BussinessLog(value = "新增优惠券")
|
@RequestMapping(value = "/add")
|
public Object add(MyCoupon myCoupon) {
|
myCoupon.setInfo(myCoupon.getUserInfo());
|
if(StrUtil.isNotEmpty(myCoupon.getUserInfo())){
|
myCoupon.setStock(0);
|
}else{
|
myCoupon.setStock(myCoupon.getNumber());
|
}
|
myCouponService.insert(myCoupon);
|
//有设置商品条件
|
if(StrUtil.isNotEmpty(myCoupon.getProductId())){
|
JSONArray couponProductList = JSONArray.parseArray(myCoupon.getProductId());
|
List<MyCouponProduct> myCouponProductList = new ArrayList<>();
|
for (int i = 0; i < couponProductList.size() ;i++){
|
JSONObject jsonObject = couponProductList.getJSONObject(i);
|
MyCouponProduct couponProduct = new MyCouponProduct();
|
couponProduct.setCouponId(myCoupon.getId());
|
couponProduct.setProductId(jsonObject.getInteger("id"));
|
couponProduct.setProductType(jsonObject.getInteger("type"));
|
myCouponProductList.add(couponProduct);
|
}
|
if (myCouponProductList.size() > 0) {
|
myCouponProductService.insertBatch(myCouponProductList);
|
}
|
}
|
if(StrUtil.isNotEmpty(myCoupon.getUserInfo())){
|
List<String> idList = Arrays.asList(
|
myCoupon.getUserInfo().split(",")
|
);
|
List<MyUserCoupon> userCouponList = idList.stream().map(userId->{
|
MyUserCoupon userCoupon = new MyUserCoupon();
|
userCoupon.setCouponId(myCoupon.getId());
|
userCoupon.setUserId(Integer.parseInt(userId));
|
userCoupon.setBeginTime(myCoupon.getBeginTime());
|
userCoupon.setEndTime(myCoupon.getEndTime());
|
return userCoupon;
|
}).collect(Collectors.toList());
|
myUserCouponService.insertBatch(userCouponList);
|
}
|
return SUCCESS_TIP;
|
}
|
/**
|
* 删除/批量删除
|
*/
|
@Permission
|
@ResponseBody
|
@BussinessLog(value = "删除/批量删除优惠券")
|
@RequestMapping(value = "/delete")
|
public Object delete(@RequestParam String ids) {
|
// 逻辑删除
|
myCouponService.updateForSet("is_delete = 1", new EntityWrapper<MyCoupon>().in("id", ids.split(",")));
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 修改优惠券
|
*/
|
@Permission
|
@ResponseBody
|
@BussinessLog(value = "修改优惠券")
|
@RequestMapping(value = "/update")
|
public Object update(MyCoupon myCoupon) {
|
myCouponService.updateById(myCoupon);
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 修改优惠券状态
|
*/
|
@ResponseBody
|
@BussinessLog(value = "修改优惠券状态")
|
@RequestMapping(value = "/updateState")
|
public Object updateState(Integer myCouponId, Integer state) {
|
myCouponService.updateForSet("state = " + state, new EntityWrapper<MyCoupon>().eq("id", myCouponId));
|
return SUCCESS_TIP;
|
}
|
|
/**
|
* 跳转优惠券详情
|
*/
|
@RequestMapping(value = "/detail/{myCouponId}")
|
public Object detail(@PathVariable("myCouponId") Integer myCouponId, Model model) {
|
MyCoupon myCoupon = myCouponService.selectById(myCouponId);
|
model.addAttribute("item",myCoupon);
|
Wrapper<MyCouponProduct> wrapper = new EntityWrapper<MyCouponProduct>().orderBy("id", false);
|
wrapper.eq("coupon_id",myCouponId);
|
List<MyCouponProduct> couponProductList = myCouponProductService.selectList(wrapper);
|
Wrapper<MallGoods> wrapper2 = new EntityWrapper<MallGoods>().orderBy("id", false);
|
List<Integer> idList =couponProductList.stream().map(couponProduct->{
|
return couponProduct.getProductId();
|
}).collect(Collectors.toList());
|
if(idList.size() == 0){
|
idList = Arrays.asList(0);
|
}
|
wrapper2.in("id",idList);
|
List<MallGoods> productList = goodsService.selectList(wrapper2);
|
model.addAttribute("productList",productList);
|
Wrapper wrapper3 = new EntityWrapper<AreaCity>().orderBy("id", false);
|
wrapper3.eq("is_open",1);
|
wrapper3.eq("is_delete", EnumIsDelete.EXISTED.index);
|
model.addAttribute("cityAreaList",areaCityService.selectList(wrapper3));
|
model.addAttribute("userList",new ArrayList<>());
|
if(StrUtil.isNotEmpty(myCoupon.getInfo())){
|
Wrapper userWrapper = new EntityWrapper<MemUser>().orderBy("id", false);
|
userWrapper.in("id",Arrays.asList(myCoupon.getInfo().split(",")));
|
List<MemUser> memUserList = memUserService.selectList(userWrapper);
|
model.addAttribute("userList",memUserList);
|
}
|
return PREFIX + "myCoupon_edit.html";
|
}
|
|
@RequestMapping(value = "/detailPrice/{myCouponId}")
|
public Object detailPrice(@PathVariable("myCouponId") Integer myCouponId, Model model) {
|
MyCoupon myCoupon = myCouponService.selectById(myCouponId);
|
model.addAttribute("item",myCoupon);
|
Wrapper<MyCouponProduct> wrapper = new EntityWrapper<MyCouponProduct>().orderBy("id", false);
|
wrapper.eq("coupon_id",myCouponId);
|
List<MyCouponProduct> couponProductList = myCouponProductService.selectList(wrapper);
|
Wrapper<MallGoods> wrapper2 = new EntityWrapper<MallGoods>().orderBy("id", false);
|
List<Integer> idList =couponProductList.stream().map(couponProduct->{
|
return couponProduct.getProductId();
|
}).collect(Collectors.toList());
|
if(idList.size() == 0){
|
idList = Arrays.asList(0);
|
}
|
wrapper2.in("id",idList);
|
List<MallGoods> productList = goodsService.selectList(wrapper2);
|
model.addAttribute("productList",productList);
|
Wrapper wrapper3 = new EntityWrapper<AreaCity>().orderBy("id", false);
|
wrapper3.eq("is_open",1);
|
wrapper3.eq("is_delete", EnumIsDelete.EXISTED.index);
|
model.addAttribute("cityAreaList",areaCityService.selectList(wrapper3));
|
return PREFIX_PRICE + "myCoupon_edit.html";
|
}
|
}
|