package com.template.controller;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.template.api.SmartGradeControllerAPI;
import com.template.common.utils.*;
import com.template.config.ControlConfig;
import com.template.config.ParkConfig;
import com.template.model.pojo.SmartGrade;
import com.template.model.request.insertSmartGradeRequest;
import com.template.model.result.CommonResult;
import com.template.model.vo.BsGradeNoVo;
import com.template.model.vo.BsGradeVo;
import com.template.model.vo.SemesterVo;
import com.template.services.SmartGradeService;
import com.template.services.SmartIdentityService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import static com.template.common.utils.AesTestOne.decrypt;
/**
*
* 年级表 前端控制器
*
*
* @author ceshi
* @since 2023-12-25
*/
@RestController
public class SmartGradeController implements SmartGradeControllerAPI {
@Resource
private ControlConfig controlConfig;
@Autowired
private SmartGradeService smartGradeService;
@Override
public CommonResult insertSmartGrade(SmartGrade smartApply, BindingResult bindingResult) {
return null;
}
@Override
public CommonResult updateSmartGradeById(SmartGrade ra, BindingResult bindingResult) {
return null;
}
@Override
public CommonResult queryPageSmartGrades(int currentPage, int pageCount, String name) {
return null;
}
@Override
public CommonResult deleteSmartGradeById(int id) {
return null;
}
@Override
public CommonResult querySmartGrades() {
List datas = smartGradeService.getSmartGrades();
List result = new ArrayList<>();
for (SmartGrade data : datas) {
SemesterVo model = new SemesterVo();
model.setId(data.getId());
model.setName(data.getName());
result.add(model);
}
return CommonResult.ok(result);
}
@Override
public CommonResult insertSmartGradeToBaisheng(insertSmartGradeRequest isgr, BindingResult bindingResult) throws Exception {
if (bindingResult.hasErrors()) {
String st = paramUtils.getParamError(bindingResult);
return CommonResult.fail(st);
}
//判断重复性
int existCount = smartGradeService.existSmartGrade(isgr.getGradeNo(),isgr.getGradeName());
if(existCount > 0){
return CommonResult.fail("该年级数据已在系统中存在,请勿重复添加");
}
String appId = controlConfig.getAppId();
String schoolno = controlConfig.getSchoolCode();
String timestamp = TimeExchange.DateNowTimeStamo();
String gradeName = isgr.getGradeName();
String appSecret = controlConfig.getAppSecret();
String url = "http://schoolopenapi.szymzh.com/openapi/grade/create";
JSONObject jsonobject = new JSONObject();
jsonobject.put("appid", appId);
String str = "{\"grade_name\":\""+gradeName+"\"}";
String aesStr = URLEncoder.encode(AesTestOne.encrypt(str),"UTF-8");
jsonobject.put("data", aesStr);
jsonobject.put("schoolno", schoolno);
jsonobject.put("timestamp", timestamp);
//appid=ymdd36ed157ac423e2&carNo=赣U123659&parkKey=wdcmq9rc&rand=9.94995525689689966&reserveEndTime=2023-12-22 20:12:10&reserveTime=2023-12-21 18:12:10&version=v1.0&50596cd243dc4547b4c05f01f8ea02a4
String md5Str = "appid=" + appId + "&data={\"grade_name\":\""+gradeName+"\"}" + "&schoolno=" + schoolno + "×tamp=" + timestamp + "&key=" + appSecret;
String sign = CommonUtil.MD5(md5Str);
//sign签名
jsonobject.put("sign", sign);
//返回的结果中 code为1表示成功
String result = RequestUtils.httpPost(url, jsonobject.toJSONString());
if(result.contains("添加成功")){
ObjectMapper objectMapper = new ObjectMapper();
BsGradeVo grade = objectMapper.readValue(result, BsGradeVo.class);
// URL解码
String decodedUrl = URLDecoder.decode(grade.getData(), "UTF-8");
BsGradeNoVo gradeNo = objectMapper.readValue(decrypt(decodedUrl), BsGradeNoVo.class);
SmartGrade smartGrade = new SmartGrade();
smartGrade.setGradeNo(isgr.getGradeNo());
smartGrade.setName(isgr.getGradeName());
smartGrade.setBsGradeNo(gradeNo.getGrade_no());
int insertResult = smartGradeService.insertSmartGrade(smartGrade);
return insertResult > 0 ? CommonResult.ok("添加成功") : CommonResult.fail("添加失败");
}else{
CommonResult.fail("添加失败");
}
return CommonResult.ok("添加成功");
}
}