| package com.matrix.system.shopXcx.action; | 
|   | 
| import com.matrix.core.constance.MatrixConstance; | 
| import com.matrix.core.constance.SystemMessageCode; | 
| import com.matrix.core.pojo.PaginationVO; | 
| import com.matrix.core.tools.*; | 
| import com.matrix.core.web.BaseAction; | 
| import com.matrix.core.constance.SystemErrorCode; | 
| import com.matrix.core.anotations.RemoveRequestToken; | 
| import com.matrix.system.common.bean.SysUsers; | 
| import com.matrix.system.hive.plugin.util.CollectionUtils; | 
| import com.matrix.system.shopXcx.bean.*; | 
| import com.matrix.system.shopXcx.dao.*; | 
| import com.matrix.system.shopXcx.dto.SalonDTO; | 
| import com.matrix.system.shopXcx.dto.SecKillDTO; | 
| import org.springframework.stereotype.Controller; | 
| import com.matrix.core.exception.GlobleException; | 
| import org.springframework.transaction.annotation.Transactional; | 
| import org.springframework.web.bind.annotation.*; | 
| import com.matrix.core.anotations.SaveRequestToken; | 
| import com.matrix.core.pojo.AjaxResult; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.web.servlet.ModelAndView; | 
|   | 
| import java.math.BigDecimal; | 
| import java.util.Arrays; | 
| import java.util.Comparator; | 
| import java.util.List; | 
| import java.util.Map; | 
|   | 
| /** | 
|  * @author wzy | 
|  * @description 活动主表 | 
|  * @date 2020-03-21 15:26 | 
|  */ | 
| @Controller | 
| @RequestMapping(value = "admin/shopActivities") | 
| public class ShopActivitiesAction { | 
|   | 
|     @Autowired | 
|     private ShopActivitiesDao shopActivitiesDao; | 
|   | 
|     @Autowired | 
|     private ShopActivitiesGroupInfoDao shopActivitiesGroupInfoDao; | 
|   | 
|     @Autowired | 
|     private ShopActivitiesGroupPriceDao shopActivitiesGroupPriceDao; | 
|   | 
|     @Autowired | 
|     private ShopActivitiesGroupJoinDao shopActivitiesGroupJoinDao; | 
|   | 
|     @Autowired | 
|     private ShopActivitiesSeckillInfoDao shopActivitiesSeckillInfoDao; | 
|   | 
|     @Autowired | 
|     private ShopSkuDao shopSkuDao; | 
|   | 
|     @Autowired | 
|     private ShopActivitiesSalonAttributeDao shopActivitiesSalonAttributeDao; | 
|   | 
|     //记录编辑前的值Before_Edit_Value | 
|     public static final String BEV = "ShopActivities_BEV"; | 
|   | 
|   | 
|     /** | 
|      * 列表显示 | 
|      */ | 
|     @RequestMapping(value = "/showList") | 
|     public @ResponseBody | 
|     AjaxResult showList(ShopActivities shopActivities, PaginationVO pageVo) { | 
|         SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
|         if (pageVo == null) { | 
|             pageVo = new PaginationVO(); | 
|         } | 
|         shopActivities.setCompanyId(user.getCompanyId()); | 
|         List<ShopActivities> dataList = shopActivitiesDao.selectInPage(shopActivities, pageVo); | 
|         AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, dataList, | 
|                 shopActivitiesDao.selectTotalRecord(shopActivities)); | 
|         return result; | 
|     } | 
|   | 
|     /** | 
|      * 新增 | 
|      */ | 
|     @RequestMapping(value = "/addGroupActivities") | 
|     @ResponseBody | 
|     @Transactional | 
|     public AjaxResult addGroupActivities(@RequestBody ShopActivities shopActivities) { | 
|         SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
|   | 
|         if (shopActivities.getId() != null) { | 
|             Long actId = shopActivities.getId(); | 
|             ShopActivities exist = shopActivitiesDao.selectById(actId); | 
|             if (exist == null) { | 
|                 return AjaxResult.buildFailInstance("活动不存在"); | 
|             } | 
|   | 
|             List<ShopActivitiesGroupJoin> list = shopActivitiesGroupJoinDao.selectAllGroupBuyByActId(actId); | 
|             if (CollectionUtils.isNotEmpty(list)) { | 
|                 return AjaxResult.buildFailInstance("该活动已存在拼团,无法修改"); | 
|             } | 
|   | 
|             shopActivitiesDao.deleteById(actId); | 
|             shopActivitiesGroupInfoDao.deleteByActId(actId); | 
|             shopActivitiesGroupPriceDao.deleteByActId(actId); | 
|   | 
|         } | 
|   | 
|         List<ShopSku> list = shopSkuDao.selectByPid(shopActivities.getGroupInfo().getGoodsId().intValue()); | 
|         if (list.size() > 1) { | 
|             return AjaxResult.buildFailInstance("仅能选择一个规格的产品"); | 
|         } | 
|   | 
|         ShopActivitiesGroupInfo groupInfo = shopActivities.getGroupInfo(); | 
|         List<ShopActivitiesGroupPrice> prices = groupInfo.getGroupPriceList(); | 
|         shopActivities.setActBeginTime(DateUtil.stringToDate(shopActivities.getBeginTime(), DateUtil.DATE_FORMAT_SS)); | 
|         shopActivities.setActEndTime(DateUtil.stringToDate(shopActivities.getEndTime(), DateUtil.DATE_FORMAT_SS)); | 
|   | 
|         shopActivities.setCreateBy(user.getSuName()); | 
|         shopActivities.setUpdateBy(user.getSuName()); | 
|         shopActivities.setActStatus(ShopActivities.ACTIVITIES_STATUS_OPEN); | 
|         shopActivities.setActType(ShopActivities.ACTIVITIES_TYPE_GROUP); | 
|         shopActivities.setCompanyId(user.getCompanyId()); | 
|         shopActivitiesDao.insert(shopActivities); | 
|   | 
|         groupInfo.setActId(shopActivities.getId()); | 
|         groupInfo.setCreateBy(user.getSuName()); | 
|         groupInfo.setUpdateBy(user.getSuName()); | 
|         groupInfo.setCompanyId(user.getCompanyId()); | 
|         shopActivitiesGroupInfoDao.insert(groupInfo); | 
|   | 
|         if (CollectionUtils.isNotEmpty(prices)) { | 
|             prices.sort(new Comparator<ShopActivitiesGroupPrice>() { | 
|                 @Override | 
|                 public int compare(ShopActivitiesGroupPrice o1, ShopActivitiesGroupPrice o2) { | 
|                     return (o1.getGpPrice().subtract(o2.getGpPrice())).intValue(); | 
|                 } | 
|             }); | 
|   | 
|             int i = 1; | 
|             for (ShopActivitiesGroupPrice price : prices) { | 
|                 price.setCreateBy(user.getSuName()); | 
|                 price.setUpdateBy(user.getSuName()); | 
|                 price.setActId(shopActivities.getId()); | 
|                 price.setGpId(groupInfo.getId()); | 
|                 price.setSeq(i); | 
|                 price.setCompanyId(user.getCompanyId()); | 
|                 i++; | 
|             } | 
|         } | 
|         int i = shopActivitiesGroupPriceDao.batchInsert(prices); | 
|         if (i > 0) { | 
|             return AjaxResult.buildSuccessInstance("添加成功"); | 
|         } else { | 
|             return AjaxResult.buildSuccessInstance("添加失败"); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 查询某个活动的基本信息 | 
|      * | 
|      * @param id | 
|      * @return | 
|      */ | 
|     @RequestMapping(value = "/findShopActivitiesById/{id}") | 
|     @ResponseBody | 
|     public AjaxResult findShopActivitiesById(@PathVariable Long id) { | 
|   | 
|         ShopActivities shopActivities = shopActivitiesDao.selectShopActivitiesById(id); | 
|         List<ShopActivitiesGroupPrice> groupPrices = shopActivitiesGroupPriceDao.selectGroupPriceByActId(shopActivities.getId()); | 
|         AjaxResult ajaxResult = new AjaxResult(AjaxResult.STATUS_SUCCESS, null); | 
|         ajaxResult.putInMap("shopActivities", shopActivities); | 
|         ajaxResult.putInMap("groupPrices", groupPrices); | 
|         return ajaxResult; | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 新增秒杀活动 | 
|      * | 
|      * @param secKillDTO | 
|      * @return | 
|      */ | 
|     @RequestMapping(value = "/addSecKillAct") | 
|     @ResponseBody | 
|     @Transactional | 
|     public AjaxResult addSecKillAct(@RequestBody SecKillDTO secKillDTO) { | 
|         SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
|   | 
|         if (secKillDTO.getId() != null) { | 
|             ShopActivities exist = shopActivitiesDao.selectById(secKillDTO.getId()); | 
|             if (exist == null) { | 
|                 return AjaxResult.buildSuccessInstance("活动不存在"); | 
|             } | 
|             // TODO 需要判断当前活动是否产生了数据 | 
|   | 
|             shopActivitiesDao.deleteById(secKillDTO.getId()); | 
|             shopActivitiesSeckillInfoDao.deleteByActId(secKillDTO.getId()); | 
|         } | 
|   | 
|   | 
|         ShopActivities shopActivities = new ShopActivities(); | 
|         shopActivities.setActType(ShopActivities.ACTIVITIES_TYPE_SECKILL); | 
|         shopActivities.setActStatus(ShopActivities.ACTIVITIES_STATUS_OPEN); | 
|         shopActivities.setActBeginTime(secKillDTO.getBeginTime()); | 
|         shopActivities.setActEndTime(secKillDTO.getEndTime()); | 
|         shopActivities.setActName(secKillDTO.getActName()); | 
|         shopActivities.setShopIds(secKillDTO.getShopIds()); | 
|         shopActivities.setUpdateBy(sysUsers.getSuName()); | 
|         shopActivities.setCreateBy(sysUsers.getSuName()); | 
|         shopActivities.setActRemark(secKillDTO.getActRemark()); | 
|         shopActivities.setCompanyId(sysUsers.getCompanyId()); | 
|   | 
|         shopActivitiesDao.insert(shopActivities); | 
|   | 
|         for (ShopActivitiesSeckillInfo seckillInfo : secKillDTO.getTableData()) { | 
|             seckillInfo.setActId(shopActivities.getId()); | 
|             seckillInfo.setCreateBy(sysUsers.getSuName()); | 
|             seckillInfo.setUpdateBy(sysUsers.getSuName()); | 
|             seckillInfo.setSiRemainCnt(seckillInfo.getSiCount()); | 
|             seckillInfo.setCompanyId(sysUsers.getCompanyId()); | 
|         } | 
|         shopActivitiesSeckillInfoDao.batchInsert(secKillDTO.getTableData()); | 
|   | 
|   | 
|         return AjaxResult.buildSuccessInstance("添加成功"); | 
|     } | 
|   | 
|     @RequestMapping(value = "/findSecKillActivitiesById/{id}") | 
|     @ResponseBody | 
|     public AjaxResult findSecKillActivitiesById(@PathVariable("id") Long id) { | 
|         ShopActivities shopActivities = shopActivitiesDao.selectById(id); | 
|         List<ShopActivitiesSeckillInfo> seckillInfos = shopActivitiesSeckillInfoDao.selectSeckillInfoByActId(shopActivities.getId()); | 
|         AjaxResult ajaxResult = new AjaxResult(AjaxResult.STATUS_SUCCESS, "获取成功"); | 
|         ajaxResult.putInMap("activities", shopActivities); | 
|         ajaxResult.putInMap("seckill", seckillInfos); | 
|         return ajaxResult; | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 修改 | 
|      */ | 
|     @RemoveRequestToken | 
|     @RequestMapping(value = "/modifyShopActivities") | 
|     public @ResponseBody | 
|     AjaxResult modifyShopActivities(ShopActivities newShopActivities) { | 
|         ShopActivities oldShopActivities = WebUtil.getSessionAttribute(BEV); | 
|         int i = 0; | 
|         Map<String, Object> modifyMap = null; | 
|         try { | 
|             if (!ModelUtils.isModified(oldShopActivities, newShopActivities)) { | 
|                 i = MatrixConstance.DML_SUCCESSS; | 
|             } | 
|             modifyMap = ModelUtils.comparePojo2Map(oldShopActivities, newShopActivities); | 
|         } catch (Exception e) { | 
|             throw new GlobleException(SystemErrorCode.DATA_UPDATE_FAIL, e, newShopActivities); | 
|         } | 
|         if (modifyMap.size() > 0) { | 
|             modifyMap.put("id", oldShopActivities.getId()); | 
|             shopActivitiesDao.updateByMap(modifyMap); | 
|         } | 
|         i = MatrixConstance.DML_SUCCESSS; | 
|         WebUtil.removeSessionAttribute(BEV); | 
|         if (i > 0) { | 
|             return new AjaxResult(AjaxResult.STATUS_SUCCESS, SystemMessageCode.UPDATE_SUCCES, "活动主表"); | 
|         } else { | 
|             throw new GlobleException(SystemErrorCode.DATA_UPDATE_FAIL); | 
|         } | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 进入修改界面 | 
|      */ | 
|     @SaveRequestToken | 
|     @RequestMapping(value = "/editForm") | 
|     public ModelAndView editForm(Long id) { | 
|         ShopActivities shopActivities = new ShopActivities(); | 
|         ModelAndView modelAndView = new ModelAndView("admin/shopActivities-form"); | 
|         if (id != null) { | 
|             shopActivities = shopActivitiesDao.selectById(id); | 
|             WebUtil.setSessionAttribute(BEV, shopActivities); | 
|         } | 
|         modelAndView.addObject("obj", shopActivities); | 
|         return modelAndView; | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 删除 | 
|      */ | 
|     @Transactional | 
|     @RequestMapping(value = "/del") | 
|     public @ResponseBody | 
|     AjaxResult del(String keys) { | 
|         List<String> ids = StringUtils.strToCollToString(keys, ","); | 
|         Long actId = Long.parseLong(ids.get(0)); | 
|         ShopActivities exist = shopActivitiesDao.selectById(actId); | 
|         if (exist == null) { | 
|             return AjaxResult.buildFailInstance("活动不存在"); | 
|         } | 
|   | 
|         List<ShopActivitiesGroupJoin> list = shopActivitiesGroupJoinDao.selectAllGroupBuyByActId(actId); | 
|         if (CollectionUtils.isNotEmpty(list)) { | 
|             return AjaxResult.buildFailInstance("该活动已存在拼团,无法修改"); | 
|         } | 
|   | 
|         shopActivitiesDao.deleteById(actId); | 
|         shopActivitiesGroupInfoDao.deleteByActId(actId); | 
|         int i = shopActivitiesGroupPriceDao.deleteByActId(actId); | 
|   | 
|         if (i > 0) { | 
|             return new AjaxResult(AjaxResult.STATUS_SUCCESS, SystemMessageCode.DELETE_SUCCES, i); | 
|         } else { | 
|             throw new GlobleException(SystemErrorCode.DATA_DELETE_FAIL); | 
|         } | 
|     } | 
|   | 
|     @RequestMapping(value = "/closeAct") | 
|     @ResponseBody | 
|     public AjaxResult closeAct(Long id) { | 
|         ShopActivities shopActivities = new ShopActivities(); | 
|         shopActivities.setId(id); | 
|         shopActivities.setActStatus(ShopActivities.ACTIVITIES_STATUS_CLOSE); | 
|         int i = shopActivitiesDao.updateByModel(shopActivities); | 
|         if (i > 0) { | 
|             return AjaxResult.buildSuccessInstance("关闭成功"); | 
|         } | 
|         return AjaxResult.buildFailInstance("关闭失败"); | 
|     } | 
|   | 
|     /** | 
|      * 新增沙龙活动 | 
|      * | 
|      * @param salonDTO | 
|      * @return | 
|      */ | 
|     @RequestMapping(value = "/addSalonActivity") | 
|     @ResponseBody | 
|     @Transactional | 
|     public AjaxResult addSalonActivity(@RequestBody SalonDTO salonDTO) { | 
|         SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
|   | 
|         ShopActivities shopActivities = new ShopActivities(); | 
|         // 判断id是否存在,若存在则为修改,先删除原有数据再重新插入 | 
|         if (salonDTO.getId() != null) { | 
|             shopActivities.setId(salonDTO.getId()); | 
|             shopActivitiesDao.deleteById(salonDTO.getId()); | 
|             shopActivitiesSalonAttributeDao.deleteByActId(salonDTO.getId()); | 
|         } | 
|   | 
|         shopActivities.setActName(salonDTO.getActName()); | 
|         shopActivities.setActType(ShopActivities.ACTIVITIES_TYPE_SALON); | 
|         shopActivities.setActBeginTime(salonDTO.getBeginTime()); | 
|         shopActivities.setActEndTime(salonDTO.getEndTime()); | 
|         shopActivities.setActStatus(ShopActivities.ACTIVITIES_STATUS_OPEN); | 
|         shopActivities.setActRemark(salonDTO.getActRemark()); | 
|         shopActivities.setShopIds(salonDTO.getShopIds()); | 
|         shopActivities.setActMax(salonDTO.getActMax()); | 
|         shopActivities.setCreateBy(sysUsers.getSuName()); | 
|         shopActivities.setUpdateBy(sysUsers.getSuName()); | 
|         shopActivities.setActImg(salonDTO.getActImg()); | 
|         shopActivities.setActContent(salonDTO.getActContent()); | 
|         shopActivities.setCompanyId(sysUsers.getCompanyId()); | 
|         shopActivitiesDao.insert(shopActivities); | 
|   | 
|         if (CollectionUtils.isNotEmpty(salonDTO.getAttrLists())) { | 
|             for (ShopActivitiesSalonDistribute distribute : salonDTO.getAttrLists()) { | 
|                 distribute.setActId(shopActivities.getId()); | 
|                 distribute.setUpdateBy(sysUsers.getSuName()); | 
|                 distribute.setCreateBy(sysUsers.getSuName()); | 
|                 distribute.setCompanyId(sysUsers.getCompanyId()); | 
|             } | 
|         } | 
|   | 
|         int i = shopActivitiesSalonAttributeDao.batchInsert(salonDTO.getAttrLists()); | 
|         if (i > 0) { | 
|             return AjaxResult.buildSuccessInstance("新增成功"); | 
|         } | 
|         return AjaxResult.buildFailInstance("新增失败"); | 
|     } | 
|   | 
|     @RequestMapping(value = "/findShopActivitiesSalonById/{id}") | 
|     @ResponseBody | 
|     public AjaxResult findShopActivitiesSalonById(@PathVariable("id") Long id) { | 
|         ShopActivities shopActivities = shopActivitiesDao.selectById(id); | 
|         if (shopActivities == null) { | 
|             return AjaxResult.buildSuccessInstance("活动不存在"); | 
|         } | 
|         List<ShopActivitiesSalonDistribute> list = shopActivitiesSalonAttributeDao.selectByActId(shopActivities.getId()); | 
|         AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功"); | 
|         ajaxResult.putInMap("activities", shopActivities); | 
|         ajaxResult.putInMap("list", list); | 
|         return ajaxResult; | 
|     } | 
| } |