package com.platform.yijia.controller;
import com.google.gson.Gson;
import com.platform.yijia.param.request.LoginBody;
import com.platform.yijia.pojo.PayOrder;
import com.platform.yijia.pojo.StationClassStructure;
import com.platform.yijia.pojo.StationClassesSummary;
import com.platform.yijia.pojo.SysUser;
import com.platform.yijia.service.IStationClassStructureService;
import com.platform.yijia.service.IStationClassesSummaryService;
import com.platform.yijia.service.PayOrderService;
import com.platform.yijia.service.PosMachineService;
import com.platform.yijia.utils.CodeMsg;
import com.platform.yijia.utils.ResultData;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
PosMachineController
* POS机端模块功能
* @Author JK
* @Date 2021年3月17日
*/
@Controller
@RequestMapping("/demo")
public class PosMachineController {
@Resource
private PosMachineService posMachineService;
@Resource
private IStationClassStructureService stationClassStructureService;
@Resource
private IStationClassesSummaryService stationClassesSummaryService;
@Resource
private PayOrderService payOrderService;
//POS机端用户登录
@RequestMapping(value = "/loginPosMachine", method = RequestMethod.POST)
@ResponseBody
public String loginPosMachine(@RequestBody LoginBody loginBody){
//Using generated security password: a78f4bd0-6087-4fff-ae5d-f2e4cd8c7961
Gson gson =new Gson();
//返回结果集
ResultData resultData = null;
if(loginBody.getUserName() !=null && loginBody.getPassword() !=null){
SysUser sysUser = posMachineService.selectUserByUserName(loginBody.getUserName());
if(sysUser !=null){
if(sysUser.getStatus().equals("0")){
String password = sysUser.getPassword();
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
//密码加密判断已加密密码是否与真实密码相同
boolean matches = bCryptPasswordEncoder.matches(loginBody.getPassword(), password);
if(matches){
SysUser s = new SysUser();
s.setNickName(sysUser.getNickName());
s.setDeptId(sysUser.getDeptId());
s.setAvatar(sysUser.getAvatar());
s.setUserName(sysUser.getUserName());
s.setPhonenumber(sysUser.getPhonenumber());
s.setSex(sysUser.getSex());
s.setUserId(sysUser.getUserId());
s.setDeptId(sysUser.getDeptId());
resultData = ResultData.success(s);
}else{
resultData = ResultData.error(CodeMsg.PASSWORD_ERROR);
}
}else if(sysUser.getStatus().equals("1")){
resultData = ResultData.error(CodeMsg.ACCOUNT_DISABLE);
}
}else {
resultData = ResultData.error(CodeMsg.USER_NOT_EXSIST);
}
}
return gson.toJson(resultData);
}
/*
* 查询订单列表
* @param stationId
* @param userName
* @return
*/
@RequestMapping (value = "/selectPosPayOrdersList", method = RequestMethod.GET)
@ResponseBody
public String selectPosPayOrdersList(@RequestParam Integer stationId, String beginTime, String endTime){
Gson gson =new Gson();
//返回结果集
ResultData resultData = null;
PayOrder payOrder = new PayOrder();
payOrder.setStationId(stationId);
payOrder.setBeginTime(beginTime);
payOrder.setEndTime(endTime);
payOrder.setStatus("1");
List payOrders = payOrderService.selectPayOrderList(payOrder);
resultData = ResultData.success(payOrders);
return gson.toJson(resultData);
}
/*
* 获取班结人要班结的订单总和信息
* @param stationId
* @param userName
* @return
*/
@RequestMapping (value = "/getClassStructureList", method = RequestMethod.GET)
@ResponseBody
public String getClassStructureList(@RequestParam Integer stationId) throws ParseException {
Gson gson =new Gson();
//返回结果集
ResultData resultData = null;
if(stationId !=null){
StationClassStructure classes =new StationClassStructure();
classes.setStationId(stationId);
//查询出上次班结,最后一条数据
StationClassStructure sss =stationClassStructureService.selectStationClassStructureMax(classes);
String beginTime="";
//当前时间
Date date= new Date();
StationClassStructure classesStructure =new StationClassStructure();
classesStructure.setStationId(stationId);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if(sss != null){
//班结过
beginTime= dateFormat.format(sss.getClassStructureDate());
}else {
//没有班结过:第一次班结
beginTime =null;
}
//获取上次班结时间
PayOrder order=new PayOrder();
order.setStationId(stationId);
order.setStatus("1");
order.setBeginTime(beginTime);
order.setEndTime(dateFormat.format(date));
//查询要班结订单总和
order.setGroupBy("");
List