| package com.matrix.system.shopXcx.api.action; | 
|   | 
| import com.matrix.biz.bean.BizUser; | 
| 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.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.Collections; | 
| 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<ShopActivities> 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) { | 
|         BizUser user = redisUserLoginUtils.getLoginUser(BizUser.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) { | 
|         BizUser user = redisUserLoginUtils.getLoginUser(BizUser.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.getOpenId()); | 
|         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<ShopActivitiesSalonDistribute> list = shopActivitiesSalonAttributeDao.selectByActId(salonDTO.getActId()); | 
|         if (CollectionUtils.isNotEmpty(list)) { | 
|             List<ShopActivitiesSalonAttrRecord> attrRecords = new ArrayList<>(); | 
|             for (ShopActivitiesSalonDistribute salonDistribute : list) { | 
|                 ShopActivitiesSalonAttrRecord attrRecord = new ShopActivitiesSalonAttrRecord(); | 
|                 attrRecord.setAsrId(salonRecord.getId()); | 
|                 Map<String, String> 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) { | 
|         BizUser user = redisUserLoginUtils.getLoginUser(BizUser.class); | 
|         salonVO.setUserId(user.getOpenId()); | 
|         List<ShopActivities> list = shopActivitiesDao.selectSalonActivityByUser(salonVO); | 
|         return AjaxResult.buildSuccessInstance(list); | 
|     } | 
| } |