package com.matrix.system.app.action; 
 | 
  
 | 
import com.matrix.component.redis.RedisClient; 
 | 
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.*; 
 | 
import com.matrix.system.app.mapper.SysBeauticianStateMapper; 
 | 
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.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.SysBeauticianState; 
 | 
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.validation.annotation.Validated; 
 | 
import org.springframework.web.bind.annotation.*; 
 | 
  
 | 
import javax.annotation.Resource; 
 | 
import java.io.UnsupportedEncodingException; 
 | 
import java.security.NoSuchAlgorithmException; 
 | 
import java.util.ArrayList; 
 | 
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; 
 | 
  
 | 
    @Autowired 
 | 
    private RedisClient redisClient; 
 | 
  
 | 
  
 | 
    @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<SysUsers> 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<SysWorkBeatuistaff> 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() { 
 | 
        SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); 
 | 
        String token = redisClient.getCachedValue(sysUsers.getSuId().toString()); 
 | 
  
 | 
        redisClient.removeObject(token); 
 | 
        redisClient.removeObject(sysUsers.getSuId().toString()); 
 | 
        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.setSuName(usersQueryDto.getQueryKey()); 
 | 
        List<SysUsers> list = sysUsersService.findByModel(query); 
 | 
        List<BeauticianVo> 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("修改失败"); 
 | 
    } 
 | 
  
 | 
} 
 |