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.service.*; import io.swagger.models.auth.In; 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("/merchantActivity") public class MerchantActivityController extends BaseController { private String PREFIX = "/system/merchantActivity/"; @Autowired private IMerchantCouponService merchantCouponService; @Autowired private IMerchantActivityService merchantActivityService; @Autowired private IUserMerchantCouponService userMerchantCouponService; @Autowired private ITMerchantService merchantService; @Autowired private IMerchantActivitySlaveService merchantActivitySlaveService; @Autowired private IUserService userService; @RequestMapping("/index") public String index() { return PREFIX + "merchantActivity.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> page = new PageFactory>().defaultPage(); List> list = merchantActivityService.list(startTime, endTime, type, merchantName, status, companyId, page); page.setRecords(list); return super.packForBT(page); } @RequestMapping("merchantActivity_add") public String merchantActivityAdd(Model model) { /*查询商家列表*/ List> list = merchantCouponService.getMerchantList(); model.addAttribute("item", list); return PREFIX + "merchantActivity_add.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"; } @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 couponIds = new ArrayList<>(); for (String id : split) { couponIds.add(Integer.valueOf(id)); } String[] split1 = merchantIds.split(","); List asList = Arrays.asList(split1); Page> page = new PageFactory>().defaultPage(); List> 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 activity * @return */ @RequestMapping("/add") @ResponseBody 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.setCompanyType(user.getRoleType()); activity.setCompanyId(user.getObjectId()); activity.setStatus(0); activity.setState(1); activity.setActivityType(1); activity.setCreateTime(new Date()); List activitySlaveList = activity.getMerchantActivitySlaveList(); Map> 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 merchantActivitySlaves = listMap.get(key); for (MerchantActivitySlave activitySlave : merchantActivitySlaves) { activitySlave.setMerchantActivityId(merchantActivity.getId()); activitySlave.setLaveNumber(activitySlave.getTotalNumber()); merchantActivitySlaveService.insert(activitySlave); } } return SUCCESS_TIP; } /** * 跳转到修改详情 */ @RequestMapping("/merchant_activity_update") public String merchantActivityUpdate(Integer id, Model model) { MerchantActivity activity = merchantActivityService.selectById(id); String orderType = activity.getOrderType(); String[] split = orderType.split(","); List asList = Arrays.asList(split); MerchantActivityVo vo = new MerchantActivityVo(); BeanUtils.copyProperties(activity, vo); vo.setAsList(asList); vo.setOrderTypeName(getOrderTypeName(activity.getOrderType())); /*券信息*/ List> mapList = merchantActivitySlaveService.getActivitySlaveList(vo.getId()); /*查询商家列表*/ List> list = merchantCouponService.getMerchantList(); model.addAttribute("merchantList", list); model.addAttribute("item", vo); model.addAttribute("mapList", mapList); model.addAttribute("asList", asList); LogObjectHolder.me().set(activity); return PREFIX + "merchantActivity_edit.html"; } /** * 开始/结束活动 * * @param ids * @param state * @return */ @RequestMapping("/renewState") @ResponseBody public Object renewState(String ids, Integer state) { List 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 wrapper = new EntityWrapper<>(); wrapper.in("id", activityIds); List activityList = merchantActivityService.selectList(wrapper); if (CollectionUtils.isNotEmpty(activityList)) { activityList.forEach(one -> { one.setStatus(state); merchantActivityService.updateById(one); }); } return SUCCESS_TIP; } /** * 删除数据 * * @param ids * @return */ @RequestMapping("/activityDelete") @ResponseBody public Object activityDelete(String ids) { List 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 wrapper = new EntityWrapper<>(); wrapper.in("id", activityIds); List activityList = merchantActivityService.selectList(wrapper); if (CollectionUtils.isNotEmpty(activityList)) { activityList.forEach(one -> { one.setState(3); //删除数据 one.setStatus(2);//结束活动 merchantActivityService.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> page = new PageFactory>().defaultPage(); List> 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 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 wrapper = new EntityWrapper<>(); wrapper.in("id", activityIds); List merchantCoupons = userMerchantCouponService.selectList(wrapper); if (CollectionUtils.isNotEmpty(merchantCoupons)) { merchantCoupons.forEach(one -> { one.setState(3); userMerchantCouponService.updateById(one); }); } return SUCCESS_TIP; } /** * 跳转审核列表 * * @return */ @RequestMapping("/activityExamineIndex") public String activityExamineIndex() { return PREFIX + "merchantActivityExamine.html"; } /*** * 商家活动审核列表 * @param startTime * @param endTime * @param type * @param auditStatus * @return */ @RequestMapping("/activityExamineList") @ResponseBody public Object activityExamineList(String startTime, String endTime, Integer type, Integer auditStatus) { Integer companyId = null; if (ShiroKit.getUser().getRoleType().equals(1)) { companyId = ShiroKit.getUser().getObjectId(); } Page> page = new PageFactory>().defaultPage(); List> list = merchantActivityService.activityExamineList(startTime, endTime, type, auditStatus, companyId, page); page.setRecords(list); return super.packForBT(page); } @RequestMapping("/activityExamine") public Object activityExamine(Integer id, Model model) { MerchantActivity activity = merchantActivityService.selectById(id); String orderType = activity.getOrderType(); String[] split = orderType.split(","); List asList = Arrays.asList(split); MerchantActivityVo vo = new MerchantActivityVo(); BeanUtils.copyProperties(activity, vo); vo.setAsList(asList); vo.setOrderTypeName(getOrderTypeName(activity.getOrderType())); /*券信息*/ List> mapList = merchantActivitySlaveService.getActivitySlaveList(vo.getId()); /*查询商家列表*/ List> list = merchantCouponService.getMerchantList(); model.addAttribute("merchantList", list); model.addAttribute("item", vo); model.addAttribute("mapList", mapList); model.addAttribute("asList", asList); LogObjectHolder.me().set(activity); return PREFIX + "ActivityExamine.html"; } @RequestMapping("/examine") @ResponseBody public Object examine(Integer id, Integer state, String auditNote) { MerchantActivity activity = merchantActivityService.selectById(id); Integer userId = ShiroKit.getUser().getId(); User user = userService.selectById(userId); if (ToolUtil.isNotEmpty(activity)) { activity.setAuditStatus(state); activity.setAuditNote(auditNote); activity.setAuditUserId(user.getObjectId()); activity.setAuditTime(new Date()); merchantActivityService.updateById(activity); } return SUCCESS_TIP; } }