From 423eec7744f7f346ffe090e6446bf59f7d2496ce Mon Sep 17 00:00:00 2001 From: gaojie Date: Thu, 21 Feb 2019 18:02:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=B7=E5=A4=96=E5=85=85=E5=80=BC=E5=8F=91?= =?UTF-8?q?=E8=B4=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jmfy/controller/GetOrderController.java | 15 +-- .../jmfy/controller/RechargeController.java | 94 ++++++++++--------- .../jmfy/controller/SendMailController.java | 14 ++- .../com/jmfy/controller/UserController.java | 28 +++--- src/main/java/com/jmfy/dto/CUserDao.java | 5 +- .../java/com/jmfy/dto/impl/CUserDaoImpl.java | 41 ++++++-- src/main/thrift/idl/core.thrift | 3 +- 7 files changed, 120 insertions(+), 80 deletions(-) diff --git a/src/main/java/com/jmfy/controller/GetOrderController.java b/src/main/java/com/jmfy/controller/GetOrderController.java index 40fddf9..51e356f 100644 --- a/src/main/java/com/jmfy/controller/GetOrderController.java +++ b/src/main/java/com/jmfy/controller/GetOrderController.java @@ -2,11 +2,6 @@ package com.jmfy.controller; import com.jmfy.dto.CPayOrder; import com.jmfy.dto.CUserDao; -import com.jmfy.dto.CUserInfo; -import com.jmfy.dto.ResultVo; -import com.jmfy.thrift.idl.RPCRequestIFace; -import com.jmfy.thrift.pool.ClientAdapterPo; -import com.jmfy.thrift.pool.ServiceKey; import com.jmfy.util.JsonUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -15,13 +10,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.net.URLDecoder; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; +import java.util.*; @RestController public class GetOrderController { @@ -33,7 +22,6 @@ public class GetOrderController { HashMap parameterMap = JsonUtil.getInstence().getParameterMap(request); String date = parameterMap.get("date"); String agoDate = JsonUtil.getSpecifiedDayBefore(date); - LOGGER.info("GetOrderController==>date={},agoDate={}",date,agoDate); List orderInfoBydate = cuserDao.getOrderInfoBydate(agoDate); StringBuilder result = new StringBuilder(); for (CPayOrder cPayOrder :orderInfoBydate){ @@ -81,6 +69,7 @@ public class GetOrderController { .append(cPayOrder.getCreditId()); } } + System.out.println(result.toString()); return result.toString(); } } diff --git a/src/main/java/com/jmfy/controller/RechargeController.java b/src/main/java/com/jmfy/controller/RechargeController.java index b67f35a..bc885af 100644 --- a/src/main/java/com/jmfy/controller/RechargeController.java +++ b/src/main/java/com/jmfy/controller/RechargeController.java @@ -6,10 +6,13 @@ 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 sun.security.provider.MD5; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @@ -22,7 +25,7 @@ public class RechargeController { @Resource private CUserDao cuserDao; private static final Logger LOGGER = LoggerFactory.getLogger(RechargeController.class); - @RequestMapping(value = "/recharge") + @RequestMapping(value = "/callback") public String deliveryGoods(HttpServletRequest request) throws Exception { HashMap parameterMap = JsonUtil.getInstence().getParameterMap(request); String pOrderId = parameterMap.get("pOrderId"); @@ -42,55 +45,60 @@ public class RechargeController { String remark = parameterMap.get("remark"); String productId = parameterMap.get("productId"); String payType = parameterMap.get("payType"); + String sig = MD5Util.encrypByMd5(pOrderId+serverCode+creditId+userId+amount+stone+time+YsjConstant.TW_GameKey); + if (sig.equals(sign)){ + FindPlayerResult findPlayerResult = new FindPlayerResult("1010","sign derify failed",null); + return JsonUtil.getInstence().getGson().toJson(findPlayerResult); + } CUserInfo cUserInfo = cuserDao.getUserInfobyNameAndServerId(userId, Integer.parseInt(serverCode)); - if (Integer.parseInt(userId) != cUserInfo.getUserId()){ + if (Integer.parseInt(creditId) != cUserInfo.getUserId()){ ResultVo resultVo = new ResultVo("1038", "该用户无此角色"); return JsonUtil.getInstence().getGson().toJson(resultVo); } String payitem = "1002#"+activityExtra + stone +"#1"; -// DateFormat dateTimeformat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); -// String date = dateTimeformat.format(new Date()); -// CPayOrder cPayOrder = new CPayOrder(); -// cPayOrder.setOrderId(pOrderId); -// cPayOrder.setDelivery_time(date); -// cPayOrder.setUserId(userId); -// cPayOrder.setCpOrderId(remark); -// cPayOrder.setCurrency(currency); -// cPayOrder.setAmount(amount); -// cPayOrder.setGameCurrency(stone); -// cPayOrder.setPayType(payType); -// cPayOrder.setCreditId(creditId); -// cuserDao.get - Result result = null; - String userAddress = cuserDao.findUserInfo(Integer.parseInt(serverCode), Integer.parseInt(userId)); - LOGGER.info("userAddress : " + userAddress); - if (userAddress != null) { - String[] split = userAddress.split(":"); - String ip = split[0]; - String port = split[1]; - LOGGER.info("RPC address --> IP : " + ip + "; PORT : " + port); - ClientAdapterPo rPCClient; - String serviceKey = JsonUtil.getServiceKey(ServiceKey.RPCCore, ip, port); - LOGGER.info("serviceKey : " + serviceKey); - try { - rPCClient = ClientAdapterPo.getClientAdapterPo(serviceKey); - result = rPCClient.getClient().sendReward(Integer.parseInt(userId), payitem,"","",0);//0 充值 1: 邮件奖励 - } catch (Exception e) { - e.printStackTrace(); - } - } - LOGGER.info("RPC result : ResultCode : "+ result.getResultCode()+"; ResultMsg : "+ result.getResultMsg()); + CPayOrder cPayOrder = cuserDao.getCpayOrderByOrderId(pOrderId); ResultVo resultVo; - if (result.getResultCode() != 0){ - resultVo = new ResultVo("0000", "发币成功"); - }else{ - resultVo = new ResultVo("1008", "发币失败"); + if (cPayOrder != null) { + resultVo = new ResultVo("0000", "send reward success !!!!"); + } else { + DateFormat dateTimeformat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); + String date = dateTimeformat.format(new Date()); + cPayOrder = new CPayOrder(); + cPayOrder.setOrderId(pOrderId); + cPayOrder.setDelivery_time(date); + cPayOrder.setUserId(userId); + cPayOrder.setCpOrderId(remark); + cPayOrder.setCurrency(currency); + cPayOrder.setAmount(amount); + cPayOrder.setGameCurrency(stone); + cPayOrder.setPayType(payType); + cPayOrder.setCreditId(creditId); + Result result = null; + String userAddress = cuserDao.findUserInfo(Integer.parseInt(serverCode), Integer.parseInt(creditId)); + LOGGER.info("userAddress : " + userAddress); + if (userAddress != null) { + String[] split = userAddress.split(":"); + String ip = split[0]; + String port = split[1]; + LOGGER.info("RPC address --> IP : " + ip + "; PORT : " + port); + ClientAdapterPo rPCClient; + String serviceKey = JsonUtil.getServiceKey(ServiceKey.RPCCore, ip, port); + LOGGER.info("serviceKey : " + serviceKey); + try { + rPCClient = ClientAdapterPo.getClientAdapterPo(serviceKey); + result = rPCClient.getClient().deliveryRecharge(Integer.parseInt(creditId), payitem,productId, Integer.parseInt(stone)); + } catch (Exception e) { + e.printStackTrace(); + } + } + LOGGER.info("RPC result : ResultCode : " + result.getResultCode() + "; ResultMsg : " + result.getResultMsg()); + if (result.getResultCode() == 0) { + cuserDao.addCpayOrder(cPayOrder); + resultVo = new ResultVo("0000", "send reward success !!!!"); + } else { + resultVo = new ResultVo("0010", "send reward fail !!!!"); + } } return JsonUtil.getInstence().getGson().toJson(resultVo); } - public static void main (String [] args){ - DateFormat dateTimeformat = new SimpleDateFormat("yyyy-MM-dd"); - String format = dateTimeformat.format(new Date()); - System.out.println(format); - } } diff --git a/src/main/java/com/jmfy/controller/SendMailController.java b/src/main/java/com/jmfy/controller/SendMailController.java index 9df67f2..67b5828 100644 --- a/src/main/java/com/jmfy/controller/SendMailController.java +++ b/src/main/java/com/jmfy/controller/SendMailController.java @@ -6,6 +6,8 @@ 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; @@ -36,10 +38,13 @@ public class SendMailController { String activityCode = parameterMap.get("activityCode"); String title = parameterMap.get("title"); String content = parameterMap.get("content"); - LOGGER.info("SendMailController=>userId={},roleId={},serialNo={},gameCode={},serverCode={},packageId={},activityCode={},title={},content={}", - userId,roleId, serialNo,gameCode,serverCode,packageId,activityCode,title,content); - //Md5(userId+roleId+serverCode+gameCode+serialNo+packageId+key)发奖key 由efun提供 String sign = parameterMap.get("sign"); + //验证sign + String sig = MD5Util.encrypByMd5(userId+roleId+serverCode+gameCode+serialNo+packageId+YsjConstant.TW_GameKey); + if (sig.equals(sign)){ + FindPlayerResult findPlayerResult = new FindPlayerResult("1010","sign derify failed",null); + return JsonUtil.getInstence().getGson().toJson(findPlayerResult); + } CUserInfo cUserInfo = cuserDao.getUserInfobyNameAndServerId(userId, Integer.parseInt(serverCode)); if (Integer.parseInt(roleId) != cUserInfo.getUserId()){ ResultVo resultVo = new ResultVo("1038", "该用户无此角色"); @@ -58,7 +63,8 @@ public class SendMailController { LOGGER.info("serviceKey : "+ serviceKey); try { rPCClient = ClientAdapterPo.getClientAdapterPo(serviceKey); - rPCClient.getClient().sendReward(cUserInfo.getUserId(), rewardItems,URLDecoder.decode(title, "UTF-8"),URLDecoder.decode(content, "UTF-8"),1);//0 充值 1: 邮件奖励 + rPCClient.getClient().sendMail(cUserInfo.getUserId(), rewardItems,URLDecoder.decode(title, "UTF-8"),URLDecoder.decode(content, "UTF-8"));//0 充值 1: 邮件奖励 + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/main/java/com/jmfy/controller/UserController.java b/src/main/java/com/jmfy/controller/UserController.java index be62c25..94ec055 100644 --- a/src/main/java/com/jmfy/controller/UserController.java +++ b/src/main/java/com/jmfy/controller/UserController.java @@ -2,6 +2,8 @@ package com.jmfy.controller; import com.jmfy.dto.*; 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; @@ -19,27 +21,29 @@ public class UserController { @Resource private CUserDao cuserDao; private static final Logger LOGGER = LoggerFactory.getLogger(UserController.class); - @RequestMapping(value = "/findUserInfo") + @RequestMapping(value = "/getRoles") public String deliveryGoods(HttpServletRequest request) throws Exception { HashMap parameterMap = JsonUtil.getInstence().getParameterMap(request); - String userName = parameterMap.get("userId"); - String serverId = parameterMap.get("serverCode"); + String userId = parameterMap.get("userId"); + String serverCode = parameterMap.get("serverCode"); String sign = parameterMap.get("sign"); - LOGGER.info("UserController=>userName={},serverId={},sign={}",userName,serverId,sign); - CUserInfo cUserInfo = cuserDao.getUserInfobyNameAndServerId(userName, Integer.parseInt(serverId)); - String result; + String sig = MD5Util.encrypByMd5(YsjConstant.TW_GameKey + userId + serverCode); + if (sig.equals(sign)){ + FindPlayerResult findPlayerResult = new FindPlayerResult("1010","sign derify failed",null); + return JsonUtil.getInstence().getGson().toJson(findPlayerResult); + } + CUserInfo cUserInfo = cuserDao.getUserInfobyNameAndServerId(userId, Integer.parseInt(serverCode)); if (null == cUserInfo){ - LOGGER.info("UserController=>userName={},serverId={},cUserInfo is null",userName,serverId); - FindPlayerResult findPlayerResult = new FindPlayerResult("1038","success",null); - result = JsonUtil.getInstence().getGson().toJson(findPlayerResult); + LOGGER.info("UserController=>userName={},serverId={},cUserInfo is null",userId,serverCode); + FindPlayerResult findPlayerResult = new FindPlayerResult("1038","no userInfo",null); + return JsonUtil.getInstence().getGson().toJson(findPlayerResult); }else { List playerInfos = new ArrayList<>(); CUser cUser = cuserDao.getCUser(cUserInfo.getUserId(), cUserInfo.getServerid()); - playerInfos.add(new PlayerInfo(cUser.getUserName(),cUser.getLevel(),String.valueOf(cUser.getId()),serverId)); + playerInfos.add(new PlayerInfo(cUser.getUserName(),cUser.getLevel(),String.valueOf(cUser.getId()),serverCode)); FindPlayerResult findPlayerResult = new FindPlayerResult("1000","success",playerInfos); - result = JsonUtil.getInstence().getGson().toJson(findPlayerResult); + return JsonUtil.getInstence().getGson().toJson(findPlayerResult); } - return result; } } diff --git a/src/main/java/com/jmfy/dto/CUserDao.java b/src/main/java/com/jmfy/dto/CUserDao.java index b36cd32..e89a5bd 100644 --- a/src/main/java/com/jmfy/dto/CUserDao.java +++ b/src/main/java/com/jmfy/dto/CUserDao.java @@ -8,8 +8,11 @@ public interface CUserDao { CUserInfo getUserInfobyNameAndServerId(String name,int serverId) throws Exception; - CUser getCUser(int userId, int serverid); + CUser getCUser(int userId, int serverid) throws Exception; List getOrderInfoBydate(String agoDate); + void addCpayOrder(CPayOrder cPayOrder); + + CPayOrder getCpayOrderByOrderId(String pOrderId); } diff --git a/src/main/java/com/jmfy/dto/impl/CUserDaoImpl.java b/src/main/java/com/jmfy/dto/impl/CUserDaoImpl.java index fcce240..448351f 100644 --- a/src/main/java/com/jmfy/dto/impl/CUserDaoImpl.java +++ b/src/main/java/com/jmfy/dto/impl/CUserDaoImpl.java @@ -12,7 +12,12 @@ import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.Map; @Component public class CUserDaoImpl implements CUserDao { @@ -39,15 +44,39 @@ public class CUserDaoImpl implements CUserDao { } @Override - public CUser getCUser(int userId, int serverid) { - CUser user = RedisUtil.getInstence().getObject(serverid+":CUser_Key", - Integer.toString(userId), CUser.class, 7 * 24 * 3600); - return user; + public CUser getCUser(int userId, int serverid) throws Exception { + CUser cUser = RedisUtil.getInstence().getObject(serverid + ":CUser_Key", Integer.toString(userId), CUser.class, 7 * 24 * 3600); + if (cUser == null) { + MongoTemplate mongoTemplete = connect.getMongoTemplete("ysj_" + serverid); + Query query = new Query(Criteria.where("_id").is(userId)); + cUser = mongoTemplete.findOne(query, CUser.class); + } + return cUser; + } + + + @Override + public void addCpayOrder(CPayOrder cPayOrder) { + DateFormat dateTimeformat = new SimpleDateFormat("yyyy-MM-dd"); + String date = dateTimeformat.format(new Date()); + //保存单独订单 + RedisUtil.getInstence().putObject("C_PAYORDER",cPayOrder.getOrderId(),cPayOrder,-1); + //保存每一天的订单 + RedisUtil.getInstence().putMapEntry("C_PAYORDER_MAP",date,cPayOrder.getCreditId(),cPayOrder,-1); + } + + @Override + public CPayOrder getCpayOrderByOrderId(String pOrderId) { + return RedisUtil.getInstence().getObject("C_PAYORDER",pOrderId,CPayOrder.class,-1); } @Override public List getOrderInfoBydate(String agoDate) { - - return null; + List orderInfoBydate = new ArrayList<>(); + Map map = RedisUtil.getInstence().getMap("C_PAYORDER_MAP:" + agoDate, CPayOrder.class, -1); + for (Map.Entry entry:map.entrySet()){ + orderInfoBydate.add(entry.getValue()); + } + return orderInfoBydate; } } diff --git a/src/main/thrift/idl/core.thrift b/src/main/thrift/idl/core.thrift index 5a781e7..8d804b0 100644 --- a/src/main/thrift/idl/core.thrift +++ b/src/main/thrift/idl/core.thrift @@ -16,5 +16,6 @@ service RPCRequestIFace{ Result testdeliveryGood(1:i32 userId, 2:string payitem) throws (1:common.InvalidOperException ouch); - Result sendReward(1:i32 userId, 2:string rewardItems,3:string title,4:string content,5:i32 type) throws (1:common.InvalidOperException ouch); + Result deliveryRecharge(1:i32 userId, 2:string rewardItems,3: string productId,4: i32 stone) throws (1:common.InvalidOperException ouch); + Result sendMail(1:i32 userId, 2:string rewardItems,3:string title,4:string content) throws (1:common.InvalidOperException ouch); } \ No newline at end of file