You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					255 lines
				
				6.8 KiB
			
		
		
			
		
	
	
					255 lines
				
				6.8 KiB
			| 
											2 years ago
										 | package com.ynxbd.common.action;
 | ||
|  | 
 | ||
|  | import com.ynxbd.common.action.base.BaseAction;
 | ||
|  | import com.ynxbd.common.bean.Patient;
 | ||
|  | import com.ynxbd.common.bean.User;
 | ||
|  | import com.ynxbd.common.bean.sms.SmsTemplate;
 | ||
|  | import com.ynxbd.common.helper.common.*;
 | ||
|  | import com.ynxbd.common.result.Result;
 | ||
|  | import com.ynxbd.common.result.ResultEnum;
 | ||
|  | import com.ynxbd.common.result.ServiceException;
 | ||
|  | import com.ynxbd.wx.config.WeChatConfig;
 | ||
|  | import com.ynxbd.wx.utils.DesEncryptHelper;
 | ||
|  | import com.ynxbd.wx.wxfactory.WxAuthHelper;
 | ||
|  | import com.ynxbd.wx.wxfactory.WxCacheHelper;
 | ||
|  | import com.ynxbd.wx.wxfactory.bean.AccessToken;
 | ||
|  | import lombok.extern.slf4j.Slf4j;
 | ||
|  | import org.apache.commons.lang3.ObjectUtils;
 | ||
|  | import org.apache.struts2.convention.annotation.Action;
 | ||
|  | import org.apache.struts2.convention.annotation.Namespace;
 | ||
|  | 
 | ||
|  | import java.util.HashMap;
 | ||
|  | import java.util.Map;
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @Author wsq
 | ||
|  |  * @Date 2021/1/7 17:26
 | ||
|  |  * @Copyright @ 2020 云南新八达科技有限公司 All rights reserved.
 | ||
|  |  */
 | ||
|  | @Slf4j
 | ||
|  | @Namespace("/api")
 | ||
|  | public class ApiAction extends BaseAction {
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * 获取系统accessToken(需解密)
 | ||
|  |      *
 | ||
|  |      * @return 公钥
 | ||
|  |      */
 | ||
|  |     @Action("getWxAccessToken")
 | ||
|  |     public Result getWxAccessToken() {
 | ||
|  |         AccessToken resp = WxCacheHelper.getWxAccessToken();
 | ||
|  |         if (resp == null) {
 | ||
|  |             return Result.error();
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         String accessToken = resp.getAccessToken();
 | ||
|  |         if (accessToken == null) {
 | ||
|  |             return Result.error();
 | ||
|  |         }
 | ||
|  |         log.warn(accessToken);
 | ||
|  | 
 | ||
|  |         accessToken = DesEncryptHelper.enCode(accessToken);
 | ||
|  |         if (accessToken == null) {
 | ||
|  |             return Result.error();
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         resp.setAccessToken(accessToken);
 | ||
|  |         return Result.success(resp);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     @Action("getWxJsapiTicket")
 | ||
|  |     public Result getWxJsapiTicket() {
 | ||
|  |         String ticket = WxCacheHelper.getJsapiTicket();
 | ||
|  |         if (ticket ==null)
 | ||
|  |             return Result.error();
 | ||
|  |         return Result.success(ticket);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * 获取系统公钥
 | ||
|  |      *
 | ||
|  |      * @return 公钥
 | ||
|  |      */
 | ||
|  |     @Action("deBase")
 | ||
|  |     public Result deBase(String data) {
 | ||
|  |         return Result.success(Base64Helper.decode(data));
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      //     * 获取系统公钥
 | ||
|  |      //     *
 | ||
|  |      //     * @return 公钥
 | ||
|  |      //     */
 | ||
|  | //    @Action("pdf")
 | ||
|  | //    public Result pdf(String data) {
 | ||
|  | //        try {
 | ||
|  | //            System.out.println(data);
 | ||
|  | //            BASE64Decoder decoder = new BASE64Decoder();
 | ||
|  | //            byte[] decodedBytes = decoder.decodeBuffer(data);
 | ||
|  | //
 | ||
|  | //            File file = new File("C:\\Users\\Administrator\\Desktop\\test.pdf");;
 | ||
|  | //            FileOutputStream fop = new FileOutputStream(file);
 | ||
|  | //
 | ||
|  | //            fop.write(decodedBytes);
 | ||
|  | //            fop.flush();
 | ||
|  | //            fop.close();
 | ||
|  | //        } catch (Exception e) {
 | ||
|  | //            e.printStackTrace();
 | ||
|  | //        }
 | ||
|  | //        return Result.success();
 | ||
|  | //    }
 | ||
|  | //
 | ||
|  | //
 | ||
|  | //    /**
 | ||
|  | //     * 获取系统公钥
 | ||
|  | //     *
 | ||
|  | //     * @return 公钥
 | ||
|  | //     */
 | ||
|  | //    @Action("pImg")
 | ||
|  | //    public Result pImg(String data) {
 | ||
|  | //        String s = Base64Helper.pdfBaseToImgBase(data);
 | ||
|  | //        return Result.success(s);
 | ||
|  | //    }
 | ||
|  | //
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * 获取系统公钥
 | ||
|  |      *
 | ||
|  |      * @return 公钥
 | ||
|  |      */
 | ||
|  |     @Action("getPublicKey")
 | ||
|  |     public Result getPublicKey() {
 | ||
|  |         return Result.success(RSAHelper.getPublicKey());
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * 获取系统公钥
 | ||
|  |      *
 | ||
|  |      * @return 公钥
 | ||
|  |      */
 | ||
|  |     @Action("getWebUrl")
 | ||
|  |     public Result getWebUrl() {
 | ||
|  |         return Result.success(WeChatConfig.getWebUrl());
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * 身份证识别
 | ||
|  |      *
 | ||
|  |      * @return 识别到的信息
 | ||
|  |      */
 | ||
|  |     @Action("idCard")
 | ||
|  |     public Result idCard(String image) {
 | ||
|  |         if (image == null) {
 | ||
|  |             return Result.error("image为空");
 | ||
|  |         }
 | ||
|  |         Patient patient = IDNumberHelper.getCardInfo(image);
 | ||
|  | 
 | ||
|  |         log.info("身份证信息-{{}}", patient);
 | ||
|  | 
 | ||
|  |         return patient == null ? Result.error() : Result.success(patient);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * 身份证识别
 | ||
|  |      *
 | ||
|  |      * @return 识别到的信息
 | ||
|  |      */
 | ||
|  |     @Action("getQrCodeBase")
 | ||
|  |     public Result getQrCodeBase(Integer size, String content) {
 | ||
|  |         if (content == null || size == null) {
 | ||
|  |             return Result.error(ResultEnum.PARAM_IS_DEFECT);
 | ||
|  |         }
 | ||
|  |         String base = QRCodeHelper.encodeToBase64(content, size, size);
 | ||
|  |         return Result.success(base);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * 清除患者缓存
 | ||
|  |      *
 | ||
|  |      * @return 识别到的信息
 | ||
|  |      */
 | ||
|  |     @Action("clearPatientCache")
 | ||
|  |     public Result clearPatientCache(String openid) {
 | ||
|  |         if (ObjectUtils.isEmpty(openid)) {
 | ||
|  |             return Result.error();
 | ||
|  |         }
 | ||
|  |         User cacheUser = WxCacheHelper.getCacheUser(openid);
 | ||
|  |         if (cacheUser == null) {
 | ||
|  |             return Result.error("没有缓存");
 | ||
|  |         }
 | ||
|  |         WxCacheHelper.getUserCache().remove(openid);
 | ||
|  |         return Result.success();
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     @Action("ip")
 | ||
|  |     public Result ip() {
 | ||
|  |         Map<String, String> map = new HashMap<>();
 | ||
|  |         String inIp = HttpHelper.getInIP();
 | ||
|  |         String outIP = HttpHelper.getOutIP();
 | ||
|  |         map.put("内网IP", inIp);
 | ||
|  |         map.put("外网IP", outIP);
 | ||
|  |         return Result.success(map);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     @Action("version")
 | ||
|  |     public Result version() {
 | ||
|  |        return Result.success(VersionHelper.getAppVersion());
 | ||
|  |     }
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     /**
 | ||
|  |      * 第三方使用勿动!
 | ||
|  |      */
 | ||
|  |     @Action("smsHelp")
 | ||
|  |     public String smsHelp() {
 | ||
|  |         String phoneNo = getString("phoneno");
 | ||
|  |         if (phoneNo == null) {
 | ||
|  |             return respEnd("ERROR:电话号码无效");
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         if (phoneNo.length() != 11) {
 | ||
|  |             return respEnd("ERROR:电话号码长度异常");
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         String code = getString("codeno");
 | ||
|  |         if (code == null) {
 | ||
|  |             return respEnd("ERROR:验证码无效");
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         if (code.length() > 6 || code.length() < 4) {
 | ||
|  |             return respEnd("ERROR:验证码长度异常");
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         String callNo = getString("callno");
 | ||
|  | 
 | ||
|  | 
 | ||
|  |         // 判断是否60s内重复请求
 | ||
|  |         SmsTemplate sms = SmsHelper.isRepeat(phoneNo);
 | ||
|  |         if (sms != null) {
 | ||
|  |             return respEnd("REPEAT"); // 60s内重复请求
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         boolean isFlag;
 | ||
|  |         String template;
 | ||
|  |         switch (callNo) {
 | ||
|  |             case "dhzzyyy001": // 东软自助机
 | ||
|  |                 template = "SMS_173475681";
 | ||
|  |                 isFlag = SmsHelper.sendCode(template, phoneNo, code);
 | ||
|  | 
 | ||
|  |                 break;
 | ||
|  | 
 | ||
|  |             default:
 | ||
|  |                 log.info("调用码无效");
 | ||
|  |                 return respEnd("ERROR:调用码无效");
 | ||
|  |         }
 | ||
|  | 
 | ||
|  |         if (isFlag) {
 | ||
|  |             return respEnd("SUCCESS"); // 成功
 | ||
|  |         }
 | ||
|  |         return respEnd("ERROR:发送失败");
 | ||
|  |     }
 | ||
|  | 
 | ||
|  | }
 |