package com.nmgs.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.nmgs.config.ResultData; import com.nmgs.service.impl.QCodeInfoServiceImpl; import com.nmgs.util.LogUtil; import com.nmgs.util.PubTools; import com.nmgs.util.WebsocketUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping(value="qcodeInfo") @Api(tags="核销二维码内容获取") public class QcodeInfoController { public QCodeInfoServiceImpl qCodeInfoServiceImpl; @Autowired public void setqCodeInfoServiceImpl(QCodeInfoServiceImpl qCodeInfoServiceImplT) { this.qCodeInfoServiceImpl = qCodeInfoServiceImplT; } @RequestMapping(value = "getQcodeInfoByUserId", method = {RequestMethod.POST} ) @ApiOperation(value="根据用户和积分类型获取二维码内容",httpMethod = "POST") public ResultData getQcodeInfoByUserId(@RequestParam("openId") String openId,@RequestParam("integrateType") String integrateType,@RequestParam("rebateIntegrate") String rebateIntegrate){ //String qcodeInfoByUserId = qCodeInfoServiceImpl.getQcodeInfoByUserId(openId, integrateType, rebateIntegrate); String qcodeInfoByUserId = qCodeInfoServiceImpl.getQcodeInfoByUserIdRedis(openId, integrateType, rebateIntegrate); if("-2".equals(qcodeInfoByUserId)){ return ResultData.success(2,"用户未找到"); }else if("-3".equals(qcodeInfoByUserId)){ return ResultData.success(3,"用户已被冻结"); }else if("5".equals(qcodeInfoByUserId)){ return ResultData.success(4,"缓存池出错了"); }else{ return ResultData.success("生成二维码成功",qcodeInfoByUserId,1); } } @RequestMapping(value = "solveQcode", method = {RequestMethod.POST} ) @ApiOperation(value="商超核销",httpMethod = "POST") public ResultData solveQcode(@RequestParam("content") String content, @RequestParam("serverOperationId") String serverOperationId, @RequestParam("orderId") String orderId, @RequestParam(value = "payMoney",required = false) String payMoney, @RequestParam(value = "discountMoneyBefore",required = false) String discountMoneyBefore, @RequestParam(value = "discountMoney",required = false) String discountMoney) throws Exception { if(PubTools.isNull(payMoney)){ payMoney="0"; } if(PubTools.isNull(discountMoneyBefore)){ discountMoneyBefore="0"; } if(PubTools.isNull(discountMoney)){ discountMoney="0"; } LogUtil.WriteLog_Info("积分核减操作开始====="+PubTools.getCurrentDate(),"QcodeInfoController"); //JSONObject retStrJSON = qCodeInfoServiceImpl.solveQcode(content, serverOperationId,orderId, Double.parseDouble(payMoney), Double.parseDouble(discountMoneyBefore), Double.parseDouble(discountMoney)); JSONObject retStrJSON = qCodeInfoServiceImpl.solveQcodeRedis(content, serverOperationId, orderId, Double.parseDouble(payMoney), Double.parseDouble(discountMoneyBefore), Double.parseDouble(discountMoney)); String retStr= retStrJSON.get("ret").toString(); String openId= PubTools.isEmpty(retStrJSON.get("openId"))?"":retStrJSON.get("openId").toString(); LogUtil.WriteLog_Info("积分核销结果==="+PubTools.getCurrentDate()+"==="+retStrJSON.toString(),"QcodeInfoController"); JSONArray ja=new JSONArray(); ja.add(retStrJSON); if("1".equals(retStr)){ JSONObject retJo=new JSONObject(); retJo.put("code",1); retJo.put("msg","核销成功"); retJo.put("data",""); WebsocketUtil.sendMessage(openId,JSONObject.toJSONString(retJo)); WebsocketUtil.removeSession(openId); return ResultData.success("核销成功",ja.toString(),1); }else if("2".equals(retStr)){ JSONObject retJo=new JSONObject(); retJo.put("code",2); retJo.put("msg","用户不存在"); retJo.put("data",""); WebsocketUtil.sendMessage(openId,JSONObject.toJSONString(retJo)); WebsocketUtil.removeSession(openId); return ResultData.success(2,"用户不存在"); }else if("3".equals(retStr)){ JSONObject retJo=new JSONObject(); retJo.put("code",3); retJo.put("msg","用户可用积分不足"); retJo.put("data",ja.toString()); WebsocketUtil.sendMessage(openId,JSONObject.toJSONString(retJo)); WebsocketUtil.removeSession(openId); return ResultData.fail(3,"用户可用积分不足",ja.toString()); }else if("4".equals(retStr)){ JSONObject retJo=new JSONObject(); retJo.put("code",4); retJo.put("msg","二维码已过期"); retJo.put("data",""); WebsocketUtil.sendMessage(openId,JSONObject.toJSONString(retJo)); WebsocketUtil.removeSession(openId); return ResultData.success(4,"二维码已过期"); }else if("5".equals(retStr)){ JSONObject retJo=new JSONObject(); retJo.put("code",5); retJo.put("msg","积分核减失败"); retJo.put("data",""); WebsocketUtil.sendMessage(openId,JSONObject.toJSONString(retJo)); WebsocketUtil.removeSession(openId); return ResultData.success(5,"商户未注册"); }else if("6".equals(retStr)){ JSONObject retJo=new JSONObject(); retJo.put("code",6); retJo.put("msg","积分类型与消费方式不匹配"); retJo.put("data",""); WebsocketUtil.sendMessage(openId,JSONObject.toJSONString(retJo)); WebsocketUtil.removeSession(openId); return ResultData.success(6,"积分类型与消费方式不匹配"); }else if("7".equals(retStr)){ JSONObject retJo=new JSONObject(); retJo.put("code",7); retJo.put("msg","积分核减失败"); retJo.put("data",""); WebsocketUtil.sendMessage(openId,JSONObject.toJSONString(retJo)); WebsocketUtil.removeSession(openId); return ResultData.success(7,"商户角色未设置"); }else if("8".equals(retStr)){ JSONObject retJo=new JSONObject(); retJo.put("code",8); retJo.put("msg","用户已被冻结"); retJo.put("data",""); WebsocketUtil.sendMessage(openId,JSONObject.toJSONString(retJo)); WebsocketUtil.removeSession(openId); return ResultData.success(8,"用户已被冻结"); }else if("9".equals(retStr)){ JSONObject retJo=new JSONObject(); retJo.put("code",9); retJo.put("msg","折扣金额与消费积分不一致"); retJo.put("data",""); WebsocketUtil.sendMessage(openId,JSONObject.toJSONString(retJo)); WebsocketUtil.removeSession(openId); return ResultData.success(9,"折扣金额与消费积分不一致"); }else if("10".equals(retStr)){ JSONObject retJo=new JSONObject(); retJo.put("code",10); retJo.put("msg","请重新生成二维码"); retJo.put("data",""); WebsocketUtil.sendMessage(openId,JSONObject.toJSONString(retJo)); WebsocketUtil.removeSession(openId); return ResultData.success(10,"请重新生成二维码"); }else if("11".equals(retStr)){ JSONObject retJo=new JSONObject(); retJo.put("code",11); retJo.put("msg","核销的商户与订单中商户信息不匹配"); retJo.put("data",""); WebsocketUtil.sendMessage(openId,JSONObject.toJSONString(retJo)); WebsocketUtil.removeSession(openId); return ResultData.success(11,"核销的商户与订单中商户信息不匹配"); }else if("12".equals(retStr)){ JSONObject retJo=new JSONObject(); retJo.put("code",12); retJo.put("msg","数据已经核销"); retJo.put("data",""); WebsocketUtil.sendMessage(openId,JSONObject.toJSONString(retJo)); WebsocketUtil.removeSession(openId); return ResultData.success(12,"数据已经核销"); }else if("-1".equals(retStr)){ return ResultData.fail("接口出错了"); } return ResultData.success(1,"核销成功"); } @RequestMapping(value = "rollbackMoney", method = {RequestMethod.POST} ) @ApiOperation(value="商超退款(取消交易)接口",httpMethod = "POST") public ResultData rollbackMoney(@RequestParam("content") String content, @RequestParam("serverOperationId") String serverOperationId, @RequestParam("orderId") String orderId) throws Exception { int retStr = qCodeInfoServiceImpl.rollBackIntegral(content, serverOperationId, orderId); LogUtil.WriteLog_Info("积分退款结果======"+retStr,"QcodeInfoController"); if(retStr==1){ return ResultData.success(1,"数据处理成功"); }else if(retStr==2){ return ResultData.success(2,"订单不存在"); }else if(retStr==3){ return ResultData.success(3,"订单已经退回了"); }else if(retStr==4){ return ResultData.success(4,"用户不存在"); }else if(retStr==5){ return ResultData.success(5,"用户已被冻结"); }else { return ResultData.fail("接口出错了"); } } @RequestMapping(value = "failBackMoney", method = {RequestMethod.POST} ) @ApiOperation(value="商超红冲接口",httpMethod = "POST") public ResultData failBackMoney(@RequestParam("content") String content, @RequestParam("serverOperationId") String serverOperationId, @RequestParam("orderId") String orderId) throws Exception { int retStr = qCodeInfoServiceImpl.failBackMoney(content, serverOperationId, orderId); LogUtil.WriteLog_Info("积分红冲结果======"+retStr,"QcodeInfoController"); if(retStr==1){ return ResultData.success(1,"数据处理成功"); }else if(retStr==2){ return ResultData.success(2,"订单不存在"); }else if(retStr==3){ return ResultData.success(3,"订单已经退回了"); }else if(retStr==4){ return ResultData.success(4,"用户不存在"); }else if(retStr==5){ return ResultData.success(5,"用户已被冻结"); }else { return ResultData.fail("接口出错了"); } } @RequestMapping(value = "getStatusByOrderId", method = {RequestMethod.POST} ) @ApiOperation(value="查询积分核减(退款信息)结果",httpMethod = "POST") public ResultData getStatusByOrderId(@RequestParam("orderId") String orderId, @RequestParam("checkType") String checkType){ String retStr = qCodeInfoServiceImpl.getStatusByOrderId(orderId, checkType); if(!"-1".equals(retStr)){ JSONArray ja=new JSONArray(); JSONObject jo=new JSONObject(); if("0".equals(retStr)){ return ResultData.success(0,"未知错误,请联系相关人员进行核验"); }else if("2".equals(retStr)){ return ResultData.success(2,"根据订单id未找到积分消费记录"); }else{ jo.put("STATUS","SUCCESS"); ja.add(jo); return ResultData.success("查询成功",ja,ja.size()); } }else { return ResultData.fail("接口出错了"); } } @RequestMapping(value = "getIntegralListByServiceId", method = {RequestMethod.POST} ) @ApiOperation(value="根据商户ID查询积分明细",httpMethod = "POST") public ResultData getIntegralListByServiceId(@RequestParam("serverOperationId") String serverOperationId, @RequestParam(value = "checkType",required = false) String checkType, @RequestParam(value = "payBeginTime",required = false) String payBeginTime, @RequestParam(value = "payEndTime",required = false) String payEndTime){ List retStr = qCodeInfoServiceImpl.getIntegralListByServiceId(serverOperationId, checkType,payBeginTime,payEndTime); if(retStr !=null){ return ResultData.success("查询成功",retStr,retStr.size()); }else { return ResultData.fail("接口出错了"); } } @RequestMapping(value = "getIntegralTotalByServiceId", method = {RequestMethod.POST} ) @ApiOperation(value="根据商户ID查询总消费积分",httpMethod = "POST") public ResultData getIntegralTotalByServiceId(@RequestParam("serverOperationId") String serverOperationId){ List retStr = qCodeInfoServiceImpl.getIntegralTotalByServiceId(serverOperationId); if(retStr !=null){ return ResultData.success("查询成功",retStr,retStr.size()); }else { return ResultData.fail("接口出错了"); } } @RequestMapping(value = "removeContent", method = {RequestMethod.POST} ) @ApiOperation(value="用户没有进行核销,关闭二维码",httpMethod = "POST") public ResultData removeContent(@RequestParam("content") String content){ String retStr = qCodeInfoServiceImpl.removeContent(content); return ResultData.success(1,"取消成功"); } }