package com.matrix.system.app.action; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.matrix.core.constance.MatrixConstance; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.DateUtil; import com.matrix.core.tools.WebUtil; import com.matrix.system.app.dto.BeauticianDto; import com.matrix.system.app.dto.ModifyUserDto; import com.matrix.system.app.dto.PwdModifyDto; import com.matrix.system.app.dto.UsersQueryDto; import com.matrix.system.app.mapper.SysUsersMapper; import com.matrix.system.app.mapper.SysWorkBeatuistaffMapper; import com.matrix.system.app.vo.BeauticianVo; import com.matrix.system.app.vo.UserAchieveVo; import com.matrix.system.app.vo.UserInfoDetailVo; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.common.init.LocalCache; import com.matrix.system.common.interceptor.ApiUserLoginInterceptor; import com.matrix.system.common.interceptor.HostInterceptor; import com.matrix.system.common.service.SysUsersService; import com.matrix.system.common.tools.DataAuthUtil; import com.matrix.system.common.tools.PasswordUtil; import com.matrix.system.hive.action.BaseController; import com.matrix.system.hive.bean.SysWorkBeatuistaff; import com.matrix.system.hive.service.AchieveNewService; import com.matrix.system.hive.service.SysWorkBeatuistaffService; import com.matrix.system.hive.service.SysWorktimeService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.io.UnsupportedEncodingException; import java.security.NoSuchAlgorithmException; import java.util.List; /** * @author wzy * @date 2020-12-21 **/ @Api(value = "ApiUsersAction", tags = "用户中心接口类") @RestController @RequestMapping(value = "/api/user") public class ApiUsersAction extends BaseController { @Autowired private AchieveNewService achieveNewService; @Autowired private SysWorktimeService sysWorkTimeService; @Autowired private SysUsersService sysUsersService; @Autowired private SysWorkBeatuistaffService sysWorkBeatuistaffService; @Value("${login_private_key}") private String privateKey; @ApiOperation(value = "个人中心--获取用户业绩接口 type 1-今日 2-昨天 3-本月 4-上月") @ApiResponses({ @ApiResponse(code = 200, message = "ok", response = UserAchieveVo.class) }) @GetMapping(value = "/findUserAchieve/{type}") public AjaxResult findUserAchieve(@PathVariable("type") Integer type) { UserAchieveVo achieveVo = achieveNewService.findUserAchieveByTime(type); AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功"); ajaxResult.putInMap("achieve", achieveVo); return ajaxResult; } @ApiOperation(value = "获取美疗师列表 - 开始时间结束时间") @ApiResponses( @ApiResponse(code = 200, message = "Ok", response = BeauticianVo.class) ) @PostMapping(value = "/findBeauticianList") public AjaxResult findBeauticianList(@RequestBody @Validated BeauticianDto beauticianDto) { // SysBeauticianState sysBeauticianState = new SysBeauticianState(); // sysBeauticianState.setBeginTime(beauticianDto.getStartTime()); // sysBeauticianState.setEndTime(beauticianDto.getEndTime()); // // // 根据时间获取一段排班码 // String panBanCodes = DateUtil.dateToString(sysBeauticianState.getBeginTime(),DateUtil.DATE_FORMAT_NO_SPLITE_DD); // // 获取登陆的用户 // SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); // List staffs=new ArrayList<>(); // if(sysWorkTimeService.isInWorkTime(user.getShopId(),sysBeauticianState.getBeginTime(),sysBeauticianState.getEndTime())){ // staffs= sysUsersService.findByCodeBeaStateShop(user.getShopId(), // sysBeauticianState, panBanCodes); // } SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); String panBanCodes = DateUtil.dateToString(beauticianDto.getStartTime(),DateUtil.DATE_FORMAT_NO_SPLITE_DD); List workBeauty = sysWorkBeatuistaffService.findByDateStr(panBanCodes, user.getShopId()); return new AjaxResult(AjaxResult.STATUS_SUCCESS, SysWorkBeatuistaffMapper.INSTANCE.workBeautysToBeautyVos(workBeauty), 0); } @ApiOperation(value = "退出登陆", notes = "退出登陆") @GetMapping(value = "/loginOut") public AjaxResult loginOut(HttpServletRequest request) { String token=ApiUserLoginInterceptor.resolveToken(request,privateKey); LocalCache.remove(token); return AjaxResult.buildSuccessInstance("退出成功"); } @ApiOperation(value = "小程序退出登陆", notes = "小程序退出登陆") @GetMapping(value = "/xcxloginOut/{code}") public AjaxResult xcxloginOut(HttpServletRequest request, @PathVariable("code") String code) { SysUsers hasBind = sysUsersService.findByOpenId(code, HostInterceptor.getCompanyId()); if (hasBind != null) { if(StrUtil.isNotBlank(hasBind.getOpenIds())) { List openIds = StrUtil.split(hasBind.getOpenIds(), ','); openIds.remove(code); sysUsersService.modifyUserOpenId(CollUtil.join(openIds, ","), hasBind.getSuId()); } } String token=ApiUserLoginInterceptor.resolveToken(request,privateKey); LocalCache.remove(token); return AjaxResult.buildSuccessInstance("退出成功"); } @ApiOperation(value = "员工列表", notes = "员工列表") @ApiResponses({ @ApiResponse(code = 200, message = "ok", response = BeauticianVo.class) }) @PostMapping(value = "/findAllUsers") public AjaxResult findAllUsers(@RequestBody UsersQueryDto usersQueryDto) { SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); SysUsers query = new SysUsers(); if (DataAuthUtil.hasAllShopAuth()) { query.setCompanyId(sysUsers.getCompanyId()); } else { query.setCompanyId(sysUsers.getCompanyId()); query.setShopId(sysUsers.getShopId()); } query.setSuUserType("employee"); query.setSuName(usersQueryDto.getQueryKey()); List list = sysUsersService.findByModel(query); List dataList = SysUsersMapper.INSTANCE.usersListToBeautyList(list); return AjaxResult.buildSuccessInstance(dataList); } @ApiOperation(value = "修改密码", notes = "修改密码") @PostMapping(value = "/modifyPwd") public AjaxResult modifyPwd(@RequestBody @Validated PwdModifyDto pwdModifyDto) throws UnsupportedEncodingException, NoSuchAlgorithmException { SysUsers me = getMe(); SysUsers user = sysUsersService.findById(me.getSuId()); SysUsers pwdUser = new SysUsers(); pwdUser.setSuPassword(pwdModifyDto.getOldPwd()); pwdUser.setSuRegisterTime(user.getSuRegisterTime()); String pwd = PasswordUtil.getEncrypUserPwd(pwdUser); if (!pwd.equals(user.getSuPassword())) { return AjaxResult.buildFailInstance("老密码错误"); } int i = sysUsersService.updateUserPassword(user.getSuId(), pwd); if (i > 0) { return AjaxResult.buildSuccessInstance("修改成功"); } return AjaxResult.buildFailInstance("修改失败"); } @ApiOperation(value = "获取当前登陆用户信息", notes = "获取当前登陆用户信息") @ApiResponses({ @ApiResponse(code = 200, message = "ok", response = UserInfoDetailVo.class) }) @GetMapping(value = "/findUserInfo") public AjaxResult findUserInfo() { SysUsers user = sysUsersService.findById(getMe().getSuId()); UserInfoDetailVo userInfoDetailVo = SysUsersMapper.INSTANCE.usersToDetailInfoVo(user); AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功"); ajaxResult.putInMap("detail", userInfoDetailVo); return ajaxResult; } @ApiOperation(value = "编辑当前用户信息", notes = "编辑当前用户信息") @PostMapping(value = "/modifyUserInfo") public AjaxResult modifyUserInfo(@RequestBody @Validated ModifyUserDto modifyUserDto) { SysUsers user = SysUsersMapper.INSTANCE.modifyUserDtoToUsers(modifyUserDto); user.setSuId(getMe().getSuId()); int i = sysUsersService.modifyByModel(user); if (i > 0) { return AjaxResult.buildSuccessInstance("修改成功"); } return AjaxResult.buildFailInstance("修改失败"); } }