| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- package com.template.controller;
- import com.alibaba.fastjson.JSONObject;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.seewo.open.sdk.DefaultSeewoClient;
- import com.seewo.open.sdk.SeewoClient;
- import com.seewo.open.sdk.auth.Account;
- import com.template.api.SmartClassControllerAPI;
- import com.template.common.utils.*;
- import com.template.config.ControlConfig;
- import com.template.config.SeewoConfig;
- import com.template.model.pojo.*;
- import com.template.model.request.insertSmartClassRequest;
- import com.template.model.result.CommonResult;
- import com.template.model.seewo.ClassServiceBatchSaveClassParam;
- import com.template.model.seewo.ClassServiceBatchSaveClassRequest;
- import com.template.model.seewo.ClassServiceBatchSaveClassResult;
- import com.template.model.vo.*;
- import com.template.services.SmartClassService;
- import com.template.services.SmartGradeService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.transaction.annotation.Transactional;
- 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;
- /**
- * <p>
- * 楼栋表 前端控制器
- * </p>
- *
- * @author ceshi
- * @since 2023-12-25
- */
- @RestController
- public class SmartClassController implements SmartClassControllerAPI {
- @Resource
- private SeewoConfig seewoConfig;
- @Resource
- private ControlConfig controlConfig;
- @Autowired
- private SmartClassService smartClassService;
- @Autowired
- private SmartGradeService smartGradeService;
- @Override
- public CommonResult insertSmartClass(SmartClass smartApply, BindingResult bindingResult) {
- return null;
- }
- @Override
- public CommonResult updateSmartClassById(SmartClass ra, BindingResult bindingResult) {
- return null;
- }
- @Override
- public CommonResult queryPageSmartClasss(int currentPage, int pageCount, String name) {
- return null;
- }
- @Override
- public CommonResult deleteSmartClassById(int id) {
- return null;
- }
- @Override
- public CommonResult querySmartClasss(int gradeId) {
- List<SmartClass> datas = smartClassService.getSmartClassByGradeID(gradeId);
- List<SemesterVo> result = new ArrayList<>();
- for (SmartClass data : datas) {
- SemesterVo model = new SemesterVo();
- model.setId(data.getId());
- model.setName(data.getName());
- result.add(model);
- }
- return CommonResult.ok(result);
- }
- @Override
- @Transactional(rollbackFor = {Exception.class})
- public CommonResult insertSmartClassToBaisheng(insertSmartClassRequest iscr, BindingResult bindingResult) throws Exception {
- if (bindingResult.hasErrors()) {
- String st = paramUtils.getParamError(bindingResult);
- return CommonResult.fail(st);
- }
- //先查找年级编号对应的年级数据是否存在
- SmartGrade grade = smartGradeService.querySmartGradeByBaisheng(iscr.getGradeNo());
- if (grade == null) {
- return CommonResult.fail("添加班级前,请先添加对应年级数据");
- }
- //判断重复性
- int existCount = smartClassService.existSmartClass(iscr.getClassName(), grade.getId());
- if (existCount > 0) {
- return CommonResult.fail("该班级数据已在系统中存在,请勿重复添加");
- }
- String appId = controlConfig.getAppId();
- String schoolno = controlConfig.getSchoolCode();
- String timestamp = TimeExchange.DateNowTimeStamo();
- String className = iscr.getClassName();
- String gradeNo = iscr.getGradeNo();
- String appSecret = controlConfig.getAppSecret();
- String url = "http://schoolopenapi.szymzh.com/openapi/classtab/create";
- JSONObject jsonobject = new JSONObject();
- jsonobject.put("appid", appId);
- String str = "{\"grade_no\":\"" + gradeNo + "\",\"classtab_name\":\"" + grade.getName() + className + "\"}";
- String aesStr = URLEncoder.encode(AesTestOne.encrypt(str), "UTF-8");
- jsonobject.put("data", aesStr);
- jsonobject.put("schoolno", schoolno);
- jsonobject.put("timestamp", timestamp);
- String md5Str = "appid=" + appId + "&data={\"grade_no\":\"" + gradeNo + "\",\"classtab_name\":\"" + grade.getName() + className + "\"}" + "&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("添加成功")) {
- //将数据加入希沃系统中
- //初始化客户端
- SeewoClient seewoClient = new DefaultSeewoClient(new Account(seewoConfig.getAppId(), seewoConfig.getAppSecret()));
- ClassServiceBatchSaveClassParam param = new ClassServiceBatchSaveClassParam();
- //请求体,MimeType为 application/json
- ClassServiceBatchSaveClassParam.JSONRequestBody requestBody = ClassServiceBatchSaveClassParam.JSONRequestBody.builder()
- .build();
- param.setRequestBody(requestBody);
- //查询条件
- ClassServiceBatchSaveClassParam.ClassSaveQuery query = ClassServiceBatchSaveClassParam.ClassSaveQuery.builder()
- .appId(seewoConfig.getAppId())
- .schoolUid(seewoConfig.getSchoolId())
- .build();
- requestBody.setQuery(query);
- //班级信息列表
- ClassServiceBatchSaveClassParam.ClassInfo classList = ClassServiceBatchSaveClassParam.ClassInfo.builder()
- .stageCode("CodeSchoolStage_1")
- .clazz(iscr.getClassNo())
- .nickName(iscr.getClassName())
- .grade(grade.getGradeNo())
- .gradeYear(2024)
- .build();
- query.setClassList(java.util.Collections.singletonList(classList));
- param.setRequestBody(requestBody);
- ClassServiceBatchSaveClassRequest request = new ClassServiceBatchSaveClassRequest(param);
- System.out.println("入参:" + request);
- //如果想要调用沙箱环境,请通过设置 request 对象的 serverUrl 属性,如:
- // request.setServerUrl("https://openapi.test.seewo.com")
- //执行请求,如果想获取到com.seewo.open.sdk.HttpResponse对象,请调用 seewoClient.execute 方法
- ClassServiceBatchSaveClassResult xwResult = seewoClient.invoke(request);
- System.out.println("出参:" + xwResult);
- if (xwResult == null) {
- return CommonResult.fail("希沃班级数据新增失败!");
- }
- if (!xwResult.getResponseBody().getCode().equals("000000")) {
- return CommonResult.fail(xwResult.getResponseBody().getMessage());
- }
- //希沃添加年级和班级数据是:存在就覆盖 不存在就新增
- //要拿到希沃的年级Uid和班级Uid
- String gradeUid = xwResult.getResponseBody().getData().get(0).getGradeUid();
- String classUid = xwResult.getResponseBody().getData().get(0).getUid();
- ObjectMapper objectMapper = new ObjectMapper();
- BsClassVo classVo = objectMapper.readValue(result, BsClassVo.class);
- // URL解码
- String decodedUrl = URLDecoder.decode(classVo.getData(), "UTF-8");
- BsClassNoVo classNo = objectMapper.readValue(decrypt(decodedUrl), BsClassNoVo.class);
- if (classNo == null) {
- return CommonResult.fail("百胜班级编号为空,新增失败");
- }
- SmartClass smartClass = new SmartClass();
- smartClass.setGradeId(grade.getId());
- smartClass.setClassUid(classUid);
- smartClass.setName(iscr.getClassName());
- smartClass.setClassNo(iscr.getClassNo());
- smartClass.setBsClassNo(classNo.getClasstab_no());
- grade.setGradeUid(gradeUid);
- try {
- int insertClass = smartClassService.insertSmartClass(smartClass);
- if (insertClass <= 0) {
- throw new Exception("新增失败");
- }
- int updateGrade = smartGradeService.updateSmartGrade(grade);
- if (updateGrade <= 0) {
- throw new Exception("新增失败");
- }
- } catch (Exception e) {
- throw new Exception("新增失败");
- }
- return CommonResult.ok("新增成功");
- }
- return CommonResult.fail("操作失败");
- }
- }
|