package com.matrix.system.shopXcx.api.action; import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.core.exception.GlobleException; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.pojo.PaginationVO; import com.matrix.core.tools.LogUtil; import com.matrix.system.common.interceptor.HostInterceptor; import com.matrix.system.hive.bean.SysVipInfo; import com.matrix.system.hive.plugin.util.CollectionUtils; import com.matrix.system.shopXcx.api.vo.SalonVO; import com.matrix.system.shopXcx.bean.ShopActivities; import com.matrix.system.shopXcx.bean.ShopActivitiesSalonAttrRecord; import com.matrix.system.shopXcx.bean.ShopActivitiesSalonDistribute; import com.matrix.system.shopXcx.bean.ShopActivitiesSalonRecord; import com.matrix.system.shopXcx.dao.ShopActivitiesDao; import com.matrix.system.shopXcx.dao.ShopActivitiesSalonAttrRecordDao; import com.matrix.system.shopXcx.dao.ShopActivitiesSalonAttributeDao; import com.matrix.system.shopXcx.dao.ShopActivitiesSalonRecordDao; import com.matrix.system.shopXcx.dto.CreateSalonDTO; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @author wzy * @date 2020-04-21 11:09 **/ @RestController @CrossOrigin(origins = "*") @RequestMapping(value = "/wxapi/salon") public class WxShopActivitiesSalonAction { @Autowired private ShopActivitiesDao shopActivitiesDao; @Autowired private ShopActivitiesSalonAttributeDao shopActivitiesSalonAttributeDao; @Autowired private RedisUserLoginUtils redisUserLoginUtils; @Autowired private ShopActivitiesSalonRecordDao shopActivitiesSalonRecordDao; @Autowired private ShopActivitiesSalonAttrRecordDao shopActivitiesSalonAttrRecordDao; /** * 前端分页查询沙龙活动 * * @param salonVO * @return */ @PostMapping(value = "/findSalonActivitiesInPage") public AjaxResult findSalonActivitiesInPage(@RequestBody SalonVO salonVO) { ShopActivities shopActivities = new ShopActivities(); shopActivities.setActType(ShopActivities.ACTIVITIES_TYPE_SALON); shopActivities.setShopIds(salonVO.getShopId().toString()); shopActivities.setCompanyId(HostInterceptor.getCompanyId()); PaginationVO pageVo = new PaginationVO(); pageVo.setLimit(salonVO.getLimit()); pageVo.setOffset(salonVO.getOffset()); List list = shopActivitiesDao.selectInPage(shopActivities, pageVo); AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(list, shopActivitiesDao.selectTotalRecord(shopActivities)); return ajaxResult; } /** * 获取沙龙活动详情 * * @param id * @return */ @GetMapping(value = "/findSalonInfoById/{id}") public AjaxResult findSalonInfoById(@PathVariable("id") Long id) { SysVipInfo user = redisUserLoginUtils.getLoginUser(SysVipInfo.class); ShopActivities shopActivities = shopActivitiesDao.selectSalonActivityById(id); ShopActivitiesSalonRecord salonRecord = shopActivitiesSalonRecordDao.selectSalonRecordByUserIdAndActId(user.getOpenId(), id); AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功"); if(shopActivities.getActEndTime().getTime() - System.currentTimeMillis() < 0 || shopActivities.getActStatus() == ShopActivities.ACTIVITIES_STATUS_CLOSE) { ajaxResult.putInMap("status", 2); } else { ajaxResult.putInMap("status", 1); } ajaxResult.putInMap("activity", shopActivities); ajaxResult.putInMap("userRecord", salonRecord); return ajaxResult; } /** * 加入沙龙活动 * * @param salonDTO * @return */ @PostMapping(value = "/joinSalonActivity") @Transactional public AjaxResult joinSalonActivity(@RequestBody CreateSalonDTO salonDTO) { SysVipInfo user = redisUserLoginUtils.getLoginUser(SysVipInfo.class); ShopActivities shopActivities = shopActivitiesDao.selectById(salonDTO.getActId()); if (shopActivities == null) { return AjaxResult.buildFailInstance("活动不存在"); } ShopActivitiesSalonRecord record = shopActivitiesSalonRecordDao.selectSalonRecordByUserIdAndActId(user.getOpenId(), salonDTO.getActId()); if (record != null) { return AjaxResult.buildFailInstance("该用户已经参加过了"); } if (shopActivities.getActMax() != null && shopActivities.getActMax() != 0) { ShopActivitiesSalonRecord salonRecord = new ShopActivitiesSalonRecord(); salonRecord.setActId(salonDTO.getActId()); int count = shopActivitiesSalonRecordDao.selectTotalRecord(salonRecord); if (count + 1 > shopActivities.getActMax()) { return AjaxResult.buildFailInstance("活动参与人数已满"); } } ShopActivitiesSalonRecord salonRecord = new ShopActivitiesSalonRecord(); salonRecord.setActId(salonDTO.getActId()); salonRecord.setUserId(user.getId()); salonRecord.setCreateBy(user.getNickName()); salonRecord.setUpdateBy(user.getNickName()); salonRecord.setStatus(ShopActivitiesSalonRecord.JOIN_STATUS_ING); salonRecord.setShopId(salonDTO.getShopId()); salonRecord.setCompanyId(shopActivities.getCompanyId()); shopActivitiesSalonRecordDao.insert(salonRecord); List list = shopActivitiesSalonAttributeDao.selectByActId(salonDTO.getActId()); if (CollectionUtils.isNotEmpty(list)) { List attrRecords = new ArrayList<>(); for (ShopActivitiesSalonDistribute salonDistribute : list) { ShopActivitiesSalonAttrRecord attrRecord = new ShopActivitiesSalonAttrRecord(); attrRecord.setAsrId(salonRecord.getId()); Map attrs = salonDTO.getAttrLists(); String attrValue = attrs.get(salonDistribute.getAttrName()); LogUtil.info("#{}#", attrValue); if (StringUtils.isBlank(attrValue)) { throw new GlobleException("有信息字段未填写"); } else { attrRecord.setAttrName(salonDistribute.getAttrName()); attrRecord.setAttrValue(attrValue); attrRecord.setCompanyId(shopActivities.getCompanyId()); attrRecords.add(attrRecord); } } if (CollectionUtils.isNotEmpty(attrRecords)) { shopActivitiesSalonAttrRecordDao.batchInsert(attrRecords); } else { throw new GlobleException("参数异常"); } } return AjaxResult.buildSuccessInstance("申请成功,等待审核"); } /** * 查询用户所有加入活动 * * @return */ @RequestMapping(value = "/findSalonListByUser") public AjaxResult findSalonListByUser(@RequestBody SalonVO salonVO) { SysVipInfo user = redisUserLoginUtils.getLoginUser(SysVipInfo.class); salonVO.setUserId(user.getOpenId()); List list = shopActivitiesDao.selectSalonActivityByUser(salonVO); return AjaxResult.buildSuccessInstance(list); } }