package com.platform.yijia.controller;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.gson.Gson;
import com.platform.yijia.param.request.LoginBody;
import com.platform.yijia.pojo.*;
import com.platform.yijia.service.*;
import com.platform.yijia.utils.CodeMsg;
import com.platform.yijia.utils.CryptUtil;
import com.platform.yijia.utils.DESUtils;
import com.platform.yijia.utils.ResultData;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.omg.CORBA.ObjectHelper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
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.*;
/**
*
PosMachineController
* POS机端模块功能
* @Author JK
* @Date 2021年3月17日
*/
@Controller
@RequestMapping("/demo")
public class PosMachineController {
@Resource
private PosMachineService posMachineService;
@Resource
private StationService stationService;
@Resource
private IStationClassStructureService stationClassStructureService;
@Resource
private IStationClassesSummaryService stationClassesSummaryService;
@Resource
private PayOrderService payOrderService;
@Value("${3des.pwd}")
private String pwd;
//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();
String webPassword = loginBody.getPassword(); //前端传来加密码
String ps= DESUtils.decrypt(webPassword, pwd);
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
//密码加密判断已加密密码是否与真实密码相同
boolean matches = bCryptPasswordEncoder.matches(ps, 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);
}
//获取该油站油枪绑定的POS机信息
@RequestMapping (value = "/getStationDeviceManager", method = RequestMethod.GET)
@ResponseBody
public String getStationDeviceManager(@RequestParam Integer stationId, String oilGun, String deviceType){
Gson gson =new Gson();
//返回结果集
ResultData resultData = null;
if(stationId !=null && StringUtils.isNotBlank(deviceType)){
StationDeviceManager stationDeviceManager = new StationDeviceManager();
stationDeviceManager.setGunNo(oilGun);
stationDeviceManager.setStationId(stationId);
stationDeviceManager.setDeviceType(deviceType);
//获取油枪绑定的打印设备信息
StationDeviceManager stationDeviceManagerList = stationService.getStationDeviceManager(stationDeviceManager);
resultData = ResultData.success(stationDeviceManagerList);
}else {
resultData = ResultData.error(CodeMsg.REQUEST_FAIL);
}
return gson.toJson(resultData);
}
//根据POS机tusn获取该油站油枪绑定的POS机信息
@RequestMapping (value = "/getStationDeviceManagerBytusn", method = RequestMethod.GET)
@ResponseBody
public String getStationDeviceManagerBytusn(@RequestParam String tusn){
Gson gson =new Gson();
//返回结果集
ResultData resultData = null;
if(StringUtils.isNotBlank(tusn)){
StationDeviceManager stationDeviceManager = new StationDeviceManager();
stationDeviceManager.setDeviceNo(tusn);
//获取油枪绑定的打印设备信息
StationDeviceManager stationDeviceManagerList = stationService.getStationDeviceManager(stationDeviceManager);
resultData = ResultData.success(stationDeviceManagerList);
}else {
resultData = ResultData.error(CodeMsg.REQUEST_FAIL);
}
return gson.toJson(resultData);
}
//查询POS机昨天和近七天数据
@RequestMapping (value = "/selectPosYesterDayAndSevenData", method = RequestMethod.GET)
@ResponseBody
public String selectPosYesterDayAndSevenData(@RequestParam Integer stationId){
Gson gson =new Gson();
//返回结果集
ResultData resultData = null;
if(stationId !=null){
PayOrder payOrder = new PayOrder();
payOrder.setStatus("1");
payOrder.setStationId(stationId);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
payOrder.setEndTime(sdf.format(new Date()));
Calendar c = new GregorianCalendar();
c.setTime(new Date());
c.add(Calendar.DATE, -8);
payOrder.setBeginTime(sdf.format(c.getTime()));
//获取近七天数据
List