package cc.mrbird.febs.system.controller;
|
|
import cc.mrbird.febs.common.annotation.Limit;
|
import cc.mrbird.febs.common.controller.BaseController;
|
import cc.mrbird.febs.common.entity.FebsResponse;
|
import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
|
import cc.mrbird.febs.common.enumerates.OrderPayMethodEnum;
|
import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
|
import cc.mrbird.febs.common.exception.FebsException;
|
import cc.mrbird.febs.common.service.ValidateCodeService;
|
import cc.mrbird.febs.common.utils.Md5Util;
|
import cc.mrbird.febs.mall.entity.MallMember;
|
import cc.mrbird.febs.mall.mapper.MallAchieveRecordMapper;
|
import cc.mrbird.febs.mall.mapper.MallMemberMapper;
|
import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
|
import cc.mrbird.febs.monitor.entity.LoginLog;
|
import cc.mrbird.febs.monitor.service.ILoginLogService;
|
import cc.mrbird.febs.system.entity.User;
|
import cc.mrbird.febs.system.service.IUserService;
|
import cn.hutool.core.date.DateUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import lombok.RequiredArgsConstructor;
|
import org.apache.shiro.authc.UsernamePasswordToken;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpSession;
|
import javax.validation.constraints.NotBlank;
|
import java.io.IOException;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @author MrBird
|
*/
|
@Validated
|
@RestController
|
@RequiredArgsConstructor
|
public class LoginController extends BaseController {
|
|
private final IUserService userService;
|
private final ValidateCodeService validateCodeService;
|
private final ILoginLogService loginLogService;
|
private final MallMemberMapper mallMemberMapper;
|
private final MallOrderInfoMapper mallOrderInfoMapper;
|
private final MallAchieveRecordMapper mallAchieveRecordMapper;
|
|
@PostMapping("login")
|
@Limit(key = "login", period = 60, count = 10, name = "登录接口", prefix = "limit")
|
public FebsResponse login(
|
@NotBlank(message = "{required}") String username,
|
@NotBlank(message = "{required}") String password,
|
@NotBlank(message = "{required}") String verifyCode,
|
boolean rememberMe, HttpServletRequest request) throws FebsException {
|
HttpSession session = request.getSession();
|
validateCodeService.check(session.getId(), verifyCode);
|
password = Md5Util.encrypt(username.toLowerCase(), password);
|
UsernamePasswordToken token = new UsernamePasswordToken(username, password, rememberMe);
|
super.login(token);
|
// 保存登录日志
|
LoginLog loginLog = new LoginLog();
|
loginLog.setUsername(username);
|
loginLog.setSystemBrowserInfo();
|
this.loginLogService.saveLoginLog(loginLog);
|
|
return new FebsResponse().success();
|
}
|
|
@PostMapping("regist")
|
public FebsResponse regist(
|
@NotBlank(message = "{required}") String username,
|
@NotBlank(message = "{required}") String password) throws FebsException {
|
User user = userService.findByName(username);
|
if (user != null) {
|
throw new FebsException("该用户名已存在");
|
}
|
this.userService.regist(username, password);
|
return new FebsResponse().success();
|
}
|
|
@GetMapping("index/{username}")
|
public FebsResponse index(@NotBlank(message = "{required}") @PathVariable String username) {
|
// 更新登录时间
|
this.userService.updateLoginTime(username);
|
Map<String, Object> data = new HashMap<>(5);
|
// 获取系统访问记录
|
// Long totalVisitCount = this.loginLogService.findTotalVisitCount();
|
// data.put("totalVisitCount", totalVisitCount);
|
// Long todayVisitCount = this.loginLogService.findTodayVisitCount();
|
// data.put("todayVisitCount", todayVisitCount);
|
// Long todayIp = this.loginLogService.findTodayIp();
|
// data.put("todayIp", todayIp);
|
|
//支付统计
|
data.put("wechatPay",mallOrderInfoMapper.selectSumAmountByPayMethodAndStatue(OrderPayMethodEnum.WECHAT.getName(), OrderStatusEnum.FINISH.getValue()));
|
data.put("alipayPay",mallOrderInfoMapper.selectSumAmountByPayMethodAndStatue(OrderPayMethodEnum.ALIPAY.getName(), OrderStatusEnum.FINISH.getValue()));
|
data.put("scorePay",mallOrderInfoMapper.selectSumAmountByPayMethodAndStatue(OrderPayMethodEnum.SCORE.getName(), OrderStatusEnum.FINISH.getValue()));
|
data.put("balancePay",mallOrderInfoMapper.selectSumAmountByPayMethodAndStatue(OrderPayMethodEnum.BALANCE.getName(), OrderStatusEnum.FINISH.getValue()));
|
|
|
data.put("lastDay", mallAchieveRecordMapper.selectAchieveTotal("D", DateUtil.offsetDay(new Date(), -1)));
|
data.put("today", mallAchieveRecordMapper.selectAchieveTotal("D", new Date()));
|
data.put("lastMonth", mallAchieveRecordMapper.selectAchieveTotal("M", DateUtil.offsetMonth(new Date(), -1)));
|
data.put("thisMonth", mallAchieveRecordMapper.selectAchieveTotal("M", new Date()));
|
|
//会员数据
|
data.put("totalMember",mallMemberMapper.selectCount(new QueryWrapper<>()) );
|
QueryWrapper<MallMember> formalMember = new QueryWrapper<>();
|
formalMember.ne("level", AgentLevelEnum.ZERO_LEVEL.name());
|
data.put("formalMember",mallMemberMapper.selectCount(formalMember));
|
|
QueryWrapper<MallMember> informalMember = new QueryWrapper<>();
|
informalMember.eq("level", AgentLevelEnum.ZERO_LEVEL.name());
|
data.put("informalMember",mallMemberMapper.selectCount(informalMember));
|
|
QueryWrapper<MallMember> todayMember = new QueryWrapper<>();
|
todayMember.like("CREATED_TIME", DateUtil.today());
|
// todayMember.ne("level", AgentLevelEnum.ZERO_LEVEL.name());
|
data.put("todayMember",mallMemberMapper.selectCount(todayMember));
|
|
QueryWrapper<MallMember> thisMonthMember = new QueryWrapper<>();
|
thisMonthMember.like("CREATED_TIME", DateUtil.format(DateUtil.date(),"yyyy-MM"));
|
// thisMonthMember.ne("level", AgentLevelEnum.ZERO_LEVEL.name());
|
data.put("thisMonthMember",mallMemberMapper.selectCount(thisMonthMember));
|
|
QueryWrapper<MallMember> lastMonthMember = new QueryWrapper<>();
|
lastMonthMember.like("CREATED_TIME", DateUtil.format(DateUtil.offsetMonth(new Date(), -1),"yyyy-MM"));
|
// lastMonthMember.ne("level", AgentLevelEnum.ZERO_LEVEL.name());
|
data.put("lastMonthMember",mallMemberMapper.selectCount(lastMonthMember));
|
|
// 获取近期系统访问记录
|
List<Map<String, Object>> lastSevenVisitCount = this.loginLogService.findLastSevenDaysVisitCount(null);
|
data.put("lastSevenVisitCount", lastSevenVisitCount);
|
User param = new User();
|
param.setUsername(username);
|
List<Map<String, Object>> lastSevenUserVisitCount = this.loginLogService.findLastSevenDaysVisitCount(param);
|
data.put("lastSevenUserVisitCount", lastSevenUserVisitCount);
|
return new FebsResponse().success().data(data);
|
}
|
|
@GetMapping("images/captcha")
|
@Limit(key = "get_captcha", period = 60, count = 10, name = "获取验证码", prefix = "limit")
|
public void captcha(HttpServletRequest request, HttpServletResponse response) throws IOException, FebsException {
|
validateCodeService.create(request, response);
|
}
|
}
|