package com.matrix.system.padApi.action;
|
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
import com.matrix.core.pojo.AjaxResult;
|
import com.matrix.core.pojo.PaginationVO;
|
import com.matrix.core.tools.*;
|
import com.matrix.system.app.vo.UserInfoVo;
|
import com.matrix.system.common.authority.DefaultAuthorityManager;
|
import com.matrix.system.common.authority.strategy.AccountPasswordLogin;
|
import com.matrix.system.common.authority.strategy.LoginStrategy;
|
import com.matrix.system.common.bean.SysUsers;
|
import com.matrix.system.common.dao.SysCompanyDao;
|
import com.matrix.system.common.dao.SysUsersDao;
|
import com.matrix.system.common.init.LocalCache;
|
import com.matrix.system.common.service.SysUsersService;
|
import com.matrix.system.constance.Dictionary;
|
import com.matrix.system.hive.action.BaseController;
|
import com.matrix.system.hive.bean.SysBeauticianState;
|
import com.matrix.system.hive.bean.SysBedInfo;
|
import com.matrix.system.hive.bean.SysProjServices;
|
import com.matrix.system.hive.bean.SysShopInfo;
|
import com.matrix.system.hive.dao.SysBedInfoDao;
|
import com.matrix.system.hive.dao.SysShopInfoDao;
|
import com.matrix.system.hive.service.SysBedInfoService;
|
import com.matrix.system.hive.service.SysOrderService;
|
import com.matrix.system.hive.service.SysShopInfoService;
|
import com.matrix.system.hive.service.SysWorktimeService;
|
import com.matrix.system.padApi.dto.Base64UploadDto;
|
import com.matrix.system.padApi.dto.PadOrderListDto;
|
import com.matrix.system.padApi.dto.WebPadLoginDto;
|
import com.matrix.system.padApi.vo.PadOrderDetailVo;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiResponse;
|
import io.swagger.annotations.ApiResponses;
|
import org.apache.log4j.Logger;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.util.FileCopyUtils;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
import sun.misc.BASE64Decoder;
|
|
import javax.annotation.Resource;
|
import java.io.File;
|
import java.io.IOException;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
@CrossOrigin(origins = "*")
|
@Api(value = "PadApiCommonAction", tags = "pad端公共请求类(含登陆)")
|
@RestController
|
@RequestMapping(value = "/api/common/pad")
|
public class PadApiCommonAction extends BaseController {
|
|
@Autowired
|
private SysUsersService sysUsersService;
|
|
@Autowired
|
private DefaultAuthorityManager authorityManager;
|
|
@Autowired
|
SysShopInfoDao sysShopInfoDao;
|
|
@Autowired
|
SysCompanyDao sysCompanyDao;
|
|
@Autowired
|
private SysShopInfoService sysShopInfoService;
|
|
@Resource
|
private SysOrderService sysOrderService;
|
|
@Resource
|
private SysBedInfoService bedInfoService;
|
|
@Resource
|
private SysWorktimeService sysWorkTimeService;
|
|
@Resource
|
private SysUsersService usersService;
|
|
@Autowired
|
private SysBedInfoDao sysBedInfoDao;
|
|
@Value("${login_public_key}")
|
private String publicKey;
|
@Autowired
|
private SysUsersDao sysUsersDao;
|
|
|
Logger log = Logger.getLogger(PadApiCommonAction.class);
|
|
@Value("${file_storage_path}")
|
private String fileStoragePath;
|
@Value("${static_resource_url}")
|
private String nginxUrl;
|
|
/**
|
* 最大值
|
*/
|
private Long maxSize = 1024*1024*100L;
|
|
@ApiOperation(value = "登陆接口", notes = "pad端登陆接口")
|
@ApiResponses({
|
@ApiResponse(code = 200, message = "OK", response = UserInfoVo.class)
|
})
|
@PostMapping(value = "/login")
|
public AjaxResult dologin(@RequestBody @Validated WebPadLoginDto loginDto) throws Exception {
|
|
SysUsers user = new SysUsers();
|
user.setSuAccount(loginDto.getUsername());
|
user.setSuPassword(loginDto.getPassword());
|
LoginStrategy apLogin = new AccountPasswordLogin(user, sysUsersService);
|
user = authorityManager.login(apLogin);
|
|
UserInfoVo userInfoVo = new UserInfoVo();
|
if(user.getShopId()!=null){
|
SysShopInfo shopInfo = sysShopInfoService.findById(user.getShopId());
|
user.setShopName(shopInfo.getShopName());
|
userInfoVo.setShopName(shopInfo.getShopShortName());
|
}
|
user.setSuPassword(null);
|
|
String token = UUIDUtil.getRandomID();
|
LocalCache.save(token, user);
|
|
userInfoVo.setId(user.getSuId());
|
userInfoVo.setName(user.getSuName());
|
userInfoVo.setRoleName(user.getRoleName());
|
userInfoVo.setPhoto(user.getSuPhoto());
|
|
String sb = token + "_1" + "_/api/vip/findVipInfoById/972";
|
AjaxResult result = AjaxResult.buildSuccessInstance("登陆成功");
|
authorityManager.initUserPower(result);
|
result.putInMap("user", userInfoVo);
|
result.putInMap("token", token);
|
result.putInMap("rasToken", RSAUtils.encryptByPublicKey(sb, publicKey));
|
return result;
|
}
|
|
|
|
@ApiOperation(value = "首页", notes = "首页")
|
@GetMapping(value = "/frist/{suId}")
|
public AjaxResult frist(@PathVariable Long suId) {
|
SysUsers user = usersService.findById(suId);
|
LogUtil.info("首页 shopId={}", user.getShopId());
|
// SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
PadOrderListDto orderListDto = new PadOrderListDto();
|
orderListDto.setPageNum(1);
|
orderListDto.setPageSize(5);
|
int offset = (orderListDto.getPageNum() - 1) * orderListDto.getPageSize();
|
int limit = orderListDto.getPageSize();
|
PaginationVO pageVo = new PaginationVO();
|
pageVo.setOffset(offset);
|
pageVo.setLimit(limit);
|
if(ObjectUtil.isNotEmpty(user.getShopId())){
|
orderListDto.setShopId(user.getShopId());
|
}
|
// if (!DataAuthUtil.hasAllShopAuth()) {
|
// orderListDto.setShopId(user.getShopId());
|
// }
|
|
if(ObjectUtil.isNotEmpty(user.getCompanyId())){
|
orderListDto.setCompanyId(user.getCompanyId());
|
}
|
// QueryUtil.setQueryLimitCom(orderListDto);
|
List<PadOrderDetailVo> padApiOrderListInPage = sysOrderService.findPadApiOrderListInPage(orderListDto, pageVo);
|
|
AjaxResult result = AjaxResult.buildSuccessInstance("");
|
result.putInMap("orderList",padApiOrderListInPage);
|
|
Date date = new Date();
|
SysUsers shopstaffInfo = new SysUsers();
|
shopstaffInfo.setCompanyId(user.getCompanyId());
|
shopstaffInfo.setShopId(user.getShopId());
|
shopstaffInfo.setRoleName(Dictionary.STAFF_POST_MLS);
|
List<SysUsers> mls = sysUsersDao.selectByRoleName(shopstaffInfo);
|
LogUtil.info("美疗师 size={}", mls.size());
|
// List<SysUsers> mls = usersService.findByRoleName(true, Dictionary.STAFF_POST_MLS);
|
if(CollUtil.isNotEmpty(mls)){
|
SysBeauticianState sysBeauticianState = new SysBeauticianState();
|
sysBeauticianState.setBeginTime(DateUtil.getStartDate(date));
|
sysBeauticianState.setEndTime(DateUtil.getStartDate(date));
|
String panBanCodes = DateUtil.dateToString(sysBeauticianState.getBeginTime(),DateUtil.DATE_FORMAT_NO_SPLITE_DD);
|
List<SysUsers> staffs=new ArrayList<>();
|
// if(sysWorkTimeService.isInWorkTime(user.getShopId(),sysBeauticianState.getBeginTime(),sysBeauticianState.getEndTime())){
|
staffs= sysUsersService.findByCodeBeaStateShop(user.getShopId(),
|
sysBeauticianState, panBanCodes);
|
if(CollUtil.isNotEmpty(staffs)){
|
result.putInMap("usedMls", mls.size() - staffs.size());
|
result.putInMap("freeMls", staffs.size());
|
}else{
|
result.putInMap("usedMls", mls.size());
|
result.putInMap("freeMls", 0);
|
}
|
// }
|
}
|
|
SysBedInfo bedInfo = new SysBedInfo();
|
bedInfo.setShopId(user.getShopId());
|
List<SysBedInfo> totalBed = bedInfoService.findByModel(bedInfo);
|
if(CollUtil.isNotEmpty(totalBed)){
|
SysProjServices sysProjServices = new SysProjServices();
|
sysProjServices.setShopId(user.getShopId());
|
|
sysProjServices.setStartTime(DateUtil.getStartDate(date));
|
sysProjServices.setEndTime(DateUtil.getStartDate(date));
|
List<SysBedInfo> freeBed = sysBedInfoDao.findFreeBed(sysProjServices);
|
// List<SysBedInfo> freeBed = bedInfoService.findFreeBed(sysProjServices);
|
if(CollUtil.isNotEmpty(freeBed)){
|
result.putInMap("usedBed", totalBed.size() - freeBed.size());
|
result.putInMap("freeBed", freeBed);
|
}else{
|
result.putInMap("usedBed", totalBed);
|
result.putInMap("freeBed", 0);
|
}
|
}
|
return result;
|
}
|
|
@ApiOperation(value = "用户退出系统", notes = "用户退出系统")
|
@ApiResponses({
|
@ApiResponse(code = 200, message = "ok", response = AjaxResult.class)
|
})
|
@GetMapping(value = "/loginOut")
|
public AjaxResult loginOut() {
|
authorityManager.getLoginOut();
|
return AjaxResult.buildSuccessInstance("退出系统成功");
|
}
|
|
/**
|
* 文件上传方法
|
*/
|
@ApiOperation(value = "文件上传方法", notes = "文件上传方法")
|
@PostMapping(value = "/doUpload")
|
public AjaxResult doFileUpload(@RequestBody @Validated Base64UploadDto uploadDto){
|
// 文件保存目录路径
|
String savePath = fileStoragePath;
|
// 文件保存目录URL
|
String saveUrl = nginxUrl;
|
// 保存和访问路径检查
|
if (StringUtils.isBlank(saveUrl) || StringUtils.isBlank(savePath)) {
|
return AjaxResult.buildFailInstance("文件上传失败错误代码:001");
|
}
|
// 检查目录
|
File uploadDir = new File(savePath);
|
if (!uploadDir.isDirectory()) {
|
uploadDir.mkdir();
|
}
|
BASE64Decoder decoder = new BASE64Decoder();
|
byte[] bytes = new byte[0];
|
try {
|
bytes = decoder.decodeBuffer(uploadDto.getBase64Str());
|
} catch (IOException e) {
|
return AjaxResult.buildFailInstance("上传文件失败");
|
}
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
|
String ymd = sdf.format(new Date());
|
savePath += ymd + "/";
|
saveUrl += ymd + "/";
|
File dirFile = new File(savePath);
|
if (!dirFile.exists()) {
|
dirFile.mkdirs();
|
}
|
if (bytes.length > maxSize) {
|
return AjaxResult.buildFailInstance("上传文件大小超过限制");
|
}
|
String newFileName = UUIDUtil.getRandomID() + UUIDUtil.getRandomID() + ".jpg";
|
File uploadedFile = new File(savePath, newFileName);
|
try {
|
FileCopyUtils.copy(bytes, uploadedFile);
|
} catch (Exception e) {
|
return AjaxResult.buildFailInstance("上传文件失败");
|
}
|
log.info("saveUrl:" + saveUrl);
|
String visitPath = saveUrl + newFileName;
|
log.info("上传一个文件:" + newFileName);
|
log.info("访问路径:" + visitPath);
|
|
AjaxResult result = new AjaxResult();
|
result.putInMap("path", visitPath);
|
result.putInMap("fileName", newFileName);
|
return result;
|
}
|
|
|
}
|