123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659 |
- package com.platform.yijia.controller;
- import com.alibaba.fastjson.JSONObject;
- import com.alipay.api.*;
- import com.alipay.api.internal.util.AlipayEncrypt;
- import com.alipay.api.request.AlipaySystemOauthTokenRequest;
- import com.alipay.api.request.AlipayUserInfoAuthRequest;
- import com.alipay.api.request.AlipayUserInfoShareRequest;
- import com.alipay.api.response.AlipaySystemOauthTokenResponse;
- import com.alipay.api.response.AlipayUserInfoAuthResponse;
- import com.alipay.api.response.AlipayUserInfoShareResponse;
- import com.google.gson.Gson;
- import com.platform.yijia.config.YiJiaRequest;
- import com.platform.yijia.param.request.AppUserInfoRequest;
- import com.platform.yijia.pojo.*;
- import com.platform.yijia.service.*;
- import com.platform.yijia.utils.CodeMsg;
- import com.platform.yijia.utils.ResultData;
- import com.platform.yijia.utils.redis.RedisCacheUtil;
- import com.platform.yijia.utils.weixinapp.AesDecryptUtil;
- import com.platform.yijia.utils.weixinapp.WeiXinUserUtil;
- import com.sun.org.apache.bcel.internal.classfile.Code;
- import org.apache.commons.codec.digest.DigestUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- 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.security.MessageDigest;
- import java.security.NoSuchAlgorithmException;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.concurrent.TimeUnit;
- @Controller
- @YiJiaRequest()
- public class AppUserInfoController {
- private static Logger logger =(Logger) LoggerFactory.getLogger(AppUserInfoController.class);
- @Autowired
- private PayOrderService payOrderService;
- @Autowired
- private AppUserInfoService appUserInfoService;
- @Resource
- private StationService stationService;
- @Resource
- private CustomerPointsService customerPointsService;
- @Resource
- private RedisCacheUtil redisCacheUtil;
- @Resource
- private ElectronicMembershipCardService electronicMembershipCardService;
- // String appId = "wxe1135cd390b38a54"; //微信小程序appID
- // String appSecret = "0532c7d9ae876c4ad636df0b1e3b9ddb"; //微信小程序密钥
- //支付宝小程序:公钥、私钥、解密钥
- String PRIVATE_KEY ="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCBVAR3NE/UNvnpXNhmx8xX6se8euxQefbbkWLSykgA9dkP7eaNDyllMtuxjNLaQ1VB26sh2us0VrzSsNA7nmX5aPXu7ckHXH6wBzChCeCdDCHVpoHVq5doehgwMQrvh6aUEcPId+szepvoMmKaSEbFmFapZrTxrPOthI6ENR3RRgs+29vYgru+qJtg3V+tsOr1gkhocU16dX9s7zYfSQQNOmFa01aAhtwI9pDKZVYtELrqOg1dP5WY+jMyXReaDLfAP40H3X7+sVuzTCLu4oVE9CMU2rR+hxwjs6rVWbgE4z13IbM3N8FoPjwJJK0+cXYuORE3yHd4eZj3pEFKvCajAgMBAAECggEADHnAXIdtU/lhrkNIlNGdQrXhQqtQ9IpvZ8rkj5T30S/mGoVGgkD+K0b2rm/5PxjTtqCsJ33oxom/eUuZKsci6yZW4w+JHu6rQevPoxlC06OB+Awx5hzBZFCy2KNCfMzHIu17x3DZ/YNMWt/RZzSlrxX89iZ0OgQHFav9238MO02z9ejRPQEWO4tNb7YyHmi1h56fH2Y+cvLh32QWc+t16tkr5HVY6I2ktMIHYpGU4lyfYEjZ01P7QruAVol2lDNiIYVFXfyDvtwqQNWol6iCswSrDFj0LFsdTWEA1OLZUdD/mfLuBJ9nUAHoCyIh3uR+Aag87DRURcFN92hG0cex4QKBgQDwzmdUC1upAKmRTVEcKUUyDxHZxDhfjRoyhZGf6s/paPvWAVo60VGDC2lQeYqQ8sMnWbpAYWq/yFT2bGK9iPD9UoZWKwLSJuR5RAhiet5WpCfvRmEqEVHJtCaZeV0Q4Al2dPZqu/7opFsrrlY5MvdKJZuLCtL/UBdmkz4BJyFwGQKBgQCJfPoIF5EI/4iYvAQM6FNEQ/kbtb3BF9In9m5GwaMP25ho8evkdI0q5H88FI+i+PdqtdM2gKhuNCXNK/LbF8AzEAu0Qr2clwOq6wQzPU4wl0RNrmdg6H/YC1uTgoy4cr9RdTrqOwXT2UyWghP7AjrifcstZVsrdamOxQHRQ/p0GwKBgQC/uHWH8msNyRs4NkiHlUwkKN9bc+A2Iw9iffmNStQxz4YBwp3mClVNcj5s9feeo8lAgS3KqETnYEZU08JhiK/l4FhYLnJWguSQr9vFHHH8pUGuPWiKp7NoVegNdRTlpJmkGEdAf2DaNFDqHClF7Q/5lquaLgoDf+7BmiVZoZ/7sQKBgF9aw1qLZba063rqo3CETQPClOnIAYQDTmkS++as87fS2ICokK9QunuuICR+KiSgwZBL7OIXFznfhvwmZ/fWICIKFeP+id0py4xmFPKoqSsALool1GMcvVYMgoXq/EgMpW4MfUDokKEeS4TzUII9SLO/BQRGEJYys9dmAV2u5OxTAoGAb5qCQVtmmhO+A0GJG4KZ4xd3i54ZiykrRyCLralBudpI6Vr5+N6yD4R5IdqN2iJKcokt1TxtcJzrunKhUHtOXEiLK/k872iWGQhPeMV+sqWcQXQpKLtRhn4dROOP2qgeOHtdkeLoPlIcfd6TjIsGJJCksXE2hNKr6aljS/zhoKo=";
- String PUBLIC_KEY ="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsXdLLSfp79oe89Q+i1KHx7DfNQjAPWlDaBVtHnwo+jiCkVcNzkeRtz5mZsM3lBURFG6T3eY3qUu0b3FUCSUWd1Q06J4bFI1y4ID3JBCyRi0Up5pcqZzwZqa22QxK3m5/2tabd56FL9C/PPSuQj8gPgT8eUbPUZFeLcnYCLSM0VKU/ZxlXRx9G0MEOZizMxiGdKVwNCE1BxJKTybFz2X0AyakpOWlAZZNQm3JIGfJVHEsc2lgBoeEt8T8d1AJiTdlzAayRGJWpX0nymRZ+RhwQQmuKlPGPvLJDNTV87YvvMttmzlXN32lobK6203PlOoDiLmenj0lxniZfC9tPcRhgwIDAQAB";
- String ALI_APP_ID = "2021002140684377";
- String ENCRYPT_KEY ="K5F2BgcYsRYo8YpRnNSTsg==";
- //获取支付宝用户信息
- @ResponseBody
- @RequestMapping(value = "/getAliUserInfo")
- public String getAliUserInfo(@RequestParam String code){
- Gson gson =new Gson();
- //返回结果集
- ResultData resultData = null;
- logger.info("获取用户信息所需code:"+code);
- if(StringUtils.isNotBlank(code)){
- try {
- AlipayClient alipayClient = new DefaultAlipayClient(
- "https://openapi.alipay.com/gateway.do",
- ALI_APP_ID,
- PRIVATE_KEY,
- "json",
- "UTF-8",
- PUBLIC_KEY,
- "RSA2");
- AlipaySystemOauthTokenRequest alipaySystemOauthTokenRequest = new AlipaySystemOauthTokenRequest();
- alipaySystemOauthTokenRequest.setGrantType("authorization_code");
- alipaySystemOauthTokenRequest.setCode(code);
- AlipaySystemOauthTokenResponse alipaySystemOauthTokenResponse = alipayClient.execute(alipaySystemOauthTokenRequest);
- if (alipaySystemOauthTokenResponse.isSuccess()){
- logger.info("支付宝小程序获取access_token:"+ alipaySystemOauthTokenResponse.getAccessToken());
- //获取用户信息
- AlipayUserInfoShareRequest alipayUserInfoShareRequest = new AlipayUserInfoShareRequest();
- AlipayUserInfoShareResponse alipayUserInfoShareResponse = alipayClient.execute(alipayUserInfoShareRequest, alipaySystemOauthTokenResponse.getAccessToken());
- resultData = ResultData.success(alipayUserInfoShareResponse);
- }else {
- resultData = ResultData.success(alipaySystemOauthTokenResponse);
- }
- } catch (AlipayApiException e) {
- e.printStackTrace();
- resultData =ResultData.error(CodeMsg.REQUEST_FAIL);
- }
- }else {
- resultData =ResultData.error(CodeMsg.PARAMS_NUll);
- }
- return gson.toJson(resultData);
- }
- //支付宝小程序用户手机号解密 encryptedData
- @ResponseBody
- @RequestMapping(value = "/alipayEncryptUserPhone", method = RequestMethod.POST, consumes = "application/json")
- public String alipayEncryptUserPhone(@RequestBody JSONObject jsonObject){
- Gson gson =new Gson();
- //返回结果集
- ResultData resultData = null;
- if(StringUtils.isNotBlank(jsonObject.get("encryptedData").toString())){
- try {
- //解密用户手机号数据
- String encryptedData = jsonObject.get("encryptedData").toString();
- logger.info("支付宝获取手机号要解密数据: " +encryptedData);
- String aes = AlipayEncrypt.decryptContent(encryptedData, "AES", ENCRYPT_KEY, "UTF-8");
- logger.info("支付宝获取手机号解密后的数据:" +aes);
- resultData = ResultData.success(aes);
- } catch (AlipayApiException e) {
- e.printStackTrace();
- resultData = ResultData.error(CodeMsg.REQUEST_FAIL);
- }
- }else {
- resultData = ResultData.error(CodeMsg.PARAMS_NUll);
- }
- return gson.toJson(resultData);
- }
- /*
- * 微信小程序根据code获取用户openId和sessionKey
- * @param code
- * @param stationId
- * @return
- */
- @ResponseBody
- @RequestMapping(value = "/getSessionKeyAndOpenID")
- public String getSessionKeyAndOpenID(@RequestParam String code, Integer stationId){
- logger.info("微信小程序获取用户openId和sessionKey入参code和stationId: "+code +"-----" +stationId);
- Gson gson =new Gson();
- //返回结果集
- ResultData resultData = null;
- if(stationId !=null && StringUtils.isNotBlank(code)){
- String appId = ""; //微信小程序appID
- String appSecret = ""; //微信小程序密钥
- Map<String, String> map = stationService.getStationAppIdAndAppSecret(stationId);
- appId = map.get("appId"); //微信小程序appID
- appSecret = map.get("appSecret"); //微信小程序密钥
- logger.info("油站信息:"+map.toString());
- Map<String, Object> userSessionKeyAndOpenID = WeiXinUserUtil.getUserSessionKeyAndOpenID(appId, appSecret, code);
- resultData = ResultData.success(userSessionKeyAndOpenID);
- }else {
- resultData = ResultData.error(CodeMsg.REQUEST_FAIL);
- }
- return gson.toJson(resultData);
- }
- /*
- * 解密 encryptedData
- * @param sessionKey
- * @param encryptedData
- * @param iv
- * @return
- */
- @ResponseBody
- @RequestMapping(value = "/decryptEncryptedData", method = RequestMethod.POST, consumes = "application/json")
- public String decryptEncryptedData(@RequestBody JSONObject jsonObject){
- logger.info("解密获取手机号前台传入参数:" +jsonObject.toString());
- Gson gson =new Gson();
- //返回结果集
- ResultData resultData = null;
- String encryptedData = jsonObject.get("encryptedData").toString();
- String sessionKey = jsonObject.get("sessionKey").toString();
- String iv = jsonObject.get("iv").toString();
- if(StringUtils.isNotBlank(encryptedData) && StringUtils.isNotBlank(sessionKey) && StringUtils.isNotBlank(iv) ){
- net.sf.json.JSONObject jsonObject1 = AesDecryptUtil.decryptEncryptedData(encryptedData, sessionKey, iv, "UTF-8");
- resultData = ResultData.success(jsonObject1);
- }else {
- resultData = ResultData.error(CodeMsg.REQUEST_FAIL);
- }
- return gson.toJson(resultData);
- }
- /*
- * JS-SDK使用权限签名算法
- * @param noncestr 随机字符串
- * @param timestamp 时间戳
- * @param url 页面访问路径
- * @param stationId 油站ID
- * @return
- */
- @RequestMapping(value = "/getSignature", method = RequestMethod.GET)
- @ResponseBody
- public String getSignature(@RequestParam String noncestr, String timestamp, String url, Integer stationId){
- Gson gson =new Gson();
- //返回结果集
- ResultData resultData = null;
- logger.info("JS-SDK使用权限签名算法前台传来参数: "+"油站ID:"+stationId+"; noncestr: " +noncestr+"; timestamp: " +timestamp + "; url: "+url);
- Map<String, String> m = stationService.getStationAppIdAndAppSecret(stationId);
- String gzhAppId ="";
- String gzhAppSecret ="";
- String accessToken ="";
- if(m !=null && m.containsKey("gzhAppId") && m.containsKey("gzhAppSecret")){
- gzhAppId = m.get("gzhAppId");
- gzhAppSecret = m.get("gzhAppSecret");
- accessToken = this.getTokenByRedisCache(gzhAppId, gzhAppSecret);
- //当前用户登录的公众号redis缓存中的jsapi_ticket
- String appIdTicket =gzhAppId + "-ticket";
- String jsapiTicket ="";
- if(redisCacheUtil.hasKey(appIdTicket)){
- jsapiTicket = redisCacheUtil.getCacheObject(appIdTicket);
- }else {
- //获取jsapi_ticket
- net.sf.json.JSONObject gzhJsapiTicket = WeiXinUserUtil.getGzhJsapiTicket(accessToken);
- if(gzhJsapiTicket.containsKey("ticket")){
- redisCacheUtil.setCacheObject(appIdTicket, gzhJsapiTicket.get("ticket"));
- redisCacheUtil.expire(appIdTicket, 7200, TimeUnit.SECONDS);
- jsapiTicket = gzhJsapiTicket.get("ticket").toString();
- }
- }
- String string1 = "jsapi_ticket="+jsapiTicket + "&noncestr=" +noncestr +"×tamp=" +timestamp +"&url=" +url;
- logger.info("签名参数拼接:"+ string1);
- //sha1加密
- String signature = DigestUtils.sha1Hex(string1);
- logger.info("JS-SDK签名参数sha1加密后:"+ signature);
- resultData = ResultData.success(signature);
- }
- return gson.toJson(resultData);
- }
- /*
- * 判断使用小程序支付的用户是否关注公众号
- * @param unionId
- * @param stationId
- * @return
- */
- @RequestMapping(value = "/whetherFollowGzh", method = RequestMethod.GET)
- @ResponseBody
- public String whetherFollowGzh(@RequestParam String unionId, Integer stationId){
- Gson gson =new Gson();
- //返回结果集
- ResultData resultData = null;
- if (unionId !=null){
- Map<String, String> param = new HashMap<>();
- param.put("unionId", unionId);
- param.put("userType", "1");
- param.put("stationId", stationId.toString());
- String openId = appUserInfoService.whetherFollowGzh(param);
- if(openId !=null){
- Map<String, String> m = stationService.getStationAppIdAndAppSecret(stationId);
- String gzhAppId ="";
- String gzhAppSecret ="";
- String accessToken ="";
- if(m !=null && m.containsKey("gzhAppId") && m.containsKey("gzhAppSecret")){
- gzhAppId = m.get("gzhAppId");
- gzhAppSecret = m.get("gzhAppSecret");
- accessToken = this.getTokenByRedisCache(gzhAppId, gzhAppSecret);
- net.sf.json.JSONObject unionIdInfo = WeiXinUserUtil.getUnionIdInfo(accessToken, openId);
- logger.info("用户公众号信息:" + unionIdInfo);
- if(unionIdInfo.containsKey("subscribe") && unionIdInfo.get("subscribe").equals(1)){
- resultData = ResultData.success(CodeMsg.SUCCESS);
- }else {
- resultData = ResultData.error(CodeMsg.NO_FollowGzh);
- }
- }else {
- resultData = ResultData.error(CodeMsg.SEARCH_APPID_FAIL);
- }
- }else {
- resultData = ResultData.error(CodeMsg.USERGZHINFO_EXSIST);
- }
- }
- return gson.toJson(resultData);
- }
- /*
- * 获取公众号授权后的信息
- * @param code
- * @param stationId
- * @return
- */
- @RequestMapping(value = "/getGzhAuthorizeInfo", method = RequestMethod.GET)
- @ResponseBody
- public String getGzhAuthorizeInfo(@RequestParam String code, Integer stationId){
- logger.info("获取公众号授权后的信息前端传递参数:code:"+ code );
- logger.info("获取公众号授权后的信息前端传递参数:stationId:" +stationId);
- Gson gson =new Gson();
- //返回结果集
- ResultData resultData = null;
- if(code != null && stationId !=null){
- String gzhAppId ="";
- String gzhAppSecret ="";
- Map<String, String> m = stationService.getStationAppIdAndAppSecret(stationId);
- if(m !=null && m.containsKey("gzhAppId") && m.containsKey("gzhAppSecret")){
- gzhAppId = m.get("gzhAppId");
- gzhAppSecret = m.get("gzhAppSecret");
- net.sf.json.JSONObject gzhAuthorizeInfo = WeiXinUserUtil.getGzhAuthorizeInfo(gzhAppId, gzhAppSecret, code);
- logger.info("授权获取到信息:" + gzhAuthorizeInfo.toString());
- resultData = ResultData.success(gzhAuthorizeInfo);
- }else {
- resultData = ResultData.error(CodeMsg.REQUEST_FAIL);
- }
- }else {
- resultData = ResultData.error(CodeMsg.REQUEST_FAIL);
- }
- return gson.toJson(resultData);
- }
- /*
- * 测试用来
- * 获取公众号授权后的信息测试
- * @param code
- * @param stationId
- * @return
- */
- @RequestMapping(value = "/getGzhAuthorizeInfoNew", method = RequestMethod.GET)
- @ResponseBody
- public String getGzhAuthorizeInfoNew(@RequestParam String code, Integer stationId){
- logger.info("获取公众号授权后的信息前端传递参数:code:"+ code );
- logger.info("获取公众号授权后的信息前端传递参数:stationId:" +stationId);
- Gson gson =new Gson();
- //返回结果集
- ResultData resultData = null;
- if(code != null && stationId !=null){
- String gzhAppId ="";
- String gzhAppSecret ="";
- Map<String, String> m = stationService.getStationAppIdAndAppSecret(stationId);
- if(m !=null && m.containsKey("gzhAppId") && m.containsKey("gzhAppSecret")){
- gzhAppId = m.get("gzhAppId");
- gzhAppSecret = m.get("gzhAppSecret");
- net.sf.json.JSONObject gzhAuthorizeInfo = WeiXinUserUtil.getGzhAuthorizeInfo(gzhAppId, gzhAppSecret, code);
- logger.info("授权获取到信息:" + gzhAuthorizeInfo.toString());
- if(gzhAuthorizeInfo.containsKey("openid")){
- String openId = gzhAuthorizeInfo.get("openid").toString();
- String accessToken = this.getTokenByRedisCache(gzhAppId, gzhAppSecret);
- net.sf.json.JSONObject unionIdInfo = null;
- unionIdInfo= WeiXinUserUtil.getUnionIdInfo(accessToken, openId);
- if(unionIdInfo.containsKey("errcode")){
- //删除原来key
- redisCacheUtil.deleteObject(gzhAppId);
- String token = WeiXinUserUtil.getToken(gzhAppId, gzhAppSecret).getAccessToken();
- redisCacheUtil.setCacheObject(gzhAppId, token);
- redisCacheUtil.expire(gzhAppId, 7200, TimeUnit.SECONDS);
- unionIdInfo= WeiXinUserUtil.getUnionIdInfo(token, openId);
- }
- AppUserInfo appUserInfo = new AppUserInfo();
- if(unionIdInfo.containsKey("openid")){
- appUserInfo.setBlogOpenid(unionIdInfo.get("openid").toString());
- }
- if(unionIdInfo.containsKey("nickname")){
- appUserInfo.setBlogNickName(unionIdInfo.get("nickname").toString());
- }
- if(unionIdInfo.containsKey("sex")){
- appUserInfo.setSexFlag(unionIdInfo.get("sex").toString());
- }
- if(unionIdInfo.containsKey("headimgurl")){
- appUserInfo.setBlogProfilePhoto(unionIdInfo.get("headimgurl").toString());
- }
- if(unionIdInfo.containsKey("unionid")){
- appUserInfo.setUnionId(unionIdInfo.get("unionid").toString());
- }
- appUserInfo.setUserType("1");
- Map<String, Object> params = new HashMap<>();
- params.put("openId", openId); //注册用户openId
- params.put("userType", appUserInfo.getUserType()); //用户类型
- //判断该用户是否已存在
- int count = appUserInfoService.isExistAppUser(params);
- if(count > 0){
- appUserInfoService.updateAppUserInfo(appUserInfo);
- }else {
- appUserInfoService.AddAppUserInfo(appUserInfo);
- }
- resultData = ResultData.success(unionIdInfo);
- }
- }else {
- resultData = ResultData.error(CodeMsg.REQUEST_FAIL);
- }
- }else {
- resultData = ResultData.error(CodeMsg.REQUEST_FAIL);
- }
- return gson.toJson(resultData);
- }
- /*
- * 获取公众号信息
- * @param openId
- * @param stationId
- * @return
- */
- @RequestMapping(value = "/getGzhUserInfo", method = RequestMethod.GET)
- @ResponseBody
- public String getGzhUserInfo(@RequestParam String openId, Integer stationId){
- Gson gson =new Gson();
- //返回结果集
- ResultData resultData = null;
- if(openId !=null && stationId !=null){
- String gzhAppId ="";
- String gzhAppSecret ="";
- String accessToken ="";
- Map<String, String> m = stationService.getStationAppIdAndAppSecret(stationId);
- if(m !=null && m.containsKey("gzhAppId") && m.containsKey("gzhAppSecret")){
- gzhAppId = m.get("gzhAppId");
- gzhAppSecret = m.get("gzhAppSecret");
- accessToken = this.getTokenByRedisCache(gzhAppId, gzhAppSecret);
- net.sf.json.JSONObject unionIdInfo = null;
- unionIdInfo= WeiXinUserUtil.getUnionIdInfo(accessToken, openId);
- if(unionIdInfo.containsKey("errcode")){
- //删除原来key
- redisCacheUtil.deleteObject(gzhAppId);
- String token = WeiXinUserUtil.getToken(gzhAppId, gzhAppSecret).getAccessToken();
- redisCacheUtil.setCacheObject(gzhAppId, token);
- redisCacheUtil.expire(gzhAppId, 7200, TimeUnit.SECONDS);
- unionIdInfo= WeiXinUserUtil.getUnionIdInfo(token, openId);
- }
- resultData=ResultData.success(unionIdInfo);
- }
- }else {
- resultData=ResultData.error(CodeMsg.REQUEST_FAIL);
- }
- return gson.toJson(resultData);
- }
- /*
- * 从Redis缓存中获取 tokenCache
- * @param appId
- * @param appSecret
- * @return
- */
- public String getTokenByRedisCache(String appId, String appSecret){
- logger.info("appId参数: "+ appId+" ;appSecret参数: " +appSecret);
- if(!redisCacheUtil.hasKey(appId) || redisCacheUtil.getCacheObject(appId) ==null || redisCacheUtil.getCacheObject(appId).equals("")){
- String token = WeiXinUserUtil.getToken(appId, appSecret).getAccessToken();
- redisCacheUtil.setCacheObject(appId, token);
- redisCacheUtil.expire(appId, 7200, TimeUnit.SECONDS);
- logger.info("Redis缓存中token信息: " + token);
- return token;
- }else {
- return redisCacheUtil.getCacheObject(appId);
- }
- }
- /*
- * 添加用户信息
- * @param request
- * @return
- */
- @RequestMapping(value = "/addAppUserInfo", method = RequestMethod.POST)
- @ResponseBody
- @Transactional
- public String addAppUserInfo(@RequestBody AppUserInfoRequest request){
- Gson gson =new Gson();
- ResultData resultData=null;
- try{
- logger.info("前端传入参数:" +request.toString());
- AppUserInfo appUserInfo =new AppUserInfo();
- CustomerPoints customerPoints = new CustomerPoints();
- CustomerElectronicCard customerElectronicCard = new CustomerElectronicCard(); //客户电子卡
- String openId = request.getOpenId(); //此参数用于查询该用户是否已注册过
- if(StringUtils.isNotBlank(request.getBlogNickName())){
- appUserInfo.setBlogNickName(request.getBlogNickName());
- customerPoints.setCustomerName(request.getBlogNickName());
- customerElectronicCard.setCustomerName(request.getBlogNickName());
- }
- if(StringUtils.isNotBlank(request.getBlogProfilePhoto())){
- appUserInfo.setBlogProfilePhoto(request.getBlogProfilePhoto());
- }
- if(StringUtils.isNotBlank(request.getUnionId())){
- appUserInfo.setUnionId(request.getUnionId());
- customerPoints.setUnionId(request.getUnionId());
- customerElectronicCard.setUnionId(request.getUnionId());
- }
- appUserInfo.setStationId(request.getStationId());
- customerPoints.setCreateTime(new Date());
- customerPoints.setUnionId(request.getUnionId());
- customerPoints.setPoints(0);
- customerPoints.setConsumptionPoints(0);
- customerPoints.setAccumulatePoints(0);
- customerPoints.setInvalidPoints(0);
- customerPoints.setStationId(request.getStationId());
- customerPoints.setStationName(request.getStationName());
- customerElectronicCard.setStationId(request.getStationId());
- customerElectronicCard.setStationName(request.getStationName());
- if(StringUtils.isNotBlank(request.getSexFlag())){
- appUserInfo.setSexFlag(request.getSexFlag());
- }
- if(StringUtils.isNotBlank(request.getMobilePhone())){
- appUserInfo.setMobilePhone(request.getMobilePhone());
- customerPoints.setMobilePhone(request.getMobilePhone());
- customerElectronicCard.setMobilePhone(request.getMobilePhone());
- }
- if(request.getUserType()!=null){
- String userType = request.getUserType();
- appUserInfo.setUserType(userType);
- switch (userType){
- case "1": //当为微信用户时
- AppUserInfo wxInfo = new AppUserInfo();
- wxInfo.setStationId(request.getStationId());
- //判断当前登录是否存在手机号
- if(StringUtils.isNotBlank(request.getMobilePhone())){
- appUserInfo.setMinaOpenid(openId);
- wxInfo.setMobilePhone(request.getMobilePhone());
- AppUserInfo wxInfoResult = appUserInfoService.getAppUserInfo(wxInfo);
- if(wxInfoResult !=null){
- //如果不为空,则说明存在小程序用户信息;
- appUserInfo.setUpdateDate(new Date());
- appUserInfoService.updateAppUserInfo(appUserInfo);
- }else {
- //否则,根据unionID查询用户信息
- wxInfo.setUnionId(request.getUnionId());
- wxInfo.setMobilePhone(null);
- AppUserInfo appUserInfoByUnionID = appUserInfoService.getAppUserInfo(wxInfo);
- if(appUserInfoByUnionID !=null){
- //如果不为空,则说明存在公众号用户信息
- appUserInfo.setUpdateDate(new Date());
- appUserInfoService.updateAppUserInfo(appUserInfo);
- }else {
- //否则,新增用户信息
- appUserInfo.setRegisteDate(new Date());
- appUserInfoService.AddAppUserInfo(appUserInfo);
- }
- }
- }else {
- appUserInfo.setBlogOpenid(openId);
- //如果没有手机号,则说明是用户公众号登录
- wxInfo.setUnionId(request.getUnionId());
- AppUserInfo appUserInfoNoPhone = appUserInfoService.getAppUserInfo(wxInfo);
- if(appUserInfoNoPhone !=null){
- appUserInfo.setUpdateDate(new Date());
- appUserInfoService.updateAppUserInfo(appUserInfo);
- }else {
- appUserInfo.setRegisteDate(new Date());
- appUserInfoService.AddAppUserInfo(appUserInfo);
- }
- }
- break;
- case "2":
- AppUserInfo aLiInfo =new AppUserInfo();
- aLiInfo.setStationId(request.getStationId());
- if(StringUtils.isNotBlank(request.getMobilePhone())){
- //如果手机号不为空,则说明是支付宝小程序登录
- aLiInfo.setMobilePhone(request.getMobilePhone());
- AppUserInfo appUserInfos = appUserInfoService.getAppUserInfo(aLiInfo);
- if(appUserInfos !=null){
- //如果不为空,则说明用户存在小程序用户信息
- appUserInfo.setUpdateDate(new Date());
- appUserInfoService.updateAppUserInfo(appUserInfo);
- //删除用户支付宝的公众号信息
- //appUserInfoService.delAliInfo();
- }else {
- //如果为空
- aLiInfo.setALiId(request.getALiId());
- AppUserInfo appUserInfoByAliId = appUserInfoService.getAppUserInfo(aLiInfo);
- if(appUserInfoByAliId !=null){
- //如果不为空则说明存在支付宝公众号
- appUserInfo.setUpdateDate(new Date());
- appUserInfoService.updateAppUserInfo(appUserInfo);
- }else {
- appUserInfo.setRegisteDate(new Date());
- appUserInfoService.AddAppUserInfo(appUserInfo);
- }
- }
- }else {
- //如果手机号为空,则说明是公众号登录
- aLiInfo.setALiId(request.getALiId());
- AppUserInfo appUserInfoNoPhone = appUserInfoService.getAppUserInfo(aLiInfo);
- if(appUserInfoNoPhone !=null){
- //说明存在支付宝小程序用户信息
- appUserInfo.setUpdateDate(new Date());
- appUserInfoService.updateAppUserInfo(appUserInfo);
- }else {
- //不存在
- appUserInfo.setRegisteDate(new Date());
- appUserInfoService.AddAppUserInfo(appUserInfo);
- }
- }
- break;
- }
- }
- StationInfo stationInfo = new StationInfo();
- stationInfo.setStationId(request.getStationId());
- //获取油站功能信息
- StationInfo stationInfos = stationService.selectStationInfo(stationInfo);
- if(stationInfos !=null && stationInfos.getStationName() !=null){
- customerPoints.setStationName(stationInfos.getStationName());
- customerElectronicCard.setStationName(stationInfos.getStationName());
- }
- //是否开起积分功能
- if(stationInfos !=null && stationInfos.getIntegralFlag().equals("1")){
- this.insertCustomerPointsInfo(customerPoints, request);
- }
- //是否开起电子卡功能
- if(stationInfos !=null && stationInfos.getCardEnabledFlag().equals("1")){
- this.insertCustomerElectronicCard(customerElectronicCard, request, stationInfos);
- }
- resultData = ResultData.success(CodeMsg.SUCCESS);
- }catch (Exception e){
- resultData = ResultData.error(CodeMsg.INSERT_FAIL);
- e.printStackTrace();
- }
- return gson.toJson(resultData);
- }
- //客户积分表信息操作
- public void insertCustomerPointsInfo(CustomerPoints customerPoints, AppUserInfoRequest request){
- CustomerPoints customerPointsInfo = customerPointsService.getCustomerPointsInfo(customerPoints);
- if(customerPointsInfo !=null){
- CustomerPoints c = new CustomerPoints();
- c.setUnionId(customerPoints.getUnionId());
- c.setStationId(request.getStationId());
- c.setMobilePhone(request.getMobilePhone());
- c.setStationId(request.getStationId());
- customerPointsService.updateCustomerPointsInfo(c);
- }else {
- customerPointsService.insertCustomerPointsInfo(customerPoints);
- }
- }
- //客户电子会员卡表操作
- public void insertCustomerElectronicCard(CustomerElectronicCard customerElectronicCard, AppUserInfoRequest request, StationInfo stationInfos){
- CustomerCardSetting customerCardSetting = new CustomerCardSetting();
- customerCardSetting.setStationId(request.getStationId());
- if(stationInfos.getCardRuleFlag().equals("1")){
- //表示共享则使用集团ID为查询条件
- customerCardSetting.setStationId(stationInfos.getGroupId());
- }
- List<CustomerCardSetting> cardRechargeSettingList = electronicMembershipCardService.getCardRechargeSettingList(customerCardSetting);
- if(cardRechargeSettingList !=null && cardRechargeSettingList.size() >0){
- String cardOilsTypeStr = cardRechargeSettingList.get(0).getCardOilsType();
- String[] split = cardOilsTypeStr.split(",");
- for(int i=0; i<split.length; i++){
- customerElectronicCard.setCardOilsType(String.valueOf(split[i])); //卡的类型
- List<CustomerElectronicCard> electronicCardList = electronicMembershipCardService.getElectronicCardList(customerElectronicCard);
- if(electronicCardList !=null && electronicCardList.size() ==1){
- electronicMembershipCardService.updateElectronicCardInfoByUnionId(customerElectronicCard);
- }else {
- String currentTime = String.valueOf(System.currentTimeMillis());
- String customerNo = request.getStationId() + currentTime;
- customerElectronicCard.setCustomerNo(customerNo);
- customerElectronicCard.setAmt(new BigDecimal(0));
- customerElectronicCard.setCreateTime(new Date());
- electronicMembershipCardService.insetElectronicCard(customerElectronicCard);
- }
- }
- }
- }
- }
|