package com.ks.daylucky.controller.api.client;
|
|
import com.alipay.api.AlipayApiException;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.ks.app.entity.AppAlipayInfoWithBLOBs;
|
import com.ks.app.entity.AppInfo;
|
import com.ks.daylucky.exception.UserInfoException;
|
import com.ks.daylucky.exception.UserInfoExtraException;
|
import com.ks.daylucky.pojo.DO.UserInfo;
|
import com.ks.daylucky.pojo.DO.UserMsg;
|
import com.ks.daylucky.pojo.DTO.AlipayUserInfo;
|
import com.ks.daylucky.pojo.DTO.TokenDTO;
|
import com.ks.daylucky.pojo.DTO.UserMsgSettings;
|
import com.ks.daylucky.pojo.VO.AcceptData;
|
import com.ks.daylucky.service.UserInfoExtraService;
|
import com.ks.daylucky.service.UserInfoService;
|
import com.ks.daylucky.service.UserMsgService;
|
import com.ks.daylucky.util.Constant;
|
import com.ks.daylucky.util.RSA2Encryptor;
|
import com.ks.daylucky.util.RSAUtil;
|
import com.ks.daylucky.util.UserInfoUtil;
|
import net.sf.json.JSONObject;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.yeshi.utils.JsonUtil;
|
import org.yeshi.utils.StringUtil;
|
import org.yeshi.utils.alipay.AlipayXcxUtil;
|
import org.yeshi.utils.entity.alipay.AlipayAppInfo;
|
import org.yeshi.utils.entity.alipay.AlipayCertInfo;
|
import org.yeshi.utils.exception.AlipayXcxException;
|
|
import javax.annotation.Resource;
|
import java.io.ByteArrayInputStream;
|
import java.util.List;
|
|
@Controller
|
@RequestMapping(value = "api/client/user", produces = "application/json;charset=utf-8")
|
public class UserController {
|
@Resource
|
private UserInfoService userInfoService;
|
|
@Resource
|
private UserInfoExtraService userInfoExtraService;
|
|
@Resource
|
private UserMsgService userMsgService;
|
|
private AlipayAppInfo getAlipayAppInfo(AppInfo app) {
|
AppAlipayInfoWithBLOBs alipay = app.getAlipayInfo();
|
AlipayAppInfo info = new AlipayAppInfo(alipay.getAlipayAppId(), alipay.getAlipayPrivateKey(), new AlipayCertInfo(new ByteArrayInputStream(alipay.getAlipayAppCertPublicKey()), new ByteArrayInputStream(alipay.getAlipayPublicCert()), new ByteArrayInputStream(alipay.getAlipayRootCert())));
|
return info;
|
}
|
|
@ResponseBody
|
@RequestMapping("getToken")
|
public String getToken(AcceptData acceptData, String alipayCode, String wxCode) {
|
//支付宝应用
|
if (!StringUtil.isNullOrEmpty(alipayCode)) {
|
String userId = null;
|
try {
|
userId = AlipayXcxUtil.getUserId(getAlipayAppInfo(acceptData.getApp()), alipayCode);
|
} catch (AlipayApiException e) {
|
e.printStackTrace();
|
} catch (AlipayXcxException e) {
|
e.printStackTrace();
|
}
|
|
if (userId == null) {
|
return JsonUtil.loadFalseResult("token获取失败");
|
}
|
|
String identifyCode = userId;
|
UserInfo user = userInfoService.getUserInfo(acceptData.getApp().getId(), identifyCode);
|
//注册
|
if (user == null) {
|
user = new UserInfo();
|
user.setAppId(acceptData.getApp().getId());
|
user.setIdentifyCode(identifyCode);
|
user.setAlipayUid(identifyCode);
|
try {
|
Long uid = userInfoService.addUserInfo(user);
|
user.setId(uid);
|
} catch (UserInfoException e) {
|
return JsonUtil.loadFalseResult("token获取失败");
|
}
|
}
|
|
TokenDTO tokenDTO = UserInfoUtil.getToken(user.getId());
|
return JsonUtil.loadTrueResult(tokenDTO);
|
}
|
return JsonUtil.loadFalseResult("不为支付宝应用");
|
}
|
|
|
@ResponseBody
|
@RequestMapping("getUserInfo")
|
public String getUserInfo(AcceptData acceptData) {
|
long uid = acceptData.getUid();
|
UserInfo user = userInfoService.getUserDetail(uid);
|
if (user == null) {
|
return JsonUtil.loadFalseResult("用户不存在");
|
}
|
return JsonUtil.loadTrueResult(JsonUtil.getApiCommonGson().toJson(user));
|
}
|
|
/**
|
* 支付宝用户信息上传
|
*
|
* @param acceptData
|
* @param userInfo
|
* @return
|
*/
|
@ResponseBody
|
@RequestMapping("uploadAlipayUserInfo")
|
public String uploadAlipayUserInfo(AcceptData acceptData, String userInfo) {
|
String decryptStr = RSAUtil.decrypt(userInfo);
|
if (StringUtil.isNullOrEmpty(decryptStr)) {
|
return JsonUtil.loadFalseResult("用户信息获取失败");
|
}
|
AlipayUserInfo alipayUserInfo = JsonUtil.getSimpleGson().fromJson(decryptStr, AlipayUserInfo.class);
|
|
UserInfo user = new UserInfo();
|
user.setId(acceptData.getUid());
|
user.setPortrait(alipayUserInfo.getAvatar());
|
user.setNickName(alipayUserInfo.getNickName());
|
user.setAlipayNickName(alipayUserInfo.getNickName());
|
user.setAlipayPortrait(alipayUserInfo.getAvatar());
|
userInfoService.updateUserInfo(user);
|
|
user = userInfoService.getUserDetail(user.getId());
|
|
return JsonUtil.loadTrueResult(JsonUtil.getApiCommonGson().toJson(user));
|
}
|
|
|
@ResponseBody
|
@RequestMapping("setAlipayUserInfo")
|
public String setAlipayUserInfo(AcceptData acceptData, String portrait, String nickName) {
|
long uid = acceptData.getUid();
|
UserInfo user = userInfoService.getUserDetail(uid);
|
if (user == null) {
|
return JsonUtil.loadFalseResult("用户不存在");
|
}
|
UserInfo update = new UserInfo();
|
update.setId(uid);
|
update.setPortrait(portrait);
|
update.setNickName(nickName);
|
update.setAlipayPortrait(portrait);
|
update.setAlipayNickName(nickName);
|
|
userInfoService.updateUserInfo(update);
|
|
return JsonUtil.loadTrueResult(JsonUtil.getApiCommonGson().toJson(user));
|
}
|
|
@ResponseBody
|
@RequestMapping("getMsgSettings")
|
public String getMsgSettings(AcceptData acceptData) {
|
UserMsgSettings msgSettings = userInfoExtraService.getUserMsgSettings(acceptData.getUid());
|
return JsonUtil.loadTrueResult(JsonUtil.getApiCommonGson().toJson(msgSettings));
|
}
|
|
|
@ResponseBody
|
@RequestMapping("setMsgSettings")
|
public String setMsgSettings(AcceptData acceptData, UserMsgSettings settings) {
|
userInfoExtraService.setUserMsgSetting(acceptData.getUid(), settings);
|
UserMsgSettings msgSettings = userInfoExtraService.getUserMsgSettings(acceptData.getUid());
|
return JsonUtil.loadTrueResult(JsonUtil.getApiCommonGson().toJson(msgSettings));
|
}
|
|
@ResponseBody
|
@RequestMapping("setMsgRead")
|
public String setMsgRead(AcceptData acceptData) {
|
try {
|
userInfoExtraService.setMsgRead(acceptData.getUid());
|
return JsonUtil.loadTrueResult("");
|
} catch (UserInfoExtraException e) {
|
e.printStackTrace();
|
return JsonUtil.loadFalseResult("设置出错");
|
}
|
}
|
|
|
@ResponseBody
|
@RequestMapping("getUserMsgList")
|
public String getUserMsgList(AcceptData acceptData, int page) {
|
List<UserMsg> msgList = userMsgService.getUserMsgList(acceptData.getUid(), page, Constant.PAGE_SIZE);
|
long count = userMsgService.countUserMsg(acceptData.getUid());
|
Gson gson = JsonUtil.getConvertDateToShortNameBuilder(new GsonBuilder().excludeFieldsWithoutExposeAnnotation()).create();
|
|
JSONObject data = new JSONObject();
|
data.put("data", gson.toJson(msgList));
|
data.put("count", count);
|
return JsonUtil.loadTrueResult(data);
|
}
|
|
|
}
|