| | |
| | | package com.matrix.system.shopXcx.api.action; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.matrix.biz.bean.BizUser; |
| | | import com.matrix.biz.dao.BizUserDao; |
| | | import com.matrix.component.rabbitmq.RabiitMqTemplate; |
| | | import com.matrix.component.redis.RedisUserLoginUtils; |
| | | import com.matrix.core.constance.MatrixConstance; |
| | | import com.matrix.core.exception.GlobleException; |
| | | import com.matrix.core.pojo.AjaxResult; |
| | | import com.matrix.core.pojo.PaginationVO; |
| | | import com.matrix.core.pojo.VerifyResult; |
| | | import com.matrix.core.tools.DateUtil; |
| | | import com.matrix.core.tools.StringUtils; |
| | | import com.matrix.core.tools.WebUtil; |
| | | import com.matrix.system.app.dto.ServiceOrderListDto; |
| | | import com.matrix.system.app.mapper.SysBeauticianStateMapper; |
| | | import com.matrix.system.app.mapper.SysProjServiceMapper; |
| | | import com.matrix.system.app.mapper.SysProjUseMapper; |
| | | import com.matrix.system.app.vo.*; |
| | | import com.matrix.system.common.bean.SysUsers; |
| | | import com.matrix.system.common.dao.SysUsersDao; |
| | | import com.matrix.system.common.interceptor.HostInterceptor; |
| | | import com.matrix.system.common.tools.DataAuthUtil; |
| | | import com.matrix.system.common.tools.LocationUtil; |
| | | import com.matrix.system.constance.Dictionary; |
| | | import com.matrix.system.hive.bean.*; |
| | | import com.matrix.system.hive.dao.*; |
| | | import com.matrix.system.hive.plugin.message.StringUtil; |
| | | import com.matrix.system.hive.plugin.util.CollectionUtils; |
| | | import com.matrix.core.tools.DateUtil; |
| | | import com.matrix.system.hive.service.CodeService; |
| | | import com.matrix.system.hive.service.SysProjUseService; |
| | | import com.matrix.system.hive.service.SysWorkBeatuistaffService; |
| | | import com.matrix.system.hive.service.SysWorktimeService; |
| | | import com.matrix.system.hive.service.*; |
| | | import com.matrix.system.shopXcx.bean.ShopProduct; |
| | | import com.matrix.system.shopXcx.dao.ShopProductDao; |
| | | import com.matrix.system.shopXcx.dao.ShopSkuDao; |
| | | import com.matrix.system.shopXcx.dto.YYDayOfWeek; |
| | | import com.matrix.system.shopXcx.dto.YYmonth; |
| | | import com.matrix.system.shopXcx.mqTask.DTO.UserProjInfo; |
| | | import com.matrix.system.shopXcx.mqTask.MQTaskRouting; |
| | | import com.matrix.system.shopXcx.shopEnum.TemplateMsgType; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | |
| | | SysShopInfoDao shopInfoDao; |
| | | |
| | | @Autowired |
| | | private SysVipInfoDao vipDap; |
| | | private SysVipInfoDao vipInfoDao; |
| | | |
| | | @Autowired |
| | | private OnlinebookingDao onlinebookingDao; |
| | | @Autowired |
| | | private SysProjServicesService projServicesService; |
| | | |
| | | @Autowired |
| | | private SysProjServicesDao projServicesDao; |
| | | |
| | | @Autowired |
| | | private SysBeauticianStateService sysBeauticianStateService; |
| | | |
| | | @Autowired |
| | | RedisUserLoginUtils redisUserLoginUtils; |
| | |
| | | @Autowired |
| | | RabiitMqTemplate rabiitMqTemplate; |
| | | |
| | | @Autowired |
| | | SysProjUseDao projUseDao; |
| | | |
| | | @Autowired |
| | | ShopSkuDao skuDao; |
| | | |
| | | @Autowired |
| | | ShoppingGoodsAssembleDao shoppingGoodsAssembleDao; |
| | |
| | | @ResponseBody |
| | | public |
| | | AjaxResult getUserPro(@PathVariable String phone) { |
| | | SysVipInfo vipInfo = vipDap.selectByPhone(phone); |
| | | // 根据时间获取一段排班码 |
| | | Map<Object, Object> taocanProjMap = new HashMap<>(); |
| | | List<UserProjInfo> userProjInfoList = new ArrayList(); |
| | | SysProjUse sysProjUse = new SysProjUse(); |
| | | sysProjUse.setVipId(vipInfo.getId()); |
| | | sysProjUse.setIsOver(Dictionary.DELETED_N); |
| | | sysProjUse.setIsOver(Dictionary.DELETED_N); |
| | | sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_YX); |
| | | // 查询出该会员的所有可消耗的选择 |
| | | List<SysProjUse> sysProjUseList = projUseService.findByModel(sysProjUse); |
| | | for (int i = 0; i < sysProjUseList.size(); i++) { |
| | | if (sysProjUseList.get(i).getTaocanId() != null) { |
| | | String flag = sysProjUseList.get(i).getOrderItemId()+""; |
| | | if (taocanProjMap.keySet().contains(flag)) { |
| | | ((UserProjInfo) taocanProjMap.get(flag)).getChildPro().add(coversion(sysProjUseList.get(i))); |
| | | } else { |
| | | SysProjUse pru = sysProjUseList.get(i); |
| | | UserProjInfo taocan = new UserProjInfo(); |
| | | taocan.setId(pru.getId()); |
| | | taocan.setName(pru.getProjName()); |
| | | if (pru.getSurplusCount() > 10000) { |
| | | taocan.setSurplusCount("不限"); |
| | | } else { |
| | | taocan.setSurplusCount(pru.getSurplusCount() + ""); |
| | | SysVipInfo vipInfo = vipInfoDao.selectByPhone(phone); |
| | | |
| | | if (vipInfo == null) { |
| | | throw new GlobleException("会员不存在"); |
| | | } |
| | | taocan.setChildPro(new ArrayList<UserProjInfo>()); |
| | | taocan.getChildPro().add(coversion(pru)); |
| | | taocanProjMap.put(flag, taocan); |
| | | ServiceProductListVo productListVo = new ServiceProductListVo(); |
| | | productListVo.setName(vipInfo.getVipName()); |
| | | productListVo.setVipId(vipInfo.getId()); |
| | | |
| | | SysProjUse queryUse = new SysProjUse(); |
| | | queryUse.setVipId(vipInfo.getId()); |
| | | queryUse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM); |
| | | queryUse.setTaocanId(-1L); |
| | | queryUse.setStatus(Dictionary.TAOCAN_STATUS_YX); |
| | | queryUse.setIsOver(Dictionary.FLAG_NO_N); |
| | | List<SysProjUse> projList = projUseService.findInPage(queryUse, null); |
| | | List<ServiceProjVo> serviceProjVos = SysProjUseMapper.INSTANCE.entityListToProjVoList(projList); |
| | | |
| | | queryUse.setTaocanId(null); |
| | | queryUse.setType(Dictionary.SHOPPING_GOODS_TYPE_TC); |
| | | List<SysProjUse> taoCanList = projUseService.findInPage(queryUse, null); |
| | | List<ServiceTcVo> serviceTcVos = SysProjUseMapper.INSTANCE.entityListToTcVoList(taoCanList); |
| | | |
| | | if (CollectionUtils.isNotEmpty(serviceTcVos)) { |
| | | serviceTcVos.forEach(item -> { |
| | | List<SysProjUse> sysProjUses = projUseService.selectTaocanProjUse(item.getId()); |
| | | List<ServiceProjVo> taocanProj = SysProjUseMapper.INSTANCE.entityListToProjVoList(sysProjUses); |
| | | item.setProj(taocanProj); |
| | | }); |
| | | } |
| | | } else { |
| | | userProjInfoList.add(coversion(sysProjUseList.get(i))); |
| | | } |
| | | } |
| | | AjaxResult result = new AjaxResult(); |
| | | result.setStatus("200"); |
| | | result.setMapInfo(taocanProjMap); |
| | | result.setRows(userProjInfoList); |
| | | return result; |
| | | |
| | | productListVo.setProj(serviceProjVos); |
| | | productListVo.setComposeProj(serviceTcVos); |
| | | AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功"); |
| | | ajaxResult.putInMap("proj", productListVo); |
| | | return ajaxResult; |
| | | } |
| | | |
| | | |
| | |
| | | AjaxResult createServiceOrder(@RequestBody Onlinebooking onlinebooking) { |
| | | BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); |
| | | bizUser = bizUserDao.findByOpenId(bizUser.getOpenId()); |
| | | SysVipInfo vipInfo = vipDap.selectByPhone(bizUser.getPhoneNumber()); |
| | | onlinebooking.setOrderNo(codeService.getServiceOrderCode()); |
| | | onlinebooking.setVipName(vipInfo.getVipName()); |
| | | onlinebooking.setVipId(vipInfo.getId()); |
| | | onlinebooking.setBizUserId(bizUser.getOpenId()); |
| | | onlinebooking.setStatus(Dictionary.ONLINEBOOKING_DFW); |
| | | onlinebooking.setCreateTime(new Date()); |
| | | onlinebooking.setTime(DateUtil.stringToDate(onlinebooking.getTimeStr(), DateUtil.DATE_FORMAT_MM)); |
| | | onlinebookingDao.insert(onlinebooking); |
| | | //发送消息通知 |
| | | JSONObject msg = new JSONObject(); |
| | | msg.put("templateMsgType", TemplateMsgType.APPOINTMENT_SUCCESS.getCode()); |
| | | msg.put("content", onlinebooking.getId()); |
| | | rabiitMqTemplate.sendMsg(MQTaskRouting.SEND_TEMPLATE_MSG+evn, msg.toJSONString()); |
| | | return new AjaxResult(AjaxResult.STATUS_SUCCESS, Collections.singletonList(onlinebooking)); |
| | | SysVipInfo vipInfo = vipInfoDao.selectByPhone(bizUser.getPhoneNumber()); |
| | | |
| | | |
| | | SysProjUse sysProjUse = projUseDao.selectById(Long.parseLong(onlinebooking.getProductId() + "")); |
| | | Date yyTime = DateUtil.stringToDate(onlinebooking.getTimeStr(), DateUtil.DATE_FORMAT_MM); |
| | | SysProjServices sysProjServices = new SysProjServices(); |
| | | sysProjServices.setCompanyId(vipInfo.getCompanyId()); |
| | | sysProjServices.setShopId(onlinebooking.getShopId()); |
| | | sysProjServices.setVipId(vipInfo.getId()); |
| | | |
| | | sysProjServices.setYyTime(yyTime); |
| | | sysProjServices.setRemark(onlinebooking.getRemark()); |
| | | |
| | | List<SysBeauticianState> sysBeauticianStates = new ArrayList<>(); |
| | | |
| | | SysBeauticianState sysBeauticianState = new SysBeauticianState(); |
| | | sysBeauticianState.setPuseId(sysProjUse.getId()); |
| | | sysBeauticianState.setProjUse(sysProjUse); |
| | | sysBeauticianState.setCount(1); |
| | | sysBeauticianState.setBeginTime(yyTime); |
| | | int timeLength=30; |
| | | if(sysProjUse.getTimeLength()!=null){ |
| | | timeLength=sysProjUse.getTimeLength(); |
| | | } |
| | | sysBeauticianState.setEndTime(DateUtil.getDateAfterMinute(yyTime, timeLength)); |
| | | if(onlinebooking.getStaffId()!=null){ |
| | | sysBeauticianState.setStaffId(Long.parseLong(onlinebooking.getStaffId()+"")); |
| | | } |
| | | |
| | | sysBeauticianStates.add(sysBeauticianState); |
| | | sysProjServices.setServiceItems(sysBeauticianStates); |
| | | |
| | | //检测欠款 |
| | | VerifyResult arrearsVerifyResult = projServicesService.checkArrears(sysProjServices); |
| | | if (arrearsVerifyResult.isError()) { |
| | | return new AjaxResult(AjaxResult.STATUS_FAIL, arrearsVerifyResult.getMsg()); |
| | | } |
| | | //检测余次 |
| | | VerifyResult balanceverifyResult = projServicesService.checkBalance(sysProjServices); |
| | | if (balanceverifyResult.isError()) { |
| | | return new AjaxResult(AjaxResult.STATUS_FAIL, balanceverifyResult.getMsg()); |
| | | } |
| | | sysProjServices.setState(Dictionary.SERVICE_STATU_DQR); |
| | | SysProjServices newSysProjServices = projServicesService.addSysProjServices(sysProjServices); |
| | | if (newSysProjServices != null) { |
| | | return AjaxResult.buildSuccessInstance("下单成功"); |
| | | } else { |
| | | return new AjaxResult(AjaxResult.STATUS_FAIL, "下单失败!"); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | */ |
| | | @RequestMapping(value = "/getServiceOrderById/{id}") |
| | | public @ResponseBody |
| | | AjaxResult getServiceOrderById(@PathVariable Long id) { |
| | | |
| | | Onlinebooking onlinebooking = onlinebookingDao.selectById(id); |
| | | ShopProduct shopProduct = productDao.selectById(onlinebooking.getProductId()); |
| | | onlinebooking.setShopProduct(shopProduct); |
| | | if (onlinebooking.getStaffId() != null) { |
| | | SysUsers shopstaffInfo = staffInfoDao.selectById(Long.parseLong(onlinebooking.getStaffId() + "")); |
| | | onlinebooking.setStaffInfo(shopstaffInfo); |
| | | AjaxResult getServiceOrderById(@PathVariable("id") Long id) { |
| | | SysProjServices projServices = projServicesService.findById(id); |
| | | if (projServices == null) { |
| | | return AjaxResult.buildFailInstance("服务单不存在"); |
| | | } |
| | | SysShopInfo shopInfo = shopInfoDao.selectById(onlinebooking.getShopId()); |
| | | onlinebooking.setShopInfo(shopInfo); |
| | | AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, "查询成功"); |
| | | result.putInMap("serviceOrder", onlinebooking); |
| | | return result; |
| | | |
| | | ServiceOrderDetailVo detailVo = SysProjServiceMapper.INSTANCE.projServiceToDetailVo(projServices); |
| | | List<SysBeauticianState> beauticianStates = sysBeauticianStateService.findBySerId(projServices.getId()); |
| | | List<ServiceOrderDetailItemVo> items = SysBeauticianStateMapper.INSTANCE.entitiesToDetailItemsVo(beauticianStates); |
| | | detailVo.setItems(items); |
| | | AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功"); |
| | | ajaxResult.putInMap("detail", detailVo); |
| | | ajaxResult.putInMap("shopInfo", shopInfoDao.selectById(projServices.getShopId())); |
| | | return ajaxResult; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 订单列表查询 |
| | | * |
| | | * 查询服务单 |
| | | * @param orderListDto |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "/getServiceOrderList") |
| | | public @ResponseBody |
| | | AjaxResult getServiceOrderList(@RequestBody Onlinebooking onlinebooking) { |
| | | @PostMapping(value = "/getServiceOrderList") |
| | | @ResponseBody |
| | | public AjaxResult findServiceOrderList(@RequestBody @Validated ServiceOrderListDto orderListDto) { |
| | | BizUser bizUser = redisUserLoginUtils.getLoginUser(BizUser.class); |
| | | onlinebooking.setBizUserId(bizUser.getOpenId()); |
| | | List<Onlinebooking> list = onlinebookingDao.selectInPageForWx(onlinebooking); |
| | | //相关数据赋值 |
| | | list.stream().forEach(order -> { |
| | | ShopProduct shopProduct = productDao.selectById(order.getProductId()); |
| | | order.setShopProduct(shopProduct); |
| | | if (order.getStaffId() != null) { |
| | | SysUsers shopstaffInfo = staffInfoDao.selectById(Long.parseLong(order.getStaffId() + "")); |
| | | order.setStaffInfo(shopstaffInfo); |
| | | } |
| | | SysShopInfo shopInfo = shopInfoDao.selectById(order.getShopId()); |
| | | order.setShopInfo(shopInfo); |
| | | }); |
| | | AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, "查询成功"); |
| | | result.setRows(list); |
| | | return result; |
| | | } |
| | | SysVipInfo vipInfo= vipInfoDao.selectByPhone(bizUser.getPhoneNumber()); |
| | | |
| | | PaginationVO pageVo = new PaginationVO(); |
| | | int offset = (orderListDto.getPageNum() - 1) * orderListDto.getPageSize(); |
| | | int limit = orderListDto.getPageSize(); |
| | | pageVo.setOffset(offset); |
| | | pageVo.setLimit(limit); |
| | | orderListDto.setVipId(vipInfo.getId()); |
| | | List<ServiceOrderListVo> apiServiceOrderListInPage = projServicesService.findApiServiceOrderListInPage(orderListDto, pageVo); |
| | | return AjaxResult.buildSuccessInstance(apiServiceOrderListInPage, projServicesService.findApiServiceOrderListTotal(orderListDto)); |
| | | } |
| | | |
| | | /** |
| | | * 取消预约订单 |
| | |
| | | * @param |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "/cancelOrderById") |
| | | @RequestMapping(value = "/cancelOrderById/{id}") |
| | | public @ResponseBody |
| | | AjaxResult cancelOrderById(@RequestBody Onlinebooking onlinebooking) { |
| | | AjaxResult cancelOrderById(@PathVariable("id") Long id) { |
| | | |
| | | AjaxResult result = new AjaxResult(); |
| | | if (onlinebooking.getId() == null) { |
| | | result.setStatus(AjaxResult.STATUS_FAIL); |
| | | result.setInfo("请求参数错误"); |
| | | SysProjServices services = new SysProjServices(); |
| | | services.setId(id); |
| | | int i = projServicesService.modifyCancelProjServices(services); |
| | | if (i > 0) { |
| | | return new AjaxResult(AjaxResult.STATUS_SUCCESS, "取消预约成功"); |
| | | } else { |
| | | onlinebooking.setStatus(Dictionary.ONLINEBOOKING_YQX); |
| | | onlinebookingDao.update(onlinebooking); |
| | | result.setStatus(AjaxResult.STATUS_SUCCESS); |
| | | result.setInfo("订单取消成功"); |
| | | } |
| | | return result; |
| | | return new AjaxResult(AjaxResult.STATUS_FAIL, "取消预约失败"); |
| | | } |
| | | |
| | | /** |
| | | * 删除订单 |
| | | * |
| | | * @param |
| | | * @return |
| | | */ |
| | | @RequestMapping(value = "/removeOrderById/{id}") |
| | | public @ResponseBody |
| | | AjaxResult removeOrderById(@PathVariable Long id) { |
| | | onlinebookingDao.deleteById(id); |
| | | AjaxResult result = new AjaxResult(); |
| | | result.setStatus(AjaxResult.STATUS_SUCCESS); |
| | | result.setInfo("删除成功"); |
| | | return result; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | private UserProjInfo coversion(SysProjUse pUse) { |
| | | UserProjInfo projInfo = new UserProjInfo(); |
| | | projInfo.setId(pUse.getId()); |