miduo_pay/src/main/java/com/jmfy/controller/SendMailController.java

117 lines
5.3 KiB
Java

package com.jmfy.controller;
import com.jmfy.dto.*;
import com.jmfy.thrift.idl.RPCRequestIFace;
import com.jmfy.thrift.idl.Result;
import com.jmfy.thrift.pool.ClientAdapterPo;
import com.jmfy.thrift.pool.ServiceKey;
import com.jmfy.util.JsonUtil;
import com.jmfy.util.MD5Util;
import com.jmfy.util.YsjConstant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.net.URLDecoder;
import java.util.HashMap;
@RestController
public class SendMailController {
@Resource
private CUserDao cuserDao;
private static final Logger LOGGER = LoggerFactory.getLogger(SendMailController.class);
@RequestMapping(value = "/efun_reward")
public String efun_reward(HttpServletRequest request) throws Exception {
HashMap<String, String> parameterMap = JsonUtil.getInstence().getParameterMap(request);
String userId = parameterMap.get("userId");
String roleId = parameterMap.get("roleId");
String serialNo = parameterMap.get("serialNo");
String gameCode = parameterMap.get("gameCode");
String serverCode = parameterMap.get("serverCode");
String packageId = parameterMap.get("packageId");
String activityCode = parameterMap.get("activityCode");
String title = parameterMap.get("title");
String content = parameterMap.get("content");
String sign = parameterMap.get("sign");
//验证sign
String sig = MD5Util.encrypByMd5(userId+roleId+serverCode+gameCode+serialNo+packageId+YsjConstant.TW_GameKey);
if (!sig.equals(sign)){
LOGGER.info("efun_reward==>userId={},sin derify fail ",userId);
ResultVo resultVo = new ResultVo("1010", "sign derify failed");
return JsonUtil.getInstence().getGson().toJson(resultVo);
}
boolean isExist =cuserDao.getMailSeriaNo(serialNo);
//发奖流水号 不能重复
if (isExist){
LOGGER.info("efun_reward==>userId={},serialNo is exist ",userId);
ResultVo resultVo = new ResultVo("1006", "serialNo is exist");
return JsonUtil.getInstence().getGson().toJson(resultVo);
}
String plat = "android";
if (gameCode.equals(YsjConstant.TW_IOS_GameCode)){
plat = "ios";
}
CUserInfo cUserInfo = cuserDao.getUserInfobyNameAndServerId(userId, Integer.parseInt(serverCode),plat);
if (Integer.parseInt(roleId) != cUserInfo.getUserId()){
ResultVo resultVo = new ResultVo("1038", "no userInfo");
return JsonUtil.getInstence().getGson().toJson(resultVo);
}
// String rewardItems = packageId.replaceAll(",","#").replaceAll(";","|");
String rewardItems = getNewRewardItem(packageId);
String userAddress = cuserDao.findUserInfo(Integer.parseInt(serverCode), cUserInfo.getUserId());
LOGGER.info("efun_reward ==> userAddress={},rewardItems={} ",userAddress,rewardItems);
Result result = null;
if (userAddress != null){
String[] split = userAddress.split(":");
String ip = split[0];
String port = split[1];
LOGGER.info("efun_reward ==>RPC address --> IP : "+ ip + "; PORT : "+ port);
ClientAdapterPo<RPCRequestIFace.Client> rPCClient = null;
String serviceKey = JsonUtil.getServiceKey(ServiceKey.RPCCore,ip,port);
LOGGER.info("serviceKey : "+ serviceKey);
try {
rPCClient = ClientAdapterPo.getClientAdapterPo(serviceKey);
result = rPCClient.getClient().sendMail(cUserInfo.getUserId(), rewardItems, URLDecoder.decode(title, "UTF-8"), URLDecoder.decode(content, "UTF-8"));
cuserDao.addMailSeriaNo(serialNo);
} catch (Exception e) {
e.printStackTrace();
}finally {
if (rPCClient != null){
rPCClient.returnObject(serviceKey);
}else{
LOGGER.info("callback=> rPCClient is null ");
}
}
}
ResultVo resultVo;
if (result!= null && result.getResultCode() == 0) {
resultVo = new ResultVo("1000", "send reward success !!!!");
} else {
resultVo = new ResultVo("1002", "send reward fail !!!!");
}
return JsonUtil.getInstence().getGson().toJson(resultVo);
}
private String getNewRewardItem(String packageId) {
StringBuilder rewardItems = new StringBuilder();
String[] split = packageId.split(";");
for (String string :split){
String[] split1 = string.split(",");
if (rewardItems.length() == 0){
rewardItems = new StringBuilder(split1[1] + "#" + split1[2] + "#" + split1[0]);
}else {
rewardItems.append("|").append(split1[1]).append("#").append(split1[2]).append("#").append(split1[0]);
}
}
return rewardItems.toString();
}
public static void main (String [] args){
String s = MD5Util.encrypByMd5("111112"+10005686+10074+"TWDK"+"skdfjskfdjslakdfjals"+"1,1001,100;1,1002,1000"+YsjConstant.TW_GameKey);
System.out.println(s);
}
}