123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- package com.caimei.modules.coupon.web;
- import com.caimei.modules.coupon.entity.CmCoupon;
- import com.caimei.modules.coupon.entity.CmCouponAssociate;
- import com.caimei.modules.coupon.entity.CmCouponRedemptionCode;
- import com.caimei.modules.coupon.service.AsyncService;
- import com.caimei.modules.coupon.service.CmCouponService;
- import com.caimei.modules.order.dao.NewShopOrderDao;
- import com.caimei.modules.order.service.NewOrderService;
- import com.caimei.modules.order.service.WeChatService;
- import com.caimei.modules.product.entity.Product;
- import com.caimei.modules.product.service.ProductService;
- import com.caimei.modules.sys.utils.SMSUtils;
- import com.caimei.modules.user.dao.CmUserDao;
- import com.caimei.modules.user.dao.MessageCenterDao;
- import com.caimei.modules.user.dao.NewCmClubDao;
- import com.caimei.modules.user.entity.CmUser;
- import com.caimei.modules.user.entity.MessageCenter;
- import com.caimei.modules.user.entity.NewCmClub;
- import com.caimei.modules.user.entity.NewCmShop;
- import com.caimei.po.User;
- import com.caimei.utils.AppUtils;
- import com.thinkgem.jeesite.common.config.Global;
- import com.thinkgem.jeesite.common.persistence.Page;
- import com.thinkgem.jeesite.common.utils.StringUtils;
- import com.thinkgem.jeesite.common.web.BaseController;
- import org.apache.shiro.authz.annotation.RequiresPermissions;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.scheduling.annotation.Async;
- import org.springframework.scheduling.annotation.EnableAsync;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.ModelAttribute;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.servlet.mvc.support.RedirectAttributes;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.*;
- /**
- * 优惠券管理Controller
- *
- * @author plf
- * @version 2021-08-02
- */
- @Controller
- @RequestMapping(value = "${adminPath}/coupon/cmCoupon")
- public class CmCouponController extends BaseController {
- @Autowired
- private CmCouponService cmCouponService;
- @Autowired
- private CmUserDao cmUserDao;
- @Autowired
- private NewCmClubDao newCmClubDao;
- @Autowired
- private ProductService productService;
- @Autowired
- private MessageCenterDao messageCenterDao;
- @Autowired
- private NewOrderService newOrderService;
- @Autowired
- private NewShopOrderDao newShopOrderDao;
- @Autowired
- private WeChatService weChatService;
- @Value("${wwwServer}")
- private String domain;
- @Autowired
- private AsyncService asyncService;
- @ModelAttribute
- public CmCoupon get(@RequestParam(required = false) String id) {
- CmCoupon entity = null;
- if (StringUtils.isNotBlank(id)) {
- entity = cmCouponService.get(id);
- }
- if (entity == null) {
- entity = new CmCoupon();
- }
- return entity;
- }
- @RequiresPermissions("coupon:cmCoupon:view")
- @RequestMapping(value = {"list", ""})
- public String list(CmCoupon cmCoupon, HttpServletRequest request, HttpServletResponse response, Model model) {
- cmCoupon.setCouponsMode("0");
- if (null == cmCoupon.getMoneyCouponFlag()) {
- cmCoupon.setMoneyCouponFlag(2);
- }
- Page<CmCoupon> page = cmCouponService.findPage(new Page<CmCoupon>(request, response), cmCoupon);
- model.addAttribute("page", page);
- if (0 == cmCoupon.getCouponType()) {
- //活动券
- return "modules/coupon/cmCouponList";
- } else if (1 == cmCoupon.getCouponType()) {
- //品类券
- return "modules/coupon/couponCategoryList";
- } else if (2 == cmCoupon.getCouponType()) {
- //用户专享券
- return "modules/coupon/couponUserExclusiveList";
- } else if (3 == cmCoupon.getCouponType()) {
- //店铺券
- return "modules/coupon/couponShopList";
- } else if (4 == cmCoupon.getCouponType()) {
- //新用户券
- return "modules/coupon/couponNewUserList";
- } else if (1 == cmCoupon.getMoneyCouponFlag()) {
- //价值优惠券
- return "modules/coupon/cmMoneyCouponList";
- }
- return null;
- }
- @RequiresPermissions("coupon:cmCoupon:view")
- @RequestMapping(value = "form")
- public String form(CmCoupon cmCoupon, Model model) {
- model.addAttribute("cmCoupon", cmCoupon);
- if (0 == cmCoupon.getCouponType()) {
- List<CmCouponAssociate> associateList = new ArrayList<>();
- if (StringUtils.isNotBlank(cmCoupon.getId()) && "2".equals(cmCoupon.getProductType())) {
- associateList = cmCouponService.findByProductType(cmCoupon);
- }
- model.addAttribute("associateList", associateList);
- return "modules/coupon/cmCouponForm";
- } else if (1 == cmCoupon.getCouponType()) {
- return "modules/coupon/couponCategoryForm";
- } else if (2 == cmCoupon.getCouponType()) {
- CmUser cmUser = null;
- if (cmCoupon.getUserId() != null) {
- cmUser = cmUserDao.get(cmCoupon.getUserId().toString());
- NewCmClub club = newCmClubDao.getclubByUserId(cmCoupon.getUserId());
- cmUser.setShortName(club.getSname());
- }
- model.addAttribute("cmUser", cmUser);
- return "modules/coupon/couponUserExclusiveForm";
- } else if (3 == cmCoupon.getCouponType()) {
- return "modules/coupon/couponShopForm";
- } else {
- return "modules/coupon/couponNewUserForm";
- }
- }
- @RequestMapping(value = "save")
- public String save(CmCoupon cmCoupon, Model model, RedirectAttributes redirectAttributes) {
- if (!beanValidator(model, cmCoupon)) {
- return form(cmCoupon, model);
- }
- //等于空就是添加否则是修改
- if ("".equals(cmCoupon.getId())) {
- asyncService.consumer(cmCoupon);
- }
- cmCouponService.save(cmCoupon);
- addMessage(redirectAttributes, "保存优惠券成功");
- return "redirect:" + Global.getAdminPath() + "/coupon/cmCoupon/list?couponType=" + cmCoupon.getCouponType();
- }
- @RequestMapping(value = "delete")
- public String delete(CmCoupon cmCoupon, RedirectAttributes redirectAttributes) {
- cmCouponService.delete(cmCoupon);
- addMessage(redirectAttributes, "删除优惠券成功");
- if ("1".equals(cmCoupon.getCouponsMode())) {
- return "redirect:" + Global.getAdminPath() + "/coupon/cmCoupon/codeCouponList";
- }
- if (null != cmCoupon.getMoneyCouponFlag() && 1 == (cmCoupon.getMoneyCouponFlag())) {
- return "redirect:" + Global.getAdminPath() + "/coupon/cmCoupon/list?moneyCouponFlag=1&&couponType=5";
- }
- return "redirect:" + Global.getAdminPath() + "/coupon/cmCoupon/list?couponType=" + cmCoupon.getCouponType();
- }
- /**
- * 选择商品页面
- */
- @RequestMapping(value = "toAddProduct")
- public String toAddProduct(Product product, Model model, HttpServletRequest request, HttpServletResponse response) {
- //todo 当前版本限制死为仅选取综合供应商的商品
- Page<Product> page = cmCouponService.findProductList(new Page<Product>(request, response), product);
- model.addAttribute("page", page);
- model.addAttribute("productIds", product.getProductIds());
- return "/modules/coupon/toAddProduct";
- }
- /**
- * 关闭优惠券
- */
- @RequestMapping("close")
- public String close(CmCoupon cmCoupon, RedirectAttributes redirectAttributes) {
- cmCouponService.close(cmCoupon);
- addMessage(redirectAttributes, "关闭优惠券成功");
- if ("1".equals(cmCoupon.getCouponsMode())) {
- return "redirect:" + Global.getAdminPath() + "/coupon/cmCoupon/codeCouponList";
- }
- return "redirect:" + Global.getAdminPath() + "/coupon/cmCoupon/list?couponType=" + cmCoupon.getCouponType();
- }
- /**
- * 开启优惠券
- */
- @RequestMapping("open")
- public String open(CmCoupon cmCoupon, RedirectAttributes redirectAttributes) {
- cmCouponService.open(cmCoupon);
- addMessage(redirectAttributes, "开启优惠券成功");
- if ("1".equals(cmCoupon.getCouponsMode())) {
- return "redirect:" + Global.getAdminPath() + "/coupon/cmCoupon/codeCouponList";
- }
- return "redirect:" + Global.getAdminPath() + "/coupon/cmCoupon/list?couponType=" + cmCoupon.getCouponType();
- }
- /**
- * 选择机构页面
- */
- @RequestMapping("toAddClub")
- public String toAddClub(CmUser cmUser, Model model, HttpServletRequest request, HttpServletResponse response) {
- Page<CmUser> page = cmCouponService.findUserList(new Page<CmUser>(request, response), cmUser);
- model.addAttribute("page", page);
- return "/modules/coupon/toAddClub";
- }
- /**
- * 选择供应商页面
- */
- @RequestMapping("toAddShop")
- public String toAddShop(NewCmShop newCmShop, Model model, HttpServletRequest request, HttpServletResponse response) {
- Page<NewCmShop> page = cmCouponService.findShopList(new Page<NewCmShop>(request, response), newCmShop);
- model.addAttribute("page", page);
- return "/modules/coupon/toAddShop";
- }
- /**
- * 兑换码优惠券列表
- */
- @RequestMapping("codeCouponList")
- public String redemptionCodeCouponList(CmCoupon cmCoupon, HttpServletRequest request, HttpServletResponse response, Model model) {
- cmCoupon.setCouponsMode("1");
- Page<CmCoupon> page = cmCouponService.findPage(new Page<CmCoupon>(request, response), cmCoupon);
- model.addAttribute("page", page);
- return "/modules/coupon/redemptionCodeCouponList";
- }
- /**
- * 兑换码优惠券-添加编辑页面
- */
- @RequestMapping("codeCouponForm")
- public String redemptionCodeCouponForm(CmCoupon cmCoupon, Model model) {
- model.addAttribute("cmCoupon", cmCoupon);
- if (cmCoupon != null && cmCoupon.getCouponType() != null) {
- if (0 == cmCoupon.getCouponType()) {
- List<CmCouponAssociate> associateList = new ArrayList<>();
- if (StringUtils.isNotBlank(cmCoupon.getId()) && "2".equals(cmCoupon.getProductType())) {
- associateList = cmCouponService.findByProductType(cmCoupon);
- }
- model.addAttribute("associateList", associateList);
- } else if (2 == cmCoupon.getCouponType()) {
- CmUser cmUser = null;
- if (cmCoupon.getUserId() != null) {
- cmUser = cmUserDao.get(cmCoupon.getUserId().toString());
- NewCmClub club = newCmClubDao.getclubByUserId(cmCoupon.getUserId());
- cmUser.setShortName(club.getSname());
- }
- model.addAttribute("cmUser", cmUser);
- }
- }
- return "/modules/coupon/redemptionCodeCouponForm";
- }
- //价值优惠券
- @RequestMapping("moneyCouponForm")
- public String moneyCouponForm(CmCoupon cmCoupon, Model model) {
- model.addAttribute("cmCoupon", cmCoupon);
- if (cmCoupon != null && cmCoupon.getCouponType() != null) {
- if (0 == cmCoupon.getCouponType()) {
- List<CmCouponAssociate> associateList = new ArrayList<>();
- if (StringUtils.isNotBlank(cmCoupon.getId()) && "2".equals(cmCoupon.getProductType())) {
- associateList = cmCouponService.findByProductType(cmCoupon);
- }
- model.addAttribute("associateList", associateList);
- } else if (2 == cmCoupon.getCouponType()) {
- CmUser cmUser = null;
- if (cmCoupon.getUserId() != null) {
- cmUser = cmUserDao.get(cmCoupon.getUserId().toString());
- NewCmClub club = newCmClubDao.getclubByUserId(cmCoupon.getUserId());
- cmUser.setShortName(club.getSname());
- }
- model.addAttribute("cmUser", cmUser);
- }
- }
- return "/modules/coupon/MoneyCouponForm";
- }
- /**
- * 兑换码优惠券-保存
- */
- @RequestMapping("codeCouponSave")
- public String redemptionCodeCouponSave(CmCoupon cmCoupon, RedirectAttributes redirectAttributes) {
- cmCouponService.redemptionCodeCouponSave(cmCoupon);
- addMessage(redirectAttributes, "保存兑换优惠券成功");
- return "redirect:" + Global.getAdminPath() + "/coupon/cmCoupon/codeCouponList";
- }
- /**
- * 价值优惠券保存
- *
- * @param cmCoupon
- * @param redirectAttributes
- * @return
- */
- @RequestMapping("moneyCouponSave")
- public String moneyCouponSave(CmCoupon cmCoupon, RedirectAttributes redirectAttributes) {
- cmCouponService.moneyCouponSave(cmCoupon);
- addMessage(redirectAttributes, "保存价值优惠券成功");
- return "redirect:" + Global.getAdminPath() + "/coupon/cmCoupon/list?moneyCouponFlag=1&&couponType=5";
- }
- /**
- * 查看兑换码页面
- */
- @RequestMapping("redemptionCode")
- public String redemptionCodeList(CmCouponRedemptionCode redemptionCode, HttpServletRequest request, HttpServletResponse response, Model model) {
- Page<CmCouponRedemptionCode> page = cmCouponService.redemptionCodeList(new Page<CmCouponRedemptionCode>(request, response), redemptionCode);
- model.addAttribute("page", page);
- model.addAttribute("redemptionCode", redemptionCode);
- return "/modules/coupon/redemptionCodeList";
- }
- /**
- * 查看商品优惠券详情
- */
- @RequestMapping("productDetails")
- public String productCouponDetails(Integer productId, Integer userId, Model model) {
- Product product = productService.get(productId.toString());
- String wwwServer = Global.getConfig("wwwServer");
- product.setMainImage(AppUtils.getImageURL("product", product.getMainImage(), 0, wwwServer));
- //展示全部可用普通优惠券,不包含已领取兑换优惠券
- List<CmCoupon> ordinaryCoupons = cmCouponService.findClubCouponList(product, userId, 2);
- //展示全部可用兑换优惠券
- List<CmCoupon> redeemCoupons = cmCouponService.findNotRedeemedCoupon(product);
- //展示全部可用价值优惠券
- List<CmCoupon> moneyCoupons = cmCouponService.findClubCouponList(product, userId, 1);
- model.addAttribute("product", product);
- model.addAttribute("ordinaryCoupons", ordinaryCoupons);
- model.addAttribute("redeemCoupons", redeemCoupons);
- model.addAttribute("moneyCoupons", moneyCoupons);
- return "/modules/coupon/productCouponDetails";
- }
- }
|