package com.travel.controller; import com.alibaba.fastjson.JSONObject; import com.aliyuncs.CommonRequest; import com.aliyuncs.CommonResponse; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.http.MethodType; import com.aliyuncs.profile.DefaultProfile; import com.travel.jwt.JWTUtil; import com.travel.model.ConfirmOrdering; import com.travel.model.Supplier; import com.travel.service.SupplierService; import com.travel.util.DesDecry; import com.travel.util.DesEncry; import com.travel.util.ParsingToken; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 供应商 */ @RestController @RequestMapping("supplier") public class SupplierController { @Autowired private SupplierService supplierService; /** * 校验手机号是否已注册 并发送验证码 * @param supplier 参数 * @return 返回结果 */ @GetMapping("checkTele") @ResponseBody public Map checkTele(Supplier supplier, HttpServletResponse response, HttpServletRequest request) { response.setHeader("Access-Control-Allow-Origin", "*"); Map map = new HashMap<>(); supplier.setPhone(DesEncry.encrypt(supplier.getPhone())); int type = 0; try { int count = supplierService.checkTele(supplier); if(count == 0) { type = 1; } else { type = 4; } try { switch (type) { case 1 : supplier.setCaptcha(PersonalController.getNonce_str()); supplierService.addUser(supplier); break; case 4 : supplier.setCaptcha(PersonalController.getNonce_str()); supplierService.updateCaptcha(supplier); break; } return SendSms(supplier, type); } catch (Exception e) { e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", ParsingToken.returnPrompt(request)); } } catch (Exception e) { e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", ParsingToken.returnPrompt(request)); } return map; } /** * 修改供应商手机号 发送验证码 * @param supplier 参数 * @param request 参数 * @return 返回结果 */ @PostMapping("updatePhoneSupplier") public Map updatePhoneSupplier(Supplier supplier, HttpServletRequest request){ Map map = new HashMap<>(); try{ try { int count = supplierService.checkTele(supplier); if(count == 0){ //获取token Map userMap = ParsingToken.tokenParsing(request); supplier.setCode((String) userMap.get("code")); supplier.setCaptcha(PersonalController.getNonce_str()); supplierService.updateCaptchaCode(supplier); return SendSms(supplier, 4); } else { map.put("errMsg", "手机号已存在"); map.put("msg", "500"); return map; } } catch (Exception e) { e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", ""); } map.put("msg", "200"); }catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", ParsingToken.returnPrompt(request)); } return map; } /** * 路线发布时校验 * @param supplier 参数 * @param request 参数 * @return 返回结果 */ @PostMapping("registeredRelease") @ResponseBody public Map registeredRelease(Supplier supplier, HttpServletRequest request){ Map map = new HashMap<>(); try{ //获取token Map userMap = ParsingToken.tokenParsing(request); String code = (String) userMap.get("code"); Supplier supplier1 = supplierService.getSuppierPhone(code); supplier.setPhone(supplier1.getPhone()); supplier.setIdNumber(DesEncry.encrypt(supplier.getIdNumber())); supplier.setAccountAssociated("0");//为主账号 supplier.setPermissionsType("0");//超管 int count = supplierService.getIdNumber(DesEncry.encrypt(supplier.getIdNumber())); if(count > 0) { map.put("errMsg", "该营业执照已被注册"); map.put("msg", "500"); return map; } supplierService.upddateSupplier(supplier); map.put("msg", "200"); } catch (Exception e) { e.printStackTrace(); map.put("errMsg", ParsingToken.returnPrompt(request)); map.put("msg", "500"); } return map; } /** * 注册信息提交 * @param supplier 参数 * @return 返回结果 */ @PostMapping("registered") @ResponseBody public Map registered(Supplier supplier, HttpServletRequest request){ Map map = new HashMap<>(); try{ supplier.setPhone(DesEncry.encrypt(supplier.getPhone())) .setIdNumber(DesEncry.encrypt(supplier.getIdNumber())); Supplier user1 = supplierService.checkUser(supplier); //验证是否第一次登录 //判断账号是否被锁定 if(user1.getFlag().equals("1")){ map.put("msg", "500"); map.put("errMsg", "此账号发生异常 请联系网站管理员"); return map; } supplier.setName("TUYAGYS_" + user1.getId()) .setCode(PersonalController.SerialNumber("SUP", user1.getId() + "")) .setHeadpir("https://lidaotech.oss-cn-beijing.aliyuncs.com/test/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20220622112747.png") .setCaptcha("null"); supplierService.upddateSupplier(supplier); //生成token传参 Map payload = new HashMap<>(); payload.put("phone", supplier.getPhone()); payload.put("code", supplier.getCode()); // 生成jwt的令牌 String token = JWTUtil.getToken(payload); supplier.setToken(token); map.put("data", supplier); map.put("msg", "200"); } catch (Exception e){ e.printStackTrace(); map.put("errMsg", ParsingToken.returnPrompt(request)); map.put("msg", "500"); } return map; } /** * 手机号登录 * @param supplier 参数 * @return 返回结果 */ @GetMapping("updateUser") @ResponseBody public Map updateUser(Supplier supplier, HttpServletResponse response, HttpServletRequest request){ response.setHeader("Access-Control-Allow-Origin", "*"); Map map = new HashMap<>(); supplier.setPhone(DesEncry.encrypt(supplier.getPhone())); try { int count = supplierService.checkCaptcha(supplier);//校验验证码是否正确 if(count > 0){ Supplier user1 = supplierService.checkUser(supplier); //验证是否第一次登录 if(user1.getCode() == null){ //如果为空的话增加 // map.put("msg", "100"); // map.put("errMsg", "该账号无注册,请先注册"); user1.setName("TUYAGYS_" + user1.getId()) .setCode(PersonalController.SerialNumber("SUP", user1.getId() + "")) .setHeadpir("https://lidaotech.oss-cn-beijing.aliyuncs.com/test/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20220622112747.png") .setCaptcha("null") .setAccountAssociated("0")//为主账号 .setPermissionsType("0");//超管; supplierService.upddateSupplier(user1); // return map; } else { //登录清空验证码 user1.setCaptcha("null"); supplierService.upddateSupplier(user1); } //判断账号是否被锁定 if(user1.getFlag().equals("1")){ map.put("msg", "500"); map.put("errMsg", "此账号发生异常 请联系网站管理员"); return map; } //验证是否完成注册 if(user1.getNatureSupplier() == null){ user1.setFirstType("0");//未登录 未注册 } else { user1.setFirstType("1");//已登录 } //生成token传参 Map payload = new HashMap<>(); payload.put("phone", DesDecry.decrypt(supplier.getPhone())); payload.put("code", user1.getCode()); // 生成jwt的令牌 String token = JWTUtil.getToken(payload); user1.setToken(token); user1.setPhone(DesDecry.decrypt(user1.getPhone())); map.put("data", user1); map.put("msg", "200"); } else { map.put("errMsg", "手机号或验证码不正确"); map.put("msg", "500"); } } catch (Exception e) { e.printStackTrace(); map.put("errMsg", ParsingToken.returnPrompt(request)); map.put("msg", "500"); } return map; } @CrossOrigin public Map SendSms(Supplier supplier, int type) { Map map = new HashMap<>(); String phone = DesDecry.decrypt(supplier.getPhone()); try { DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAI5tBqqAPaSEWZ3JK1qC6m", "6IAqbAUf47CWUIGOTThpKYO2vMXuX4"); IAcsClient client = new DefaultAcsClient(profile); CommonRequest request = new CommonRequest(); request.setSysMethod(MethodType.POST); request.setSysDomain("dysmsapi.aliyuncs.com"); request.setSysVersion("2017-05-25"); request.setSysAction("SendSms"); request.putQueryParameter("RegionId", "cn-hangzhou"); request.putQueryParameter("PhoneNumbers", phone);//手机号 request.putQueryParameter("SignName", "途丫"); switch (type) { case 1 : request.putQueryParameter("TemplateCode", "SMS_247410045"); request.putQueryParameter("TemplateParam", "{\"code\":\"" + supplier.getCaptcha() + "\"}");//验证码 break; case 4 : request.putQueryParameter("TemplateCode", "SMS_247410045"); request.putQueryParameter("TemplateParam", "{\"code\":\"" + supplier.getCaptcha() + "\"}");//验证码 break; } CommonResponse response = client.getCommonResponse(request); if(response.getData().indexOf("\"Message\":\"OK\"") > -1 && response.getData().indexOf("\"Code\":\"OK\"") > -1) { map.put("msg", "200"); }else { map.put("msg", "500"); map.put("errMsg", JSONObject.parseObject(response.getData(),Map.class).get("Message")); } } catch (Exception e) { e.printStackTrace(); map.put("code", "500"); map.put("errMsg", ""); } return map; } /** * 查询该用户跟指定供应商的目的地 * @param confirmOrdering 参数 * @return 返回结果 */ @GetMapping("getSupplierDestination") @ResponseBody public Map getSupplierDestination(ConfirmOrdering confirmOrdering, HttpServletRequest request){ Map map = new HashMap<>(); try{ Map userMap = ParsingToken.tokenParsing(request); confirmOrdering.setCode((String) userMap.get("code")); List list = new ArrayList<>(); String[] codeArray = confirmOrdering.getSupplierCode().split(","); for(int i = 0; i < codeArray.length; i++){ confirmOrdering.setSupplierCode(codeArray[i]); ConfirmOrdering confirmOrdering1 = supplierService.getSupplierDestination(confirmOrdering); if(null != confirmOrdering1){ confirmOrdering1.setSupplierCode(codeArray[i]); list.add(confirmOrdering1); } } map.put("data", list); map.put("msg", "200"); }catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", ParsingToken.returnPrompt(request)); } return map; } }