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; 
 | 
    } 
 | 
} 
 |