diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxCUserCarsController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarController.java similarity index 64% rename from mallinkBApi/src/main/java/com/simple/controller/WxCUserCarsController.java rename to mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarController.java index 8b9374f21..8fab19e5e 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxCUserCarsController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarController.java @@ -9,45 +9,45 @@ import com.github.pagehelper.PageInfo; import com.simple.common.Result; import com.simple.common.ResultData; -import com.simple.domain.po.WxCUserCars; -import com.simple.service.WxCUserCarsService; +import com.simple.domain.po.WxCUserCar; +import com.simple.service.WxCUserCarService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @RestController -@RequestMapping("wxCUserCars") -public class WxCUserCarsController extends BaseController +@RequestMapping("wxCUserCar") +public class WxCUserCarController extends BaseController { @Autowired - private WxCUserCarsService wxCUserCarsService; + private WxCUserCarService wxCUserCarService; - private Logger logger = Logger.getLogger(WxCUserCarsController.class); + private Logger logger = Logger.getLogger(WxCUserCarController.class); @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) - public ResultData list(@ModelAttribute WxCUserCars wxCUserCars,Integer pageNum, Integer pageSize) { - if (null == wxCUserCars) wxCUserCars = new WxCUserCars(); - final PageInfo page = wxCUserCarsService.listAsPage(wxCUserCars, pageNum, pageSize); + public ResultData list(@ModelAttribute WxCUserCar wxCUserCar,Integer pageNum, Integer pageSize) { + if (null == wxCUserCar) wxCUserCar = new WxCUserCar(); + final PageInfo page = wxCUserCarService.listAsPage(wxCUserCar, pageNum, pageSize); return new ResultData(page); } @ApiOperation("新增接口") @PostMapping("add") - public ResultData add(@RequestBody WxCUserCars wxCUserCars) { - //Assert.notNull(wxCUserCars.getName(), "角色名不能为空"); + public ResultData add(@RequestBody WxCUserCar wxCUserCar) { + //Assert.notNull(wxCUserCar.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); - wxCUserCarsService.saveOrUpdate(wxCUserCars); + wxCUserCarService.saveOrUpdate(wxCUserCar); return new ResultData(); } @ApiOperation("根据id更新接口") @PostMapping("update") - public ResultData update(@RequestBody WxCUserCars wxCUserCars) { - wxCUserCarsService.saveOrUpdate(wxCUserCars); + public ResultData update(@RequestBody WxCUserCar wxCUserCar) { + wxCUserCarService.saveOrUpdate(wxCUserCar); return new ResultData(); } @@ -55,7 +55,7 @@ public class WxCUserCarsController extends BaseController @GetMapping("/del") @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) public ResultData delete(Long id) { - wxCUserCarsService.deleteById(id); + wxCUserCarService.deleteById(id); return new ResultData(Result.SUCCESS, "删除成功", null); } @@ -63,7 +63,7 @@ public class WxCUserCarsController extends BaseController @GetMapping("/findById") @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) public ResultData findById(Long id) { - return new ResultData(Result.SUCCESS,"查询成功",wxCUserCarsService.getById(id)); + return new ResultData(Result.SUCCESS,"查询成功",wxCUserCarService.getById(id)); } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCarCmdLogsController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCarCmdLogController.java similarity index 66% rename from mallinkAdmin/src/main/java/com/simple/controller/WxCarCmdLogsController.java rename to mallinkAdmin/src/main/java/com/simple/controller/WxCarCmdLogController.java index 3eb4a4141..71a6f542e 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCarCmdLogsController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCarCmdLogController.java @@ -2,52 +2,51 @@ package com.simple.controller; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.Assert; import org.springframework.web.bind.annotation.*; import com.github.pagehelper.PageInfo; import com.simple.common.Result; import com.simple.common.ResultData; -import com.simple.domain.po.WxCarCmdLogs; -import com.simple.service.WxCarCmdLogsService; +import com.simple.domain.po.WxCarCmdLog; +import com.simple.service.WxCarCmdLogService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @RestController @RequestMapping("wxCarCmdLogs") -public class WxCarCmdLogsController extends BaseController +public class WxCarCmdLogController extends BaseController { - @Autowired - private WxCarCmdLogsService wxCarCmdLogsService; + private Logger logger = Logger.getLogger(WxCarCmdLogController.class); - private Logger logger = Logger.getLogger(WxCarCmdLogsController.class); + @Autowired + private WxCarCmdLogService wxCarCmdLogService; @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) - public ResultData list(@ModelAttribute WxCarCmdLogs wxCarCmdLogs,Integer pageNum, Integer pageSize) { - if (null == wxCarCmdLogs) wxCarCmdLogs = new WxCarCmdLogs(); - final PageInfo page = wxCarCmdLogsService.listAsPage(wxCarCmdLogs, pageNum, pageSize); + public ResultData list(@ModelAttribute WxCarCmdLog wxCarCmdLogs,Integer pageNum, Integer pageSize) { + if (null == wxCarCmdLogs) wxCarCmdLogs = new WxCarCmdLog(); + final PageInfo page = wxCarCmdLogService.listAsPage(wxCarCmdLogs, pageNum, pageSize); return new ResultData(page); } @ApiOperation("新增接口") @PostMapping("add") - public ResultData add(@RequestBody WxCarCmdLogs wxCarCmdLogs) { + public ResultData add(@RequestBody WxCarCmdLog wxCarCmdLog) { //Assert.notNull(wxCarCmdLogs.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); - wxCarCmdLogsService.saveOrUpdate(wxCarCmdLogs); + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); return new ResultData(); } @ApiOperation("根据id更新接口") @PostMapping("update") - public ResultData update(@RequestBody WxCarCmdLogs wxCarCmdLogs) { - wxCarCmdLogsService.saveOrUpdate(wxCarCmdLogs); + public ResultData update(@RequestBody WxCarCmdLog wxCarCmdLog) { + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); return new ResultData(); } @@ -55,7 +54,7 @@ public class WxCarCmdLogsController extends BaseController @GetMapping("/del") @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) public ResultData delete(Long id) { - wxCarCmdLogsService.deleteById(id); + wxCarCmdLogService.deleteById(id); return new ResultData(Result.SUCCESS, "删除成功", null); } @@ -63,7 +62,7 @@ public class WxCarCmdLogsController extends BaseController @GetMapping("/findById") @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) public ResultData findById(Long id) { - return new ResultData(Result.SUCCESS,"查询成功",wxCarCmdLogsService.getById(id)); + return new ResultData(Result.SUCCESS,"查询成功",wxCarCmdLogService.getById(id)); } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java new file mode 100644 index 000000000..affa5ca99 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java @@ -0,0 +1,439 @@ +package com.simple.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.simple.common.ErrorCode; +import com.simple.common.Result; +import com.simple.common.ResultData; +import com.simple.domain.po.*; +import com.simple.enums.EnumCarCmd; +import com.simple.enums.EnumCarVendor; +import com.simple.service.WxCUserCarService; +import com.simple.service.WxCarCmdLogService; +import com.simple.service.WxMerchantService; +import com.simple.service.WxParkService; +import com.simple.utils.ETCPUtil; +import com.simple.utils.TJDCarUtil; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/car") +public class WxCarController extends BaseController +{ + private Logger logger = Logger.getLogger(WxCarController.class); + + ETCPUtil etcp = new ETCPUtil(); + + TJDCarUtil tjd = new TJDCarUtil(); + + @Autowired + WxParkService wxParkService; + + @Autowired + WxCUserCarService wxCUserCarService; + + @Autowired + WxMerchantService wxMerchantService; + + @Autowired + WxCarCmdLogService wxCarCmdLogService; + + private WxPark getCurrentPark(MallUserInfo user) { + WxPark parkQ = new WxPark(); + parkQ.setTenantId(user.getTenantId()); + WxPark wxPark = wxParkService.getByObj(parkQ); + // 1, get mall's park + // future use redis to optimize + return wxPark; + } + + @ApiOperation(value = "获取车场支持的厂家",notes="{}") + @GetMapping("/getVendor") + public ResultData getVendor() { + MallUserInfo user = getUser(); + // 1, get mall's park + WxPark park = getCurrentPark(user); + Map map = new HashMap(); + map.put("vendor", park.getVendorType()); + return new ResultData(map); + } + + // 优免券模板 + /* + { + "id": 4974, //优免券模板 ID + "parkId": "fbqXUlfVvfc=", //车场标识 + "businessId": "ZcWQ26TeJuQ=", //商家标识 + title -- "businessName": "天洋广场", //商家名称 + subtitle -- "name": "商家 1 小时优免券", //优免券名称 + "category": "1", //优免券类型 1:小时优惠券,2:金额优惠券,3:折扣优惠券,4:免费券 + price -- "categoryValue": "1.00", //优免券价值 + total -- "amount": 100000, //优免券数量 + valid_start_date -- "effectiveStart": "2018-02-01", //生效开始时间 + valid_end_date -- "effectiveEnd": "2028-02-01",//生效结束时间 + -"couponType": "0",//优惠券类型 + number 库存 -- "avaliavleNum": 99993 //可用优惠券 + }, + */ + @ApiOperation(value = "优免券模板", notes = "{\"merchantId\":\"商户ID\"}\n输出\n" + + "{\n" + + "\"data\":{" + + "\"count\": 4," + + "\"couponPlatformModels\": [\n" + + " {\n" + + " \"id\": 4974, //优免券模板 ID\n" + + " \"parkId\": \"fbqXUlfVvfc=\", //车场标识" + + " \"businessId\": \"ZcWQ26TeJuQ=\", //商家标识" + + " \"businessName\": \"天洋广场\", //商家名称" + + " \"name\": \"商家 1 小时优免券\", //优免券名称" + + " \"category\": \"1\", //优免券类型\n 1:小时优惠券,2:金额优惠券,3:折扣优惠券,4:免费券" + + " \"categoryValue\": \"1.00\", //优免券价值\n" + + " \"amount\": 100000, //优免券数量\n" + + " \"effectiveStart\": \"2018-02-01\", //生效开始时间\n" + + " \"effectiveEnd\": \"2028-02-01\",//生效结束时间\n" + + " \"couponType\": \"0\",//优惠券类型\n" + + " \"avaliavleNum\": 99993 //可用优惠券\n" + + " },\n" + + " {...},\n" + + " {...}\n" + + " ]}}\n") + @PostMapping("/quanTemplate") + public ResultData quanTemplate(Map paramMap) { + logger.info("quanTemplate: " + paramMap.toString()); + MallUserInfo user = getUser(); + /// 1, get mall's park + WxPark park = getCurrentPark(user); + if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { + String merchantIdStr = paramMap.get("merchantId"); + if (StringUtils.isBlank(merchantIdStr)) { + // 优先从从商户表里取 + logger.error("quanTemplate failed, merchantId为空"); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "merchantId为空"); + } + String params = park.getVendorParams(); + JSONObject objParams = JSON.parseObject(params); + String url = objParams.getString("url"); + String merchantNo = objParams.getString("merchantNo"); + String merchantKey = objParams.getString("merchantKey"); + String version = objParams.getString("version"); + String parkId = park.getParkId(); + // bussinessId from 参数信息 + String businessId = ""; + // 优先从从商户表里取 + businessId = getETCPBusinessID(merchantIdStr); + if (StringUtils.isBlank(businessId)) { + // 1期只有一个虚拟商户,可以写在商场配置里 + businessId = objParams.getString("businessId"); + } + String ret = etcp.getBCouponList(url, merchantNo, merchantKey, version, parkId, businessId); + JSONObject retObj = JSON.parseObject(ret); + if (retObj.getIntValue("code") == 0) { + return new ResultData(retObj.getJSONObject("data")); + } else { + logger.error("quanTemplate failed, 优免券模板未发现"); + return new ResultData(ErrorCode.ETCP_QUAN_TEMP_FAIL.getCode(), "优免券模板未发现"); + } + } + return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "优免券模板失败"); + } + + private String getETCPBusinessID(String merchantIdStr) { + String businessId; + Long merchantId = 0L; + try { + merchantId = Long.valueOf(merchantIdStr); + } catch (NumberFormatException e) { + logger.error(e.getMessage()); + } + WxMerchant wxMerchant = wxMerchantService.getById(merchantId); + String carParams = wxMerchant.getCarParams(); + JSONObject objParams1 = JSON.parseObject(carParams); + businessId = objParams1.getString("businessId"); + return businessId; + } + + /** + * ETCP 车辆入场通知 + * { + * "synId": "4ebd80ff-cfcf-462a-94cb-727e9fa9547c", + * "plateNumber": "渝 ATX061", + * "parkName": "ETCP 智慧停车场", + * "parkId": "1", + * "entranceTime": "2017-08-20 12:59:54", + * "userType": "76", + * "pushTime": "2017-08-20 12:59:57", + * "fixParkingId": "U7", + * "remainingDays": "11" + * } + */ + @RequestMapping(value = "/etcpParkInCallback") + public Result etcpParkInCallback(@RequestBody Map paramMap) { + logger.info("etcpParkInCallback: " + paramMap.toString()); + String etcpParkId = paramMap.get("parkId"); + WxPark parkQ = new WxPark(); + parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + parkQ.setParkId(etcpParkId); + WxPark park = wxParkService.getByObj(parkQ); + if (park == null) { + logger.error("etcpParkInCallback: ETCP车场未找到"+ etcpParkId); + return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId); + } + + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + wxCarCmdLog.setTenantId(park.getTenantId()); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + try { + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); + } catch (Exception e) { + logger.error("etcpParkInCallback: 入库错误 "+ paramMap.toString()); + return new Result(ErrorCode.DB_FAIL.getCode(), "入库错误"+paramMap.toString()); + } + + // TODO 发起 营销 -- 短信 + return new Result(0, "ok"); + } + + /** + * ETCP 车辆出场通知 + * { + * "synId": "fd92f645-880e-4c2a-9d7d-7081a2488181", + * "plateNumber": "渝 ATX061", + * "parkName": "ETCP 智慧停车场", + * "parkId": "1", + * "entranceTime": "2017-08-17 18:44:19", + * "userType": "76", + * "pushTime": "2017-08-20 11:57:51", + * "exitTime": "2017-08-19 12:07:19", + * "stayedTime": 148980, + * "receivableFee": 0, + * "paidServiceFee": 0, + * "fixParkingId": "U7", + * "remainingDays": "12" + * } + */ + @RequestMapping(value = "/etcpParkOutCallback") + public Result etcpParkOutCallback(@RequestParam Map paramMap) { + logger.info("etcpParkOutCallback: " + paramMap.toString()); + String etcpParkId = paramMap.get("parkId"); + WxPark parkQ = new WxPark(); + parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + parkQ.setParkId(etcpParkId); + WxPark park = wxParkService.getByObj(parkQ); + if (park == null) { + logger.error("etcpParkInCallback: ETCP车场未找到 "+ etcpParkId); + return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId); + } + + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + wxCarCmdLog.setTenantId(park.getTenantId()); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + try { + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); + } catch (Exception e) { + logger.error("etcpParkInCallback: 入库错误 "+ paramMap.toString()); + return new Result(ErrorCode.DB_FAIL.getCode(), "入库错误"+paramMap.toString()); + } + + // TODO 发起 营销 -- 短信 + return new Result(0, "ok"); + } + + /** + * ETCP 车辆解绑通知 + * { + * "plateNumber": "渝 ATX061", + * "time": "2017-08-20 11:57:51" + * } + */ + @RequestMapping(value = "/etcpUnbindCarCallBack") + public Result etcpUnbindCarCallBack(@RequestParam Map paramMap) { + logger.info("etcpUnbindCarCallBack: " + paramMap.toString()); + String carNumber = paramMap.get("plateNumber"); + + // TODO how to get the parkId + + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_UNBIND.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + try { + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); + } catch (Exception e) { + logger.error("etcpParkInCallback: 入库错误 "+ paramMap.toString()); + return new Result(ErrorCode.DB_FAIL.getCode(), "入库错误"+paramMap.toString()); + } + + WxCUserCar userCarQ = new WxCUserCar(); + userCarQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + userCarQ.setCarNumber(carNumber); + // 数据库里删除,保持同步 + try { + wxCUserCarService.deleteByObj(userCarQ); + } catch (Exception e) { + logger.error(e.getMessage()); + } + // 营销 - 短信 + return new Result(0, "ok"); + } + + /** + * ETCP 主动支付结果通知 + * { + * "plateNumber": "渝 ATX061", + * "orderId": "fd92f645-880e-4c2a-9d7d-7081a2488181", + * "fee": 7.65, + * "paidServiceFee": 0.07, + * "coupon": 0, + * "time": "2017-08-20 11:57:51" + * } + */ + @RequestMapping(value = "/etcpPaidCallback") + public Result etcpPaidCallback(@RequestParam Map paramMap) { + logger.info("etcpPaidCallback: " + paramMap.toString()); + String carNumber = paramMap.get("plateNumber"); + + // TODO how to get the parkId + + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PAY_MANUAL.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + try { + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); + } catch (Exception e) { + logger.error("etcpParkInCallback: 入库错误 "+ paramMap.toString()); + return new Result(ErrorCode.DB_FAIL.getCode(), "入库错误"+paramMap.toString()); + } + + // 营销 - 短信 + return new Result(0, "ok"); + } + + + /** + * TJD 车辆入场通知 + * { + * "tradeId": "5836b8b52ada463ebc6199579f029565", + * "outCarId": "45454545454", + * "carNum": "京A45413", + * "carNumColor ": "blue", + * "inDt": "20170319202020", + * "parkName": "测试停车场", + * "parkId": "5836b8b52ada463ebc6199579f029561", + * "lon": "74.000272", + * "lat": "159.768703", + * "wLon": "123.523032", + * "wLat": "35.430735", + * "payUrl": "http://prep.tingjiandan.com/tcweixin/letter/prePay/payInPark.html?prePayType=16&channel=10001", + * "canFindCar": "0" + * } + */ + @RequestMapping(value = "/tjdParkInCallback") + public Map tjdParkInCallback(@RequestParam Map paramMap) { + logger.info("tjdParkInCallback: " + paramMap.toString()); + Map map = new HashMap(); + + + String tjdParkId = paramMap.get("parkId"); + + WxPark parkQ = new WxPark(); + parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + parkQ.setParkId(tjdParkId); + WxPark park = wxParkService.getByObj(parkQ); + if (park == null) { + logger.error("tjdParkInCallback: 停简单车场未找到"+ tjdParkId); + map.put("isSuccess", "0"); + map.put("errorMsg", "停简单车场未找到"+ tjdParkId); + return map; + } + + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + wxCarCmdLog.setTenantId(park.getTenantId()); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + try { + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); + } catch (Exception e) { + logger.error("tjdParkInCallback: 入库错误"+ paramMap.toString()); + map.put("isSuccess", "0"); + map.put("errorMsg", "入库错误"+ paramMap.toString()); + return map; + } + + map.put("isSuccess", "0"); + map.put("errorMsg", ""); + return map; + } + + /** + * TJD 车辆出场通知 + * { + * "tradeId": "5836b8b52ada463ebc6199579f029565", + * "outDt": "20170319232020", + * "lon": "74.000272", + * "lat": "159.768703", + * "wLon": "123.523032", + * "wLat": "35.430735", + * "parkAmount": "5.20" + * } + */ + @RequestMapping(value = "/tjdParkoutCallback") + public Map tjdParkOutCallback(@RequestParam Map paramMap) { + logger.info("tjdParkoutCallback: " + paramMap.toString()); + Map map = new HashMap(); + + + String tradeId = paramMap.get("tradeId"); + + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + try { + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); + } catch (Exception e) { + logger.error("tjdParkoutCallback: 入库错误"+ paramMap.toString()); + map.put("isSuccess", "0"); + map.put("errorMsg", "入库错误"+ paramMap.toString()); + return map; + } + + map.put("isSuccess", "0"); + map.put("errorMsg", ""); + return map; + } + +} diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponChannelController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCouponChannelController.java index c02ab3fe0..aca90be61 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponChannelController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCouponChannelController.java @@ -17,8 +17,7 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import java.util.ArrayList; -import java.util.List; + @RestController @RequestMapping("wxCouponChannel") @@ -81,7 +80,6 @@ public class WxCouponChannelController extends BaseController public ResultData findById(@RequestBody WxCouponChannelDto wxCouponChannelDto) { String[] ids = wxCouponChannelDto.getCouponIds().split(","); String[] channelId = wxCouponChannelDto.getChannelId().split(","); - List list = new ArrayList<>(); MallUserInfo user = getUser(); wxCouponChannelService.addBatch(ids,channelId,user.getTenantId()); return new ResultData(); diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCouponController.java index e3813a4b7..fb4d73720 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCouponController.java @@ -117,7 +117,22 @@ public class WxCouponController extends BaseController dto.setWxMerchant(merchant); return new ResultData(Result.SUCCESS,"查询成功",dto); } - + + + @ApiOperation("分页列表接口") + @GetMapping("send/list") + @ApiImplicitParams({ + @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), + @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) + public ResultData sendList(@ModelAttribute WxCoupon wxCoupon,Integer pageNum, Integer pageSize) { + if (null == wxCoupon) wxCoupon = new WxCoupon(); + wxCoupon.setTenantId(getTenantId()); + wxCoupon.setStatus(1); + PageInfo page = null; + page = wxCouponService.findCanSendList(wxCoupon, pageNum, pageSize); + + return new ResultData(page); + } } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponOrderController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCouponOrderController.java index b834d8612..2b3656de5 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponOrderController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCouponOrderController.java @@ -64,14 +64,4 @@ public class WxCouponOrderController extends BaseController public ResultData findById(Long id) { return new ResultData(Result.SUCCESS,"查询成功",wxCouponOrderService.getById(id)); } - - @ApiOperation("核销接口") - @PostMapping("verify") - public ResultData verify(@RequestBody WxCouponOrder wxCouponOrder) { - wxCouponOrderService.verify(wxCouponOrder.getId(),getUser()); - return new ResultData(); - } - - - } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java index b43a78ab1..413bc9ecf 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java @@ -1,5 +1,7 @@ package com.simple.controller; +import com.simple.domain.po.WxCoupon; +import com.simple.service.WxCouponService; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.Assert; @@ -15,12 +17,17 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import java.util.Date; +import java.util.List; + @RestController @RequestMapping("wxCouponSend") public class WxCouponSendController extends BaseController { @Autowired private WxCouponSendService wxCouponSendService; + @Autowired + private WxCouponService wxCouponService; private Logger logger = Logger.getLogger(WxCouponSendController.class); @@ -31,6 +38,7 @@ public class WxCouponSendController extends BaseController @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) public ResultData list(@ModelAttribute WxCouponSend wxCouponSend,Integer pageNum, Integer pageSize) { if (null == wxCouponSend) wxCouponSend = new WxCouponSend(); + wxCouponSend.setTenantId(getTenantId()); final PageInfo page = wxCouponSendService.listAsPage(wxCouponSend, pageNum, pageSize); return new ResultData(page); } @@ -38,6 +46,21 @@ public class WxCouponSendController extends BaseController @ApiOperation("新增接口") @PostMapping("add") public ResultData add(@RequestBody WxCouponSend wxCouponSend) { + List wxCouponSendList = wxCouponSendService.listAsPage(wxCouponSend,1,1).getList(); + if(wxCouponSendList!=null&&!wxCouponSendList.isEmpty()){ + return new ResultData(Result.ERROR,"已经添加过该券"); + } + WxCoupon wxCoupon = wxCouponService.getById(wxCouponSend.getCouponId()); + if(wxCoupon.getSendEndDate().before(new Date())){ + return new ResultData(Result.ERROR,"发放日期异常"); + } + + wxCouponSend.setMerchantId(wxCoupon.getMerchantId()); + wxCouponSend.setType(wxCoupon.getType()); + wxCouponSend.setTenantId(wxCoupon.getTenantId()); + wxCouponSend.setTitle(wxCoupon.getTitle()); + wxCouponSend.setSendStartTime(wxCoupon.getSendStartDate()); + wxCouponSend.setSendEndTime(wxCoupon.getSendEndDate()); //Assert.notNull(wxCouponSend.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); wxCouponSendService.saveOrUpdate(wxCouponSend); @@ -47,6 +70,7 @@ public class WxCouponSendController extends BaseController @ApiOperation("根据id更新接口") @PostMapping("update") public ResultData update(@RequestBody WxCouponSend wxCouponSend) { + wxCouponSend.setTenantId(getTenantId()); wxCouponSendService.saveOrUpdate(wxCouponSend); return new ResultData(); } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java index 37034ab3e..cbd515257 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java @@ -34,11 +34,11 @@ public class WxMerchantController extends BaseController @ApiOperation("新增接口") @PostMapping("add") - public ResultData add(@ModelAttribute WxMerchant wxMerchant,String shopids, String userids) { + public ResultData add(@RequestBody WxMerchant wxMerchant) { //Assert.notNull(wxMerchant.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); wxMerchant.setTenantId(getTenantId()); - wxMerchantService.saveOrUpdate(wxMerchant,shopids,userids); + wxMerchantService.saveOrUpdate(wxMerchant); return new ResultData(); } @@ -63,7 +63,13 @@ public class WxMerchantController extends BaseController public ResultData findById(Long id) { return new ResultData(Result.SUCCESS,"查询成功",wxMerchantService.getById(id)); } - - + + @ApiOperation("停用") + @GetMapping("disable") + @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) + public ResultData disable(Long id) { + wxMerchantService.disable(id); + return new ResultData(Result.SUCCESS,"停用成功"); + } } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantShopController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantShopController.java index f0c78f729..566c72eba 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantShopController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantShopController.java @@ -1,19 +1,17 @@ package com.simple.controller; -import org.apache.log4j.Logger; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.Assert; -import org.springframework.web.bind.annotation.*; - import com.github.pagehelper.PageInfo; import com.simple.common.Result; import com.simple.common.ResultData; - import com.simple.domain.po.WxMerchantShop; +import com.simple.domain.po.WxShop; import com.simple.service.WxMerchantShopService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("wxMerchantShop") @@ -35,6 +33,18 @@ public class WxMerchantShopController extends BaseController return new ResultData(page); } + @ApiOperation("获取关联商铺信息") + @GetMapping("queryShopList") + @ApiImplicitParams({ + @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), + @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) + public ResultData queryShopList(@ModelAttribute WxMerchantShop wxMerchantShop,Integer pageNum, Integer pageSize) { + if (null == wxMerchantShop) wxMerchantShop = new WxMerchantShop(); + final PageInfo page = wxMerchantShopService.queryShopList(wxMerchantShop, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation("新增接口") @PostMapping("add") public ResultData add(@RequestBody WxMerchantShop wxMerchantShop) { diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxMsgController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxMsgController.java index 7ee4890d0..984af8ce3 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxMsgController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxMsgController.java @@ -72,7 +72,7 @@ public class WxMsgController extends BaseController @RequestMapping("/excleupload") - public ResultData courseplanimport(@RequestParam("file") MultipartFile file) { + public ResultData excleupload(@RequestParam("file") MultipartFile file) { if (file.isEmpty()) { return new ResultData(Result.SUCCESS,"上传文件不能为空"); } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java index 80ce946a9..6a3ce5167 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java @@ -1,5 +1,6 @@ package com.simple.controller; +import com.simple.service.WxProfitSharingOrderService; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.Assert; @@ -66,7 +67,17 @@ public class WxPayOrderController extends BaseController public ResultData findById(Long id) { return new ResultData(Result.SUCCESS,"查询成功",wxPayOrderService.getById(id)); } - - + + + + @Autowired + private WxProfitSharingOrderService xProfitSharingOrderService; + + @ApiOperation("测试分账") + @GetMapping("/sharing") + public ResultData test() { + xProfitSharingOrderService.test(); + return new ResultData(); + } } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxRefundOrderController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxRefundOrderController.java index d426b9126..03b27c97b 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxRefundOrderController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxRefundOrderController.java @@ -15,27 +15,29 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import java.util.Map; + @RestController -@RequestMapping("wxRefundOrder") -public class WxRefundOrderController extends BaseController -{ - @Autowired +@RequestMapping("/api/refund") +public class WxRefundOrderController extends BaseController { + @Autowired private WxRefundOrderService wxRefundOrderService; private Logger logger = Logger.getLogger(WxRefundOrderController.class); - - @ApiOperation("分页列表接口") + + + @ApiOperation("分页列表接口") @GetMapping("list") - @ApiImplicitParams({ - @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), - @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) - public ResultData list(@ModelAttribute WxRefundOrder wxRefundOrder,Integer pageNum, Integer pageSize) { - if (null == wxRefundOrder) wxRefundOrder = new WxRefundOrder(); + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData list(@ModelAttribute WxRefundOrder wxRefundOrder, Integer pageNum, Integer pageSize) { + if (null == wxRefundOrder) wxRefundOrder = new WxRefundOrder(); final PageInfo page = wxRefundOrderService.listAsPage(wxRefundOrder, pageNum, pageSize); return new ResultData(page); } - @ApiOperation("新增接口") + @ApiOperation("新增接口") @PostMapping("add") public ResultData add(@RequestBody WxRefundOrder wxRefundOrder) { //Assert.notNull(wxRefundOrder.getName(), "角色名不能为空"); @@ -53,19 +55,18 @@ public class WxRefundOrderController extends BaseController @ApiOperation("根据id删除接口") @GetMapping("/del") - @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) public ResultData delete(Long id) { wxRefundOrderService.deleteById(id); return new ResultData(Result.SUCCESS, "删除成功", null); } - - @ApiOperation("根据id查询接口") - @GetMapping("/findById") - @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) + + @ApiOperation("根据id查询接口") + @GetMapping("/findById") + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) public ResultData findById(Long id) { - return new ResultData(Result.SUCCESS,"查询成功",wxRefundOrderService.getById(id)); + return new ResultData(Result.SUCCESS, "查询成功", wxRefundOrderService.getById(id)); } - - - + + } diff --git a/mallinkBApi/src/main/java/com/simple/config/WebMvcConfig.java b/mallinkBApi/src/main/java/com/simple/config/WebMvcConfig.java index 4ba634305..07acb359e 100644 --- a/mallinkBApi/src/main/java/com/simple/config/WebMvcConfig.java +++ b/mallinkBApi/src/main/java/com/simple/config/WebMvcConfig.java @@ -1,14 +1,20 @@ package com.simple.config; +import com.alibaba.fastjson.serializer.SerializeConfig; +import com.alibaba.fastjson.serializer.ToStringSerializer; +import com.alibaba.fastjson.support.config.FastJsonConfig; +import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; import com.simple.interceptor.AuthorizationInterceptor; import com.simple.resolver.LoginUserHandlerMethodArgumentResolver; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.HttpMessageConverter; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import java.math.BigInteger; import java.util.List; /** @@ -44,4 +50,19 @@ public class WebMvcConfig extends WebMvcConfigurerAdapter { //registry.addResourceHandler("/app/**").addResourceLocations("classpath:/app/"); } + + @Override + public void configureMessageConverters(List> converters) { + FastJsonHttpMessageConverter fastConverter = + new FastJsonHttpMessageConverter(); + + FastJsonConfig fastJsonConfig = new FastJsonConfig(); + SerializeConfig serializeConfig = SerializeConfig.globalInstance; + serializeConfig.put(BigInteger.class, ToStringSerializer.instance); + serializeConfig.put(Long.class, ToStringSerializer.instance); + serializeConfig.put(Long.TYPE, ToStringSerializer.instance); + fastJsonConfig.setSerializeConfig(serializeConfig); + fastConverter.setFastJsonConfig(fastJsonConfig); + converters.add(fastConverter); + } } \ No newline at end of file diff --git a/mallinkBApi/src/main/java/com/simple/controller/BaseController.java b/mallinkBApi/src/main/java/com/simple/controller/BaseController.java index 36ad754cc..3120c1fa3 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/BaseController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/BaseController.java @@ -88,4 +88,17 @@ public class BaseController { service.setWxMaConfig(config); return service; } + + public WxMaService getWeappServiceByAppInfo(WxAppinfo appinfo) { + WxMaInMemoryConfig config = new WxMaInMemoryConfig(); + config.setAppid(appinfo.getAppId()); + config.setSecret(appinfo.getSecret()); + config.setToken(appinfo.getToken()); + config.setAesKey(appinfo.getAesKey()); + config.setMsgDataFormat(appinfo.getMsgDataFormat()); + + WxMaService service = new WxMaServiceImpl(); + service.setWxMaConfig(config); + return service; + } } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarsController.java b/mallinkBApi/src/main/java/com/simple/controller/WxCUserCarController.java similarity index 66% rename from mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarsController.java rename to mallinkBApi/src/main/java/com/simple/controller/WxCUserCarController.java index 8b9374f21..1f3136a83 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarsController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/WxCUserCarController.java @@ -2,52 +2,51 @@ package com.simple.controller; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.Assert; import org.springframework.web.bind.annotation.*; import com.github.pagehelper.PageInfo; import com.simple.common.Result; import com.simple.common.ResultData; -import com.simple.domain.po.WxCUserCars; -import com.simple.service.WxCUserCarsService; +import com.simple.domain.po.WxCUserCar; +import com.simple.service.WxCUserCarService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @RestController @RequestMapping("wxCUserCars") -public class WxCUserCarsController extends BaseController +public class WxCUserCarController extends BaseController { @Autowired - private WxCUserCarsService wxCUserCarsService; + private WxCUserCarService wxCUserCarService; - private Logger logger = Logger.getLogger(WxCUserCarsController.class); + private Logger logger = Logger.getLogger(WxCUserCarController.class); @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) - public ResultData list(@ModelAttribute WxCUserCars wxCUserCars,Integer pageNum, Integer pageSize) { - if (null == wxCUserCars) wxCUserCars = new WxCUserCars(); - final PageInfo page = wxCUserCarsService.listAsPage(wxCUserCars, pageNum, pageSize); + public ResultData list(@ModelAttribute WxCUserCar wxCUserCars,Integer pageNum, Integer pageSize) { + if (null == wxCUserCars) wxCUserCars = new WxCUserCar(); + final PageInfo page = wxCUserCarService.listAsPage(wxCUserCars, pageNum, pageSize); return new ResultData(page); } @ApiOperation("新增接口") @PostMapping("add") - public ResultData add(@RequestBody WxCUserCars wxCUserCars) { + public ResultData add(@RequestBody WxCUserCar wxCUserCars) { //Assert.notNull(wxCUserCars.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); - wxCUserCarsService.saveOrUpdate(wxCUserCars); + wxCUserCarService.saveOrUpdate(wxCUserCars); return new ResultData(); } @ApiOperation("根据id更新接口") @PostMapping("update") - public ResultData update(@RequestBody WxCUserCars wxCUserCars) { - wxCUserCarsService.saveOrUpdate(wxCUserCars); + public ResultData update(@RequestBody WxCUserCar wxCUserCar) { + wxCUserCarService.saveOrUpdate(wxCUserCar); return new ResultData(); } @@ -55,7 +54,7 @@ public class WxCUserCarsController extends BaseController @GetMapping("/del") @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) public ResultData delete(Long id) { - wxCUserCarsService.deleteById(id); + wxCUserCarService.deleteById(id); return new ResultData(Result.SUCCESS, "删除成功", null); } @@ -63,7 +62,7 @@ public class WxCUserCarsController extends BaseController @GetMapping("/findById") @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) public ResultData findById(Long id) { - return new ResultData(Result.SUCCESS,"查询成功",wxCUserCarsService.getById(id)); + return new ResultData(Result.SUCCESS,"查询成功",wxCUserCarService.getById(id)); } diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxCarCmdLogsController.java b/mallinkBApi/src/main/java/com/simple/controller/WxCarCmdLogsController.java deleted file mode 100644 index 3eb4a4141..000000000 --- a/mallinkBApi/src/main/java/com/simple/controller/WxCarCmdLogsController.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.simple.controller; - -import org.apache.log4j.Logger; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.Assert; -import org.springframework.web.bind.annotation.*; - -import com.github.pagehelper.PageInfo; -import com.simple.common.Result; -import com.simple.common.ResultData; - -import com.simple.domain.po.WxCarCmdLogs; -import com.simple.service.WxCarCmdLogsService; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiOperation; - -@RestController -@RequestMapping("wxCarCmdLogs") -public class WxCarCmdLogsController extends BaseController -{ - @Autowired - private WxCarCmdLogsService wxCarCmdLogsService; - - private Logger logger = Logger.getLogger(WxCarCmdLogsController.class); - - @ApiOperation("分页列表接口") - @GetMapping("list") - @ApiImplicitParams({ - @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), - @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) - public ResultData list(@ModelAttribute WxCarCmdLogs wxCarCmdLogs,Integer pageNum, Integer pageSize) { - if (null == wxCarCmdLogs) wxCarCmdLogs = new WxCarCmdLogs(); - final PageInfo page = wxCarCmdLogsService.listAsPage(wxCarCmdLogs, pageNum, pageSize); - return new ResultData(page); - } - - @ApiOperation("新增接口") - @PostMapping("add") - public ResultData add(@RequestBody WxCarCmdLogs wxCarCmdLogs) { - //Assert.notNull(wxCarCmdLogs.getName(), "角色名不能为空"); - //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); - wxCarCmdLogsService.saveOrUpdate(wxCarCmdLogs); - return new ResultData(); - } - - @ApiOperation("根据id更新接口") - @PostMapping("update") - public ResultData update(@RequestBody WxCarCmdLogs wxCarCmdLogs) { - wxCarCmdLogsService.saveOrUpdate(wxCarCmdLogs); - return new ResultData(); - } - - @ApiOperation("根据id删除接口") - @GetMapping("/del") - @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) - public ResultData delete(Long id) { - wxCarCmdLogsService.deleteById(id); - return new ResultData(Result.SUCCESS, "删除成功", null); - } - - @ApiOperation("根据id查询接口") - @GetMapping("/findById") - @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) - public ResultData findById(Long id) { - return new ResultData(Result.SUCCESS,"查询成功",wxCarCmdLogsService.getById(id)); - } - - - -} diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxCouponController.java b/mallinkBApi/src/main/java/com/simple/controller/WxCouponController.java index dd39b05b8..a74c1a659 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxCouponController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/WxCouponController.java @@ -19,11 +19,11 @@ import io.swagger.annotations.ApiOperation; @RequestMapping("wxCoupon") public class WxCouponController extends BaseController { + private Logger logger = Logger.getLogger(WxCouponController.class); + @Autowired private WxCouponService wxCouponService; - private Logger logger = Logger.getLogger(WxCouponController.class); - @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java new file mode 100644 index 000000000..873d85564 --- /dev/null +++ b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java @@ -0,0 +1,111 @@ +package com.simple.controller; + +import com.github.pagehelper.PageInfo; +import com.simple.common.ErrorCode; +import com.simple.common.Result; +import com.simple.common.ResultData; +import com.simple.domain.po.WxCouponOrder; +import com.simple.exception.MallinkException; +import com.simple.service.WxCouponOrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +@RestController +@RequestMapping("/api/couponOrder") +@Api(description = "核销和用户卡券查询接口") +public class WxCouponOrderController extends BaseController { + private Logger logger = Logger.getLogger(WxCouponOrderController.class); + + @Autowired + private WxCouponOrderService wxCouponOrderService; + + @ApiOperation(value = "核销接口", notes = "{\"couponOrderId\":\"string\"}") + @PostMapping("verify") + public ResultData verify(@RequestBody Map paramMap) { + logger.info(paramMap.toString()); + String couponOrderIdStr = paramMap.get("couponOrderId"); + if (StringUtils.isBlank(couponOrderIdStr)) { + logger.error("couponOrderId不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId不能为空"); + } + Long couponOrderId = 0L; + try { + couponOrderId = Long.valueOf(couponOrderIdStr); + } catch (NumberFormatException e) { + couponOrderId = 0L; + logger.error("couponOrderId参数不正确: " + paramMap.toString()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId参数不正确"); + } + try { + ResultData rd = wxCouponOrderService.verify(couponOrderId, getUser().getId()); + return rd; + } catch (MallinkException e) { + logger.error("核销异常: " + e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } catch (Exception e) { + logger.error("核销异常: " + e.getMessage()); + return new ResultData(ErrorCode.VERIFY_ERROR, e.getMessage()); + } + } + + @ApiOperation(value = "退券接口", notes = "{\"couponOrderId\":\"string\"}") + @PostMapping("refund") + public ResultData refund(@RequestBody Map paramMap) { + logger.info(paramMap.toString()); + String couponOrderIdStr = paramMap.get("couponOrderId"); + if (StringUtils.isBlank(couponOrderIdStr)) { + logger.error("couponOrderId不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId不能为空"); + } + Long couponOrderId = 0L; + try { + couponOrderId = Long.valueOf(couponOrderIdStr); + } catch (NumberFormatException e) { + logger.error("couponOrderId参数不正确: " + paramMap.toString()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId参数不正确"); + } + try { + ResultData rd = wxCouponOrderService.refund(couponOrderId, getUser().getId()); + return rd; + } catch (MallinkException e) { + logger.error("退券异常: " + e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } catch (Exception e) { + logger.error("退券异常: " + e.getMessage()); + return new ResultData(ErrorCode.REFUND_ORDER_ERROR, e.getMessage()); + } + } + + @ApiOperation("分页列表接口") + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData list(@ModelAttribute WxCouponOrder wxCouponOrder, Integer pageNum, Integer pageSize) { + if (null == wxCouponOrder) wxCouponOrder = new WxCouponOrder(); + final PageInfo page = wxCouponOrderService.listAsPage(wxCouponOrder, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation("根据id更新接口") + @PostMapping("update") + public ResultData update(@RequestBody WxCouponOrder wxCouponOrder) { + wxCouponOrderService.saveOrUpdate(wxCouponOrder); + return new ResultData(); + } + + @ApiOperation("根据id查询接口") + @GetMapping("/findById") + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) + public ResultData findById(Long id) { + return new ResultData(Result.SUCCESS, "查询成功", wxCouponOrderService.getById(id)); + } +} diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxOrderController.java b/mallinkBApi/src/main/java/com/simple/controller/WxOrderController.java index 99cb4d533..18c59d800 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxOrderController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/WxOrderController.java @@ -1,7 +1,11 @@ package com.simple.controller; +import com.simple.common.ErrorCode; +import com.simple.domain.po.WxMerchantBUser; import com.simple.domain.vo.OrderVo; import com.simple.enums.EnumOrderStatus; +import io.swagger.models.auth.In; +import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.Assert; @@ -32,45 +36,71 @@ public class WxOrderController extends BaseController { @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true), - @ApiImplicitParam(name = "merchantId", value = "B端用户ID", dataType = "Long", paramType = "query", required = true), - @ApiImplicitParam(name = "cUserId", value = "C端用户ID", dataType = "Long", paramType = "query", required = false), - @ApiImplicitParam(name = "orderId", value = "订单ID", dataType = "Long", paramType = "query", required = false), - @ApiImplicitParam(name = "couponId", value = "券ID", dataType = "Long", paramType = "query", required = false), - @ApiImplicitParam(name = "status", value = "订单状态:-1全部;0-已下单/待付款;1-已支付;2-已取消(限定时间内未付款);3-未退款/待退款;4-已退款;5-退款失败", required = false, dataType = "Integer"), + @ApiImplicitParam(name = "orderStatus", value = "订单状态:-1全部;0-已下单/待付款;1-已支付;2-已取消(限定时间内未付款);3-未退款/待退款;4-已退款;5-退款失败", required = false, dataType = "Integer"), @ApiImplicitParam(name = "couponStatus", value = "券状态:-1全部;3:已领取/已购买/未核销/未使用,4:已核销/已使用,5:已过期,6:已退券", required = false, dataType = "Integer") }) - public ResultData list(@ModelAttribute OrderVo orderVo, Integer pageNum, Integer pageSize) { + public ResultData list(Integer orderStatus, Integer couponStatus, Integer pageNum, Integer pageSize) { + WxMerchantBUser user = getUser(); + OrderVo orderVo = new OrderVo(); + orderVo.setbUserId(user.getId()); + if (orderStatus != -1) + orderVo.setOrderStatus(orderStatus); + if (couponStatus != -1) + orderVo.setCouponStatus(couponStatus); final PageInfo> page = wxOrderService.bQueryListMap(orderVo, pageNum, pageSize); return new ResultData(page); } - @ApiOperation("订单详情") + @ApiOperation(value = "订单详情", notes = "{\"couponOrderId\":\"String\",\"orderId\":\"String\",\"couponId\":\"String\"}") @GetMapping("detail") - @ApiImplicitParams({ - @ApiImplicitParam(name = "merchantId", value = "B端用户ID", dataType = "Long", paramType = "query", required = true), - @ApiImplicitParam(name = "cUserId", value = "C端用户ID", dataType = "Long", paramType = "query", required = false), - @ApiImplicitParam(name = "orderId", value = "订单ID", dataType = "Long", paramType = "query", required = false), - @ApiImplicitParam(name = "couponId", value = "券ID", dataType = "Long", paramType = "query", required = false), - @ApiImplicitParam(name = "status", value = "订单状态:-1全部;0-已下单/待付款;1-已支付;2-已取消(限定时间内未付款);3-未退款/待退款;4-已退款;5-退款失败", required = false, dataType = "Integer"), - @ApiImplicitParam(name = "couponStatus", value = "券状态:-1全部;3:已领取/已购买/未核销/未使用,4:已核销/已使用,5:已过期,6:已退券", required = false, dataType = "Integer") - }) - public ResultData orderDetail(@ModelAttribute OrderVo orderVo) { + public ResultData orderDetail(@RequestBody Map paramMap) { //Assert.notNull(wxOrders.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); + String couponOrderIdStr = paramMap.get("couponOrderId"); + String orderIdStr = paramMap.get("orderId"); + String couponIdStr = paramMap.get("couponId"); + if (StringUtils.isBlank(couponOrderIdStr)) { + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId不能为空"); + } + if (StringUtils.isBlank(orderIdStr)) { + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); + } + if (StringUtils.isBlank(couponIdStr)) { + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponId不能为空"); + } + Long couponOrderId = 0L, orderId = 0L, couponId = 0L; + try { + couponOrderId = Long.valueOf(couponOrderIdStr); + orderId = Long.valueOf(orderIdStr); + couponId = Long.valueOf(couponIdStr); + } catch (NumberFormatException e) { + logger.error("couponOrderId " + couponOrderIdStr + ", e:" + e.getMessage()); + } + WxMerchantBUser user = getUser(); + OrderVo orderVo = new OrderVo(); + orderVo.setbUserId(user.getId()); + orderVo.setOrderId(orderId); + orderVo.setCouponId(couponId); Map map = wxOrderService.queryObject(orderVo); return new ResultData(map); } - @ApiOperation("手工退款") + @ApiOperation(value = "手工退款", notes = "{\"orderId\":\"string\"}") @PostMapping("refund") - @ApiImplicitParams({ - @ApiImplicitParam(name = "id", value = "订单ID", required = true, dataType = "Long") - }) - public ResultData expiringOrder(@RequestBody WxOrder wxOrder) { + public ResultData expiringOrder(@RequestBody Map paramMap) { //Assert.notNull(wxOrders.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); - // 1. - //wxOrderService.updateOrderStatus(wxOrder.getId(), EnumOrderStatus.ORDER_STATUS_PENDING_REFUND); + String orderIdStr = paramMap.get("orderId"); + if (StringUtils.isBlank(orderIdStr)) { + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); + } + Long orderId = 0L; + try { + orderId = Long.valueOf(orderIdStr); + } catch (NumberFormatException e) { + logger.error("orderId " + orderIdStr + ", e:" + e.getMessage()); + } + wxOrderService.updateOrderStatus(orderId, EnumOrderStatus.ORDER_STATUS_PENDING_REFUND); return new ResultData(); } } diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxRefundOrderController.java b/mallinkBApi/src/main/java/com/simple/controller/WxRefundOrderController.java new file mode 100644 index 000000000..b86f6a1e9 --- /dev/null +++ b/mallinkBApi/src/main/java/com/simple/controller/WxRefundOrderController.java @@ -0,0 +1,115 @@ +package com.simple.controller; + +import com.github.pagehelper.PageInfo; +import com.simple.common.ErrorCode; +import com.simple.common.Result; +import com.simple.common.ResultData; +import com.simple.domain.po.*; +import com.simple.enums.EnumPayWay; +import com.simple.exception.MallinkException; +import com.simple.service.WxRefundOrderService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +@RestController +@RequestMapping("/api/refund") +public class WxRefundOrderController extends BaseController +{ + private Logger logger = Logger.getLogger(WxRefundOrderController.class); + + @Autowired + private WxRefundOrderService wxRefundOrderService; + + @ApiOperation(value = "发起退款", notes = "{\"orderId\":,\"string\", \"payOrderId\":\"string\"}") + @PostMapping("/create") + public ResultData create(@RequestBody Map paramMap) { + logger.info("/api/refund/create" + paramMap.toString()); + //Assert.notNull(wxRefundOrder.getName(), "角色名不能为空"); + //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); + String orderIdStr = paramMap.get("orderId"); + String payOrderIdStr = paramMap.get("payOrderId"); + if (StringUtils.isBlank(orderIdStr)) { + logger.error("orderId不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); + } + if (StringUtils.isBlank(payOrderIdStr)) { + logger.error("payOrderId不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "payOrderId不能为空"); + } + Long orderId = 0L; + try { + orderId = Long.valueOf(orderIdStr); + } catch (NumberFormatException e) { + logger.error("orderId参数不正确: " + paramMap.toString()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId参数不正确"); + } + WxRefundOrder refundOrder = new WxRefundOrder(); + refundOrder.setPayOrderNo(payOrderIdStr); + refundOrder.setOrderId(orderId); + + WxMerchantBUser bUser = getUser(); + WxAppinfo appinfo = getAppInfo(bUser.getAppId()); + try { + wxRefundOrderService.createRefundOrder(appinfo, refundOrder, EnumPayWay.PAY_WAY_WEAPP); + return new ResultData(); + } catch (MallinkException e) { + logger.error(e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.REFUND_ORDER_ERROR); + } + } + + @ApiOperation("分页列表接口") + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), + @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) + public ResultData list(@ModelAttribute WxRefundOrder wxRefundOrder,Integer pageNum, Integer pageSize) { + if (null == wxRefundOrder) wxRefundOrder = new WxRefundOrder(); + final PageInfo page = wxRefundOrderService.listAsPage(wxRefundOrder, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation("新增接口") + @PostMapping("add") + public ResultData add(@RequestBody WxRefundOrder wxRefundOrder) { + //Assert.notNull(wxRefundOrder.getName(), "角色名不能为空"); + //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); + wxRefundOrderService.saveOrUpdate(wxRefundOrder); + return new ResultData(); + } + + @ApiOperation("根据id更新接口") + @PostMapping("update") + public ResultData update(@RequestBody WxRefundOrder wxRefundOrder) { + wxRefundOrderService.saveOrUpdate(wxRefundOrder); + return new ResultData(); + } + + @ApiOperation("根据id删除接口") + @GetMapping("/del") + @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) + public ResultData delete(Long id) { + wxRefundOrderService.deleteById(id); + return new ResultData(Result.SUCCESS, "删除成功", null); + } + + @ApiOperation("根据id查询接口") + @GetMapping("/findById") + @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) + public ResultData findById(Long id) { + return new ResultData(Result.SUCCESS,"查询成功",wxRefundOrderService.getById(id)); + } + + + +} diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java b/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java index 5f667c37b..dbd852832 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java @@ -3,14 +3,13 @@ package com.simple.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.github.pagehelper.PageInfo; import com.simple.common.ErrorCode; import com.simple.common.Result; import com.simple.common.ResultData; -import com.simple.domain.po.WxCarCmdLogs; -import com.simple.domain.po.WxPark; +import com.simple.domain.po.*; import com.simple.enums.EnumCarVendor; -import com.simple.service.WxCarCmdLogsService; +import com.simple.service.WxCUserCarService; +import com.simple.service.WxMerchantService; import com.simple.service.WxParkService; import com.simple.utils.ETCPUtil; import com.simple.utils.TJDCarUtil; @@ -22,11 +21,13 @@ import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; @RestController -@RequestMapping("/api/car") +@RequestMapping("/car") public class WxCarController extends BaseController { private Logger logger = Logger.getLogger(WxCarController.class); @@ -38,24 +39,27 @@ public class WxCarController extends BaseController @Autowired WxParkService wxParkService; + @Autowired + WxCUserCarService wxCUserCarService; + @Autowired + WxMerchantService wxMerchantService; - private WxPark getCurrentPark() { + private WxPark getCurrentPark(WxCUser user) { + WxPark parkQ = new WxPark(); + parkQ.setTenantId(user.getTenantId()); + WxPark wxPark = wxParkService.getByObj(parkQ); // 1, get mall's park // future use redis to optimize - final PageInfo wxParkList = wxParkService.listAsPage(new WxPark(), 1, 1); - if (wxParkList.getSize() <= 0) { - return null; - } - WxPark park = wxParkList.getList().get(0); - return park; + return wxPark; } - @ApiOperation(value = "获取车场支持的厂家",notes="") + @ApiOperation(value = "获取车场支持的厂家",notes="返回\n{\"vendor\":integer}") @GetMapping("/getVendor") public ResultData getVendor() { + WxCUser user = getUser(); // 1, get mall's park - WxPark park = getCurrentPark(); + WxPark park = getCurrentPark(user); Map map = new HashMap(); map.put("vendor", park.getVendorType()); return new ResultData(map); @@ -69,12 +73,14 @@ public class WxCarController extends BaseController @ApiOperation(value = "初始化/etcp共同登录",notes="{\"phone\":\"string\"}") @PostMapping("/init") public ResultData init(Map paramMap) { + WxCUser user = getUser(); // 1, get mall's park - WxPark park = getCurrentPark(); + WxPark park = getCurrentPark(user); // 2. get vendor params if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { String phone = paramMap.get("phone"); if (StringUtils.isBlank(phone)) { + logger.error("手机号为空"); return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "phone为空"); } String params = park.getVendorParams(); @@ -91,31 +97,13 @@ public class WxCarController extends BaseController // 获取绑定的车牌 JSONObject dataObj = retObj.getJSONObject("data"); String etcpToken = dataObj.getString("token"); - // TODO 异步 - ret = etcp.carNum(url, merchantNo, merchantKey, version, etcpToken); - /* - { - "code": 0, - "msg": "ok", - "data": { - "number": 3, - "carList": [ - "晋 BMZ105", - "云 C12345" - ] - } - } - */ - retObj = JSON.parseObject(ret); - JSONObject dataObj1 = retObj.getJSONObject("data"); - dataObj1.put("vendor", park.getVendorType()); - JSONArray arr = dataObj1.getJSONArray("carList"); - for(int i=0;i uclist = wxCUserCarService.getList(queryUserCar); + // 删除ETCP不存在 + for(WxCUserCar userCar: uclist) { + boolean bExist = isExistInArray(arr, userCar.getCarNumber()); + if (!bExist) { + wxCUserCarService.deleteById(userCar.getId()); + uclist.remove(userCar); + } + } + // 添加ETCP的 + for(int i=0;i list, String carNumber) { + boolean bExist = false; + for(WxCUserCar userCar: list) { + if(carNumber.equals(userCar.getCarNumber())) { + bExist = true; + break; + } + } + return bExist; + } + /** * 绑车牌 * @param paramMap * @return */ @ApiOperation(value = "绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n" + - "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}") + "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}\n返回\n" + + "{\n" + + " \"timestamp\": \"1464235239561\",\n" + + " \"returnCode\": \"T\",\n" + + " \"errorMsg\": \"\",\n" + + " \"returnMsg\": \"OK\",\n" + + " \"isSuccess\": \"0\",\n" + + " \"carId\": \"5836b8b52ada463ebc6199579f029561\"\n" + + "}\n") @PostMapping("/bindCar") public ResultData bindCar(Map paramMap) { + WxCUser user = getUser(); // 1, get mall's park - WxPark park = getCurrentPark(); + WxPark park = getCurrentPark(user); // 2. get vendor params if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { String etcpToken = paramMap.get("etcpToken"); if (StringUtils.isBlank(etcpToken)) { + logger.error("etcpToken为空"); return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); } String carNumber = paramMap.get("carNumber"); if (StringUtils.isBlank(carNumber)) { + logger.error("carNumber为空"); return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumber为空"); } String params = park.getVendorParams(); @@ -157,28 +222,40 @@ public class WxCarController extends BaseController String ret = etcp.bindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber, null); JSONObject retObj = JSON.parseObject(ret); if (retObj.getIntValue("code") == 0) { - // TODO insert carNumber + // 插入车牌 + Date curr = new Date(); + WxCUserCar userCar = new WxCUserCar(); + userCar.setCUserId(user.getId()); + userCar.setTenantId(user.getTenantId()); + userCar.setCarNumber(carNumber); + userCar.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + userCar.setCreateDate(curr); + userCar.setUpdateDate(curr); + wxCUserCarService.saveOrUpdate(userCar); JSONObject dataObj = retObj.getJSONObject("data"); dataObj.put("vendor", park.getVendorType()); return new ResultData(dataObj); } else { + logger.error("绑车牌失败: " + carNumber); return new ResultData(ErrorCode.ETCP_BIND_FAIL.getCode(), "绑车牌失败"); } } else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { String carNumber = paramMap.get("carNumber"); if (StringUtils.isBlank(carNumber)) { + logger.error("carNumber为空"); return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumber为空"); } String carNumColor = paramMap.get("carNumColor"); if (StringUtils.isBlank(carNumColor)) { + logger.error("carNumColor为空"); return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumColor为空"); } String outCarId = paramMap.get("outCarId"); if (StringUtils.isBlank(outCarId)) { + logger.error("outCarId为空"); return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "outCarId为空"); } - // TODO insert carNumber String params = park.getVendorParams(); JSONObject objParams = JSON.parseObject(params); String url = objParams.getString("url"); @@ -187,21 +264,23 @@ public class WxCarController extends BaseController String version = objParams.getString("version"); String ret = tjd.registerCar(url, partner, key, version, carNumber, carNumColor, null, outCarId); - /* - { - "timestamp": "1464235239561", - "returnCode": "T", - "errorMsg": "", - "returnMsg": "OK", - "isSuccess": "0", - "carId": "5836b8b52ada463ebc6199579f029561" - } - */ JSONObject retObj = JSON.parseObject(ret); retObj.put("vendor", park.getVendorType()); if (retObj.getString("returnCode") == "T") { - // TODO save car id String carId = retObj.getString("carId"); + // 插入车牌 + Date curr = new Date(); + WxCUserCar userCar = new WxCUserCar(); + userCar.setCUserId(user.getId()); + userCar.setTenantId(user.getTenantId()); + userCar.setCarNumber(carNumber); + userCar.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + JSONObject jo = new JSONObject(); + jo.put("carId", carId); + userCar.setVendorParams(JSON.toJSONString(jo)); + userCar.setCreateDate(curr); + userCar.setUpdateDate(curr); + wxCUserCarService.saveOrUpdate(userCar); return new ResultData(retObj); } else { return new ResultData(ErrorCode.TJD_BIND_FAIL.getCode(), "绑车牌失败", retObj); @@ -215,19 +294,33 @@ public class WxCarController extends BaseController * @param paramMap * @return */ - @ApiOperation(value = "解绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n" + - "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}") + @ApiOperation(value = "解绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n返回:\n" + + "{\n" + + " \"code\": 0,\n" + + " \"message\": \"ok\"" + + "}" + + "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}\n返回:\n" + + "{\n" + + " \"timestamp\": \"1464235239561\",\n" + + " \"returnCode\": \"T\",\n" + + " \"errorMsg\": \"\",\n" + + " \"returnMsg\": \"OK\",\n" + + " \"isSuccess\": \"0\",\n" + + "}\n") @PostMapping("/unbindCar") public ResultData unbindCar(Map paramMap) { + WxCUser user = getUser(); // 1, get mall's park - WxPark park = getCurrentPark(); + WxPark park = getCurrentPark(user); if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { String etcpToken = paramMap.get("etcpToken"); if (StringUtils.isBlank(etcpToken)) { + logger.error("etcpToken为空"); return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); } String carNumber = paramMap.get("carNumber"); if (StringUtils.isBlank(carNumber)) { + logger.error("carNumber为空"); return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumber为空"); } String params = park.getVendorParams(); @@ -237,13 +330,17 @@ public class WxCarController extends BaseController String merchantKey = objParams.getString("merchantKey"); String version = objParams.getString("version"); - String ret = etcp.unbindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber); JSONObject retObj = JSON.parseObject(ret); if (retObj.getIntValue("code") == 0) { - // TODO delete carNumber + WxCUserCar userCar = new WxCUserCar(); + userCar.setCUserId(user.getId()); + userCar.setTenantId(user.getTenantId()); + userCar.setCarNumber(carNumber); + wxCUserCarService.deleteByObj(userCar); return new ResultData(); } else { + logger.error("解绑车牌失败"); return new ResultData(ErrorCode.ETCP_UNBIND_FAIL.getCode(), "解绑车牌失败"); } } @@ -252,35 +349,31 @@ public class WxCarController extends BaseController if (StringUtils.isBlank(carNumber)) { return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumber为空"); } - String carId = paramMap.get("carId"); - if (StringUtils.isBlank(carId)) { - return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carId为空"); - } - // TODO to get TJD carId - String params = park.getVendorParams(); - JSONObject objParams = JSON.parseObject(params); - String url = objParams.getString("url"); - String partner = objParams.getString("partner"); - String key = objParams.getString("key"); - String version = objParams.getString("version"); - String ret = tjd.writeOffCar(url, partner, key, version, carId); - /* - { - "timestamp": "1464235239561", - "returnCode": "T", - "errorMsg": "", - "returnMsg": "OK", - "isSuccess": "0", - "carId": "5836b8b52ada463ebc6199579f029561" - } - */ - JSONObject retObj = JSON.parseObject(ret); - if (retObj.getString("returnCode") == "T") { - // TODO remove carNumber - return new ResultData(); - } else { - return new ResultData(500, "解绑车牌失败"); + WxCUserCar queryOne = new WxCUserCar(); + queryOne.setCarNumber(carNumber); + queryOne.setTenantId(user.getTenantId()); + queryOne.setCUserId(user.getId()); + WxCUserCar userCar = wxCUserCarService.getOne(queryOne); + if (userCar != null) { + String params = userCar.getVendorParams(); + JSONObject objParams = JSON.parseObject(params); + String carId = objParams.getString("carId"); + + params = park.getVendorParams(); + String url = objParams.getString("url"); + String partner = objParams.getString("partner"); + String key = objParams.getString("key"); + String version = objParams.getString("version"); + String ret = tjd.writeOffCar(url, partner, key, version, carId); + JSONObject retObj = JSON.parseObject(ret); + if (retObj.getString("returnCode") == "T") { + wxCUserCarService.deleteByObj(userCar); + return new ResultData(); + } else { + return new ResultData(ErrorCode.TJD_UNBIND_FAIL, "解绑车牌失败"); + } } + } return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "解绑车牌失败"); } @@ -290,12 +383,46 @@ public class WxCarController extends BaseController * @param paramMap * @return */ - @ApiOperation(value = "停车费", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n" + - "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}") + @ApiOperation(value = "停车费", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n输出\n{\n" + + " \"carNumber\": \"渝****87\",\n" + + " \"entranceTime\": \"2017-06-11 11:19:27\",\n" + + " \"exitTime\": \"2017-06-11 11:59:47\",\n" + + " \"orderId\": \"B9466E26-7420-4BDF-958D-E90106AB5F20\", \"parkingFee\": 2.00,\n" + + " \"remainingServiceFee\": 0,\n" + + " \"payedServiceFee\": 0,\n" + + " \"remainingParkFee\": 2.00,\n" + + " \"discountAmount\": 0,\n" + + " \"parkingId\": 3126,\n" + + " \"parkingName\": \"ETCP 停车场\",\n" + + " \"remainingFee\": 2.00,\n" + + " \"paidFee\": 0,\n" + + " \"verificationInfo\": \"FSED9JvxgAU6XJUd8YRF5YH/LpfQYzCAfcPbAOKPV3BjKSatbgIsh7EBH2JBiRoGBe3btr gzKRMTfIoFuCn1XX7HUsJYlb7JSCBArnNmEVU4JuDLLjzoqB7qhQ8KnP16\"\n" + + " }" + + "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}\n输出\n{\n" + + " \"inDt\": \"20160526112000\",\n" + + " \"timestamp\": \"1464235239561\",\n" + + " \"returnCode\": \"T\",\n" + + " \"errorMsg\": \"\",\n" + + " \"tradeId\": \"d49aeaedcf144f1faf569846d6b1667e\",\n" + + " \"parkTime\": \"2439593\",\n" + + " \"returnMsg\": \"OK\",\n" + + " \"totalAmount\": \"0.03\",\n" + + " \"isSuccess\": \"0\",\n" + + " \"unPayAmount\": \"0.03\",\n" + + " \"paidAmount\": \"0.00\",\n" + + " \"freeThroughTime\": \"15\",\n" + + " \"outDt\": \"20170321121212\",\n" + + " \"payUrl\": \"http://prep.tingjiandan.com/tcweixin/letter/prePay/payInPark.html?\n" + + " prePayType=16&channel=10001\",\n" + + " \"accountId\": \"d49aeaedcf144f1faf569846d6b16671\",\n" + + " \"freeMinsAmount\": \"0.00\",\n" + + " \"pmParkId\": \"d49aeaedcf144f1faf569846d6b16670\"\n" + + " }") @PostMapping("/getCarStopFee") public ResultData getCarStopFee(Map paramMap) { + WxCUser user = getUser(); // 1, get mall's park - WxPark park = getCurrentPark(); + WxPark park = getCurrentPark(user); if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { String etcpToken = paramMap.get("etcpToken"); String carNumber = paramMap.get("carNumber"); @@ -316,27 +443,9 @@ public class WxCarController extends BaseController String ret = etcp.orderUnpay(url, appId, merchantNo, merchantKey, version, etcpToken, carNumber); JSONObject retObj = JSON.parseObject(ret); if (retObj.getIntValue("code") == 0) { - // TODO 停车费 - /* - { - "carNumber": "渝****87", - "entranceTime": "2017-06-11 11:19:27", - "exitTime": "2017-06-11 11:59:47", - "orderId": "B9466E26-7420-4BDF-958D-E90106AB5F20", "parkingFee": 2.00, - "remainingServiceFee": 0, - "payedServiceFee": 0, - "remainingParkFee": 2.00, - "discountAmount": 0, - "parkingId": 3126, - "parkingName": "ETCP 停车场", - "remainingFee": 2.00, - "paidFee": 0, - "verificationInfo": "FSED9JvxgAU6XJUd8YRF5YH/LpfQYzCAfcPbAOKPV3BjKSatbgIsh7EBH2JBiRoGBe3btr gzKRMTfIoFuCn1XX7HUsJYlb7JSCBArnNmEVU4JuDLLjzoqB7qhQ8KnP16" - } - */ JSONObject feeObj = retObj.getJSONArray("data").getJSONObject(0); feeObj.put("vendor", park.getVendorType()); - return new ResultData(feeObj); + return new ResultData(Result.SUCCESS, "停车费获取成功", feeObj); } else { return new ResultData(ErrorCode.ETCP_STOP_FEE_FAIL.getCode(), "停车费获取失败"); } @@ -346,7 +455,6 @@ public class WxCarController extends BaseController if (StringUtils.isBlank(carNumber)) { return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumber为空"); } - // TODO to get TJD carId String params = park.getVendorParams(); JSONObject objParams = JSON.parseObject(params); String url = objParams.getString("url"); @@ -354,31 +462,8 @@ public class WxCarController extends BaseController String key = objParams.getString("key"); String version = objParams.getString("version"); String ret = tjd.infoForFreeMins(url, partner, key, version, carNumber); - /* - { - "inDt": "20160526112000", - "timestamp": "1464235239561", - "returnCode": "T", - "errorMsg": "", - "tradeId": "d49aeaedcf144f1faf569846d6b1667e", - "parkTime": "2439593", - "returnMsg": "OK", - "totalAmount": "0.03", - "isSuccess": "0", - "unPayAmount": "0.03", - "paidAmount": "0.00", - "freeThroughTime": "15", - "outDt": "20170321121212", - "payUrl": "http://prep.tingjiandan.com/tcweixin/letter/prePay/payInPark.html? - prePayType=16&channel=10001", - "accountId": "d49aeaedcf144f1faf569846d6b16671", - "freeMinsAmount": "0.00", - "pmParkId": "d49aeaedcf144f1faf569846d6b16670" - } - */ JSONObject retObj = JSON.parseObject(ret); if (retObj.getString("returnCode") == "T") { - // TODO remove carNumber return new ResultData(retObj); } else { return new ResultData(ErrorCode.TJD_STOP_FEE_FAIL.getCode(), "停车费获取失败"); @@ -391,29 +476,36 @@ public class WxCarController extends BaseController * 停车费抵扣 * */ - @ApiOperation("停车费抵扣") + @ApiOperation(value = "停车费抵扣", notes = "{\"tradeId\":\"string\",\"deductionAmount\":\"string\",\"accountId\":\"string\",\"orderId\":\"string\"}\nresult\n{\n" + + " \"timestamp\": \"1464235239561\",\n" + + " \"returnCode\": \"T\",\n" + + " \"errorMsg\": \"\",\n" + + " \"returnMsg\": \"OK\",\n" + + " \"isSuccess\": \"0\",\n" + + " \"carId\": \"5836b8b52ada463ebc6199579f029561\"\n" + + " }") @PostMapping("/deductionFee") public ResultData deductionFee(Map paramMap) { + WxCUser user = getUser(); /// 1, get mall's park - WxPark park = getCurrentPark(); + WxPark park = getCurrentPark(user); if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { String tradeId = paramMap.get("tradeId"); String deductionAmount = paramMap.get("deductionAmount"); - // TODO out wx_records id - String outTradeNo = paramMap.get("outTradeNo"); String accountId = paramMap.get("accountId"); + String outTradeNo = paramMap.get("orderId"); if (StringUtils.isBlank(tradeId)) { return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "tradeId为空"); } if (StringUtils.isBlank(deductionAmount)) { return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "deductionAmount为空"); } - if (StringUtils.isBlank(outTradeNo)) { - return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "outTradeNo为空"); - } if (StringUtils.isBlank(accountId)) { return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "accountId为空"); } + if (StringUtils.isBlank(outTradeNo)) { + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId为空"); + } String params = park.getVendorParams(); JSONObject objParams = JSON.parseObject(params); String url = objParams.getString("url"); @@ -421,19 +513,8 @@ public class WxCarController extends BaseController String key = objParams.getString("key"); String version = objParams.getString("version"); String ret = tjd.deductionNotSettle(url, partner, key, version, tradeId, deductionAmount, outTradeNo, accountId); - /* - { - "timestamp": "1464235239561", - "returnCode": "T", - "errorMsg": "", - "returnMsg": "OK", - "isSuccess": "0", - "carId": "5836b8b52ada463ebc6199579f029561" - } - */ JSONObject retObj = JSON.parseObject(ret); if (retObj.getString("returnCode") == "T") { - // TODO remove carNumber return new ResultData(); } else { return new ResultData(ErrorCode.TJD_DEDUCE_FEE_FAIL.getCode(), "停车费抵扣失败"); @@ -442,83 +523,36 @@ public class WxCarController extends BaseController return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "停车费抵扣失败"); } - // 优免券模板 - /* - { - "id": 4974, //优免券模板 ID - "parkId": "fbqXUlfVvfc=", //车场标识 - "businessId": "ZcWQ26TeJuQ=", //商家标识 - title -- "businessName": "天洋广场", //商家名称 - subtitle -- "name": "商家 1 小时优免券", //优免券名称 - "category": "1", //优免券类型 1:小时优惠券,2:金额优惠券,3:折扣优惠券,4:免费券 - price -- "categoryValue": "1.00", //优免券价值 - total -- "amount": 100000, //优免券数量 - valid_start_date -- "effectiveStart": "2018-02-01", //生效开始时间 - valid_end_date -- "effectiveEnd": "2028-02-01",//生效结束时间 - -"couponType": "0",//优惠券类型 - number 库存 -- "avaliavleNum": 99993 //可用优惠券 - }, - */ - @ApiOperation("优免券模板") - @PostMapping("/quanTemplate") - public ResultData quanTemplate(Map paramMap) { - /// 1, get mall's park - WxPark park = getCurrentPark(); - if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { - String params = park.getVendorParams(); - JSONObject objParams = JSON.parseObject(params); - String url = objParams.getString("url"); - String merchantNo = objParams.getString("merchantNo"); - String merchantKey = objParams.getString("merchantKey"); - String version = objParams.getString("version"); - String parkId = objParams.getString("parkId"); - // bussinessId from 参数信息 - String businessId = paramMap.get("businessId"); - if (StringUtils.isBlank(businessId)) { - // TODO 1期只有一个虚拟商户,可以写在商场配置里 - businessId = objParams.getString("businessId"); - } - String ret = etcp.getBCouponList(url, merchantNo, merchantKey, version, parkId, businessId); - JSONObject retObj = JSON.parseObject(ret); - if (retObj.getIntValue("code") == 0) { - /* - "data": { - "count": 4, "couponPlatformModels": [ - { - "id": 4974, //优免券模板 ID - "parkId": "fbqXUlfVvfc=", //车场标识 "businessId": "ZcWQ26TeJuQ=", //商家标识 "businessName": "天洋广场", //商家名称 "name": "商家 1 小时优免券", //优免券名称 "category": "1", //优免券类型 - 1:小时优惠券,2:金额优惠券,3:折扣优惠券,4:免费券 "categoryValue": "1.00", //优免券价值 - "amount": 100000, //优免券数量 - "effectiveStart": "2018-02-01", //生效开始时间 - "effectiveEnd": "2028-02-01",//生效结束时间 - "couponType": "0",//优惠券类型 - "avaliavleNum": 99993 //可用优惠券 - }, - {...}, - {...} - ] - */ - return new ResultData(retObj.getJSONObject("data")); - } else { - return new ResultData(ErrorCode.ETCP_QUAN_TEMP_FAIL.getCode(), "优免券模板未发现"); - } + private String getETCPBusinessID(String merchantIdStr) { + String businessId; + Long merchantId = 0L; + try { + merchantId = Long.valueOf(merchantIdStr); + } catch (NumberFormatException e) { + logger.error(e.getMessage()); } - return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "优免券模板失败"); + WxMerchant wxMerchant = wxMerchantService.getById(merchantId); + String carParams = wxMerchant.getCarParams(); + JSONObject objParams1 = JSON.parseObject(carParams); + businessId = objParams1.getString("businessId"); + return businessId; } /** * 优免券领取 * 优免券不可退 */ - @ApiOperation(value = "优免券领取", notes="ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\",\"couponFreeId\":\"string\"}") + @ApiOperation(value = "优免券领取", notes="ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\",\"couponFreeId\":\"string\"},输出\n{}") @PostMapping("/getCoupon") public ResultData getCoupon(Map paramMap) { + WxCUser user = getUser(); /// 1, get mall's park - WxPark park = getCurrentPark(); + WxPark park = getCurrentPark(user); if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { String etcpToken = paramMap.get("etcpToken"); String carNumber = paramMap.get("carNumber"); String couponFreeId = paramMap.get("couponFreeId"); + String merchantIdStr = paramMap.get("merchantId"); if (StringUtils.isBlank(etcpToken)) { return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); } @@ -531,6 +565,9 @@ public class WxCarController extends BaseController if (StringUtils.isBlank(couponFreeId)) { return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponFreeId为空"); } + if (StringUtils.isBlank(merchantIdStr)) { + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "merchantId为空"); + } String params = park.getVendorParams(); JSONObject objParams = JSON.parseObject(params); String url = objParams.getString("url"); @@ -538,9 +575,11 @@ public class WxCarController extends BaseController String merchantKey = objParams.getString("merchantKey"); String version = objParams.getString("version"); String parkId = objParams.getString("parkId"); - String businessId = paramMap.get("businessId"); + String businessId = ""; + // 优先从从商户表里取 + businessId = getETCPBusinessID(merchantIdStr); if (StringUtils.isBlank(businessId)) { - // TODO 1期只有一个虚拟商户,可以写在商场配置里 + // 1期只有一个虚拟商户,可以写在商场配置里 businessId = objParams.getString("businessId"); } @@ -555,116 +594,4 @@ public class WxCarController extends BaseController } return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "优免券领取失败"); } - - // callback - // ETCP 车辆入场通知 - @RequestMapping(value = "/etcpParkInCallback") - public Result etcpParkInCallback(@RequestParam Map param) { - /* - { - "synId": "4ebd80ff-cfcf-462a-94cb-727e9fa9547c", - "plateNumber": "渝 ATX061", - "parkName": "ETCP 智慧停车场", - "parkId": "1", - "entranceTime": "2017-08-20 12:59:54", - "userType": "76", - "pushTime": "2017-08-20 12:59:57", - "fixParkingId": "U7", - "remainingDays": "11" } - */ - return new Result(0, "ok"); - } - // ETCP 车辆出场通知 - @RequestMapping(value = "/etcpParkOutCallback") - public Result etcpParkOutCallback(@RequestParam Map param) { - /* - { - "synId": "fd92f645-880e-4c2a-9d7d-7081a2488181", - "plateNumber": "渝 ATX061", - "parkName": "ETCP 智慧停车场", - "parkId": "1", - "entranceTime": "2017-08-17 18:44:19", - "userType": "76", - "pushTime": "2017-08-20 11:57:51", - "exitTime": "2017-08-19 12:07:19", - "stayedTime": 148980, - "receivableFee": 0, - "paidServiceFee": 0, - "fixParkingId": "U7", - "remainingDays": "12" - } - */ - return new Result(0, "ok"); - } - // ETCP 车辆解绑通知 - @RequestMapping(value = "/etcpUnbindCarCallBack") - public Result etcpUnbindCarCallBack(@RequestParam Map param) { - /* - { - "plateNumber": "渝 ATX061", - "time": "2017-08-20 11:57:51" - } - */ - return new Result(0, "ok"); - } - // ETCP 主动支付结果通知 - @RequestMapping(value = "/etcpPaidCallback") - public Result etcpPaidCallback(@RequestParam Map param) { - /* - { - "plateNumber": "渝 ATX061", - "orderId": "fd92f645-880e-4c2a-9d7d-7081a2488181", - "fee": 7.65, - "paidServiceFee": 0.07, - "coupon": 0, - "time": "2017-08-20 11:57:51" - } - */ - return new Result(0, "ok"); - } - // TJD 车辆入场通知 - @RequestMapping(value = "/tjdParkInCallback") - public Map tjdParkInCallback(@RequestParam Map param) { - /* - { - "tradeId": "5836b8b52ada463ebc6199579f029565", - "outCarId": "45454545454", - "carNum": "京A45413", - "carNumColor ": "blue", - "inDt": "20170319202020", - "parkName": "测试停车场", - "parkId": "5836b8b52ada463ebc6199579f029561", - "lon": "74.000272", - "lat": "159.768703", - "wLon": "123.523032", - "wLat": "35.430735", - "payUrl": "http://prep.tingjiandan.com/tcweixin/letter/prePay/payInPark.html?prePayType=16&channel=10001", - "canFindCar": "0" - } - */ - Map map = new HashMap(); - map.put("isSuccess", "0"); - map.put("errorMsg", ""); - return map; - } - // TJD 车辆出场通知 - @RequestMapping(value = "/tjdParkoutCallback") - public Map tjdParkOutCallback(@RequestParam Map param) { - /* - { - "tradeId": "5836b8b52ada463ebc6199579f029565", - "outDt": "20170319232020", - "lon": "74.000272", - "lat": "159.768703", - "wLon": "123.523032", - "wLat": "35.430735", - "parkAmount": "5.20" - } - */ - Map map = new HashMap(); - map.put("isSuccess", "0"); - map.put("errorMsg", ""); - return map; - } - } diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxCouponController.java b/mallinkCApi/src/main/java/com/simple/controller/WxCouponController.java index b653202e5..3af45bf88 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxCouponController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxCouponController.java @@ -17,55 +17,29 @@ import io.swagger.annotations.ApiOperation; @RestController @RequestMapping("wxCoupon") -public class WxCouponController extends BaseController -{ +public class WxCouponController extends BaseController { private Logger logger = Logger.getLogger(WxCouponController.class); - @Autowired + @Autowired private WxCouponService wxCouponService; - @ApiOperation("分页列表接口") + @ApiOperation("分页列表接口") @GetMapping("/list") - @ApiImplicitParams({ - @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), - @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) - public ResultData list(@ModelAttribute WxCoupon wxCoupon,Integer pageNum, Integer pageSize) { - if (null == wxCoupon) wxCoupon = new WxCoupon(); + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + public ResultData list(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize) { + if (null == wxCoupon) wxCoupon = new WxCoupon(); final PageInfo page = wxCouponService.listAsPage(wxCoupon, pageNum, pageSize); return new ResultData(page); } - @ApiOperation("新增接口") - @PostMapping("add") - public ResultData add(@RequestBody WxCoupon wxCoupon) { - //Assert.notNull(wxCoupon.getName(), "角色名不能为空"); - //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); - wxCouponService.saveOrUpdate(wxCoupon); - return new ResultData(); - } - - @ApiOperation("根据id更新接口") - @PostMapping("update") - public ResultData update(@RequestBody WxCoupon wxCoupon) { - wxCouponService.saveOrUpdate(wxCoupon); - return new ResultData(); - } - - @ApiOperation("根据id删除接口") - @GetMapping("/del") - @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) - public ResultData delete(Long id) { - wxCouponService.deleteById(id); - return new ResultData(Result.SUCCESS, "删除成功", null); - } - - @ApiOperation("根据id查询接口") - @GetMapping("/findById") - @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) + @ApiOperation("根据id查询接口") + @GetMapping("/findById") + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) public ResultData findById(Long id) { - return new ResultData(Result.SUCCESS,"查询成功",wxCouponService.getById(id)); + return new ResultData(Result.SUCCESS, "查询成功", wxCouponService.getById(id)); } - } diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java new file mode 100644 index 000000000..6105daba8 --- /dev/null +++ b/mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java @@ -0,0 +1,67 @@ +package com.simple.controller; + +import com.github.pagehelper.PageInfo; +import com.simple.common.ErrorCode; +import com.simple.common.Result; +import com.simple.common.ResultData; +import com.simple.domain.po.WxCUser; +import com.simple.domain.po.WxCouponOrder; +import com.simple.exception.MallinkException; +import com.simple.service.WxCouponOrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +@RestController +@RequestMapping("/api/couponOrder") +@Api(description = "用户卡券查询接口") +public class WxCouponOrderController extends BaseController { + private Logger logger = Logger.getLogger(WxCouponOrderController.class); + + @Autowired + private WxCouponOrderService wxCouponOrderService; + + + @ApiOperation("分页列表接口") + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "couponOrderStatus", value="券状态状态:0,待使用 1,已核销 2,已过期 3,已作废", dataType="int", paramType = "query",required=false) + }) + public ResultData list(Integer couponOrderStatus, Integer pageNum, Integer pageSize) { + WxCUser user = getUser(); + WxCouponOrder wxCouponOrder = new WxCouponOrder(); + wxCouponOrder.setTenantId(user.getTenantId()); + wxCouponOrder.setCouponOrderStatus(couponOrderStatus); + final PageInfo page = wxCouponOrderService.listAsPage(wxCouponOrder, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation(value = "根据id查询接口", notes = "{\"couponOrderId\":\"string\"}") + @GetMapping("/findById") + public ResultData findById(@RequestBody Map paramMap) { + logger.info(paramMap.toString()); + String couponOrderIdStr = paramMap.get("couponOrderId"); + if (StringUtils.isBlank(couponOrderIdStr)) { + logger.error("couponOrderId不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId不能为空"); + } + Long couponOrderId = 0L; + try { + couponOrderId = Long.valueOf(couponOrderIdStr); + } catch (NumberFormatException e) { + couponOrderId = 0L; + logger.error("couponOrderId参数不正确: " + paramMap.toString()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId参数不正确"); + } + return new ResultData(Result.SUCCESS, "查询成功", wxCouponOrderService.getById(couponOrderId)); + } +} diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java index 630a68b4c..c9a8c059f 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java @@ -4,6 +4,7 @@ import com.simple.common.ErrorCode; import com.simple.domain.po.WxCUser; import com.simple.enums.EnumOrderStatus; import com.simple.exception.MallinkException; +import io.swagger.models.auth.In; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -51,64 +52,77 @@ public class WxOrderController extends BaseController { } } - @ApiOperation("取消订单") + @ApiOperation(value = "取消订单", notes = "{\"orderId\":\"string\"}") @PostMapping("cancel") - @ApiImplicitParams({ - @ApiImplicitParam(name = "id", value = "订单ID", required = true, dataType = "Long"), - @ApiImplicitParam(name = "cUserId", value = "用户ID", required = true, dataType = "Long") - }) - public ResultData cancelOrder(@RequestBody WxOrder wxOrder) { + public ResultData cancelOrder(@RequestBody Map paramMap) { //Assert.notNull(wxOrders.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); - wxOrderService.updateOrderStatus(wxOrder.getId(), EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL); - return new ResultData(); - } - - @ApiOperation("订单过期") - @PostMapping("expiring") - @ApiImplicitParams({ - @ApiImplicitParam(name = "id", value = "订单ID", required = true, dataType = "Long"), - @ApiImplicitParam(name = "cUserId", value = "用户ID", required = true, dataType = "Long") - }) - public ResultData expiringOrder(@RequestBody WxOrder wxOrder) { - //Assert.notNull(wxOrders.getName(), "角色名不能为空"); - //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); - wxOrderService.updateOrderStatus(wxOrder.getId(), EnumOrderStatus.ORDER_STATUS_PENDING_REFUND); + String orderIdStr = paramMap.get("orderId"); + if (StringUtils.isBlank(orderIdStr)) { + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); + } + Long orderId = 0L; + WxCUser user = getUser(); + try { + orderId = Long.valueOf(orderIdStr); + } catch (NumberFormatException e) { + logger.error(e.getMessage()); + } + wxOrderService.updateOrderStatus(orderId, EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL); return new ResultData(); } - @ApiOperation("订单已过期") + @ApiOperation(value = "订单已过期", notes = "{\"orderId\":\"string\"}") @PostMapping("expired") - @ApiImplicitParams({ - @ApiImplicitParam(name = "id", value = "订单ID", required = true, dataType = "Long"), - @ApiImplicitParam(name = "cUserId", value = "用户ID", required = true, dataType = "Long") - }) - public ResultData expiredOrder(@RequestBody WxOrder wxOrder) { + public ResultData expiredOrder(@RequestBody Map paramMap) { //Assert.notNull(wxOrders.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); - wxOrderService.updateOrderStatus(wxOrder.getId(), EnumOrderStatus.ORDER_STATUS_REFUND_SUCCESS); + String orderIdStr = paramMap.get("orderId"); + if (StringUtils.isBlank(orderIdStr)) { + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); + } + Long orderId = 0L; + WxCUser user = getUser(); + try { + orderId = Long.valueOf(orderIdStr); + } catch (NumberFormatException e) { + logger.error(e.getMessage()); + } + wxOrderService.updateOrderStatus(orderId, EnumOrderStatus.ORDER_STATUS_REFUND_SUCCESS); return new ResultData(); } - @ApiOperation("分页列表接口") + @ApiOperation("分页订单列表接口") @GetMapping("list") @ApiImplicitParams({ @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), - @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) - public ResultData list(@ModelAttribute WxOrder wxOrder, Integer pageNum, Integer pageSize) { - if (null == wxOrder) wxOrder = new WxOrder(); + @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true), + @ApiImplicitParam(name="orderStatus",value="订单状态0-已下单/待付款;1-已支付;2-已取消",dataType="int", paramType = "query",required=false) + }) + public ResultData list(Integer orderStatus, Integer pageNum, Integer pageSize) { // c端用户应该只能看到自己的订单 WxCUser user = getUser(); - wxOrder.setCUserId(user.getId()); - final PageInfo page = wxOrderService.listAsPage(wxOrder, pageNum, pageSize); + WxOrder wxOrderQ = new WxOrder(); + wxOrderQ.setCUserId(user.getId()); + wxOrderQ.setOrderStatus(orderStatus); + final PageInfo page = wxOrderService.listAsPage(wxOrderQ, pageNum, pageSize); return new ResultData(page); } - @ApiOperation("根据id查询接口") + @ApiOperation(value = "根据orderId查询接口", notes = "{\"orderId\":\"string\"}") @GetMapping("/findById") - @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) - public ResultData findById(Long id) { - return new ResultData(Result.SUCCESS, "查询成功", wxOrderService.getById(id)); + public ResultData findById(@RequestBody Map paramMap) { + String orderIdStr = paramMap.get("orderId"); + if (StringUtils.isBlank(orderIdStr)) { + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); + } + Long orderId = 0L; + try { + orderId = Long.valueOf(orderIdStr); + } catch (NumberFormatException e) { + logger.error("parse orderId failed"); + } + return new ResultData(Result.SUCCESS, "查询成功", wxOrderService.getById(orderId)); } diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java index 55c31fa32..a8fe6c438 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java @@ -27,6 +27,7 @@ import com.simple.service.WxPayOrderService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import sun.rmi.runtime.Log; import javax.servlet.http.HttpServletRequest; import java.nio.charset.Charset; @@ -41,7 +42,7 @@ public class WxPayOrderController extends BaseController { @Autowired private WxPayOrderService wxPayOrderService; - @ApiOperation(value = "发起微信小程序支付订单") + @ApiOperation(value = "发起微信小程序支付订单", notes = "{\"orderId\":\"string\"}") @RequestMapping(value = "/create", method = RequestMethod.POST) public ResultData _create(@RequestBody Map paramMap, HttpServletRequest request) throws Exception { logger.info("/api/pay/create" + paramMap.toString()); @@ -54,7 +55,13 @@ public class WxPayOrderController extends BaseController { WxCUser user = getUser(); WxAppinfo appInfo = getAppInfo(user.getAppId()); - Long orderId = Long.valueOf(orderIdStr); + Long orderId = 0L; + try { + orderId = Long.valueOf(orderIdStr); + } catch (NumberFormatException e) { + orderId = 0L; + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId参数不正确"); + } WxPayOrder record = new WxPayOrder(); record.setOrderId(orderId); @@ -70,54 +77,55 @@ public class WxPayOrderController extends BaseController { return new ResultData(ErrorCode.PAY_ORDER_ERROR); } - /** - * - * @return 接收微信异步通知 - * @throws Exception 可能产生的任何异常 - */ - @AuthIgnore - @RequestMapping(value = "/notify/pay", method = RequestMethod.POST) - public String __doNotify(HttpServletRequest request) throws Exception { - Map paramMap = null; - String response; + @ApiOperation(value = "更新支付订单状态", notes = "{\"id\":\"string\",\"orderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") + @PostMapping("/updatePayOrder") + public ResultData updatePayOrder(@RequestBody Map paramMap) { + logger.info("/api/pay/updatePayOrder" + paramMap.toString()); + String payOrderIdStr = (String)paramMap.get("payOrderId"); + String orderIdStr = (String)paramMap.get("orderId"); + String reasonStr = (String)paramMap.get("reason"); + Integer status = (Integer)paramMap.get("status"); + if (StringUtils.isBlank(payOrderIdStr)) { + logger.info("payOrderId不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "payOrderId不能为空"); + } + if (StringUtils.isBlank(orderIdStr)) { + logger.info("orderId不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId不能为空"); + } + Long payOrderId = 0L, orderId = 0L; + try { + payOrderId = Long.valueOf(payOrderIdStr); + } catch (NumberFormatException e) { + payOrderId = 0L; + logger.error("payOrderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "payOrderId参数不正确"); + } + try { + orderId = Long.valueOf(orderIdStr); + } catch (NumberFormatException e) { + orderId = 0L; + logger.error("orderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId参数不正确"); + } + + WxPayOrder payOrder = new WxPayOrder(); + payOrder.setId(payOrderId); + payOrder.setOrderId(orderId); + payOrder.setPayOrderStatus(status); + payOrder.setFailReason(reasonStr); try { - String xml = IOUtils.toString(request.getInputStream(), Charset.forName("UTF-8")); - paramMap = WxPayment.xmlToMap(xml); - logger.info("payment wxpay, notify, param: " + paramMap.toString() ); - response = wxPayOrderService.notify(paramMap, EnumPayWay.PAY_WAY_WEAPP); - logger.info("payment wxpay, notify success, req : " + paramMap.toString() + ", resp: " + response.toString()); - return response; - } catch (BizMessageException e) { - logger.error("payment wxpay, notify error, req: " + paramMap.toString() + ", e:" + e.getLocalizedMessage()); - return e.getMessage(); + wxPayOrderService.handlePayOrderStatusUpdate(payOrder); + return new ResultData(Result.SUCCESS, "支付状态更新成功"); } catch (MallinkException e) { - logger.error("payment wxpay, notify error, req: " + paramMap.toString() + ", e:" +e.getLocalizedMessage()); - return e.getMessage(); + logger.error("支付状态更新失败2: " + payOrder.toString() + ", e:" + e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); } catch (Exception e) { - logger.error("payment wxpay, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); - return e.getMessage(); + logger.error("支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage()); } + return new ResultData(ErrorCode.PAY_ORDER_ERROR); } - /** - * - * @return 同步回调(订单状态主动检查) - * @throws Exception 可能产生的任何异常 - */ - @RequestMapping(value = "/callback", method = {RequestMethod.GET, RequestMethod.POST}) - public String __doCallback(HttpServletRequest request) throws Exception { - - logger.info("payment wxpay, callback,request:" + request.toString()); - - return "\n" + - "\n" + - "\n" + - "\n" + - " \n" + - " \n" + - "\n"; - } - @ApiOperation("分页列表接口") @GetMapping("/list") @ApiImplicitParams({ diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxUserGrantController.java b/mallinkCApi/src/main/java/com/simple/controller/WxUserGrantController.java index 6b07b705a..1c19c5c5f 100755 --- a/mallinkCApi/src/main/java/com/simple/controller/WxUserGrantController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxUserGrantController.java @@ -14,7 +14,9 @@ import com.simple.common.Result; import com.simple.common.ResultData; import com.simple.domain.po.WxAppinfo; import com.simple.domain.po.WxCUser; +import com.simple.domain.po.WxCUserCar; import com.simple.service.WxAppinfoService; +import com.simple.service.WxCUserCarService; import com.simple.service.WxCUserService; import com.simple.utils.IPUtil; import io.swagger.annotations.ApiImplicitParam; @@ -31,6 +33,7 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; @RestController @@ -41,6 +44,9 @@ public class WxUserGrantController extends BaseController { @Autowired private WxCUserService wxCUserService; + @Autowired + private WxCUserCarService wxCUserCarService; + /** * 用户登录 * @param map @@ -227,11 +233,23 @@ public class WxUserGrantController extends BaseController { } } - @ApiOperation("获取用户信息") - @GetMapping("/findById") + @ApiOperation("获取当前用户信息") + @GetMapping("/userinfo") public ResultData getUserInfo() { WxCUser user = getUser(); return new ResultData(Result.SUCCESS,"查询成功",user); } + @ApiOperation("获取当前用户车牌列表") + @GetMapping("/carlist") + public ResultData getCarList() { + WxCUser user = getUser(); + WxCUserCar userCar = new WxCUserCar(); + userCar.setTenantId(user.getTenantId()); + userCar.setCUserId(user.getId()); + List list = wxCUserCarService.getList(userCar); + return new ResultData(Result.SUCCESS,"获取查询成功", list); + } + + } diff --git a/mallinkCApi/src/main/resources/application-dev.yml b/mallinkCApi/src/main/resources/application-dev.yml index 1db322959..c40f720f9 100644 --- a/mallinkCApi/src/main/resources/application-dev.yml +++ b/mallinkCApi/src/main/resources/application-dev.yml @@ -1,9 +1,9 @@ spring: # JDBC datasource: - url: jdbc:mysql://localhost:3306/mallink?characterEncoding=UTF-8&useSSL=false - username: userone - password: 123456 + url: jdbc:mysql://202.165.179.86:3306/mallink?characterEncoding=UTF-8&useSSL=false + username: mallone + password: m@1l0ne123@# type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver filters: stat diff --git a/mallinkService/src/main/java/com/simple/common/ErrorCode.java b/mallinkService/src/main/java/com/simple/common/ErrorCode.java index 8ab875756..a641b5c33 100644 --- a/mallinkService/src/main/java/com/simple/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/simple/common/ErrorCode.java @@ -52,9 +52,11 @@ public enum ErrorCode{ COUPON_IS_EMPTY(2020, "券不存在"), /** - * 车流 2050 + * 车流 2040 */ + CAR_PARK_NOT_FOUND(2049, "车场未找到"), CAR_VENDOR_NOT_SUPPORT(2050, "不支持的停车厂家"), + ETCP_LOGIN_FAIL(2051, "ETCP共同登录失败"), ETCP_BIND_FAIL(2052, "ETCP绑车牌失败"), ETCP_UNBIND_FAIL(2053, "ETCP解绑车牌失败"), @@ -68,6 +70,7 @@ public enum ErrorCode{ TJD_DEDUCE_FEE_FAIL(2063, "TJD停车费抵扣失败"), + /** * 订单 */ @@ -80,9 +83,11 @@ public enum ErrorCode{ /** * 卡券 */ - COUPON_ORDER_IS_USED(4000, "卡券已核销"), - COUPON_ORDER_IS_OVER_TIME(4001, "卡券已过期"), - COUPON_ORDER_IS_INVALID(4002, "卡券已经作废"), + COUPON_ORDER_IS_NULL(4000, "卡券不存在"), + COUPON_ORDER_IS_USED(4001, "卡券已核销"), + COUPON_ORDER_IS_OVER_TIME(4002, "卡券已过期"), + COUPON_ORDER_IS_INVALID(4003, "卡券已经作废"), + /** * 微信 @@ -108,6 +113,18 @@ public enum ErrorCode{ APP_ID_NOT_FOUND(12020, "APPID没找到"), MCH_INFO_NOT_FOUND(12021, "商户信息没找到"), MCH_INFO_NOT_EQUAL(12022, "商户信息不对应"), + API_KEY_NOT_FOUND(12023, "支付密钥未配置"), + CERT_PATH_NOT_FOUND(12024, "双向证书未配置"), + + PROFIT_SHARING_REQUEST_FAILED(12030, "分账请求失败"), + PROFIT_SHARING_APPLY_FAILED(12031, "分账请求业务失败"), + PROFIT_SHARING_RETURN_INVALID(12032, "分账请求返回校验失败"), + PROFIT_SHARING_RECEIVER_INVALID(12033, "分账接受方查寻无效"), + + /** + * 核销 + */ + VERIFY_ERROR(12050, "核销异常") ; diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxCUserCars.java b/mallinkService/src/main/java/com/simple/domain/po/WxCUserCar.java similarity index 77% rename from mallinkService/src/main/java/com/simple/domain/po/WxCUserCars.java rename to mallinkService/src/main/java/com/simple/domain/po/WxCUserCar.java index 1d58646a1..0cf018354 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxCUserCars.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxCUserCar.java @@ -8,15 +8,15 @@ import java.util.List; import javax.persistence.Id; import java.io.Serializable; -@Table(name = "wx_c_user_cars") -public class WxCUserCars implements Serializable { +@Table(name = "wx_c_user_car") +public class WxCUserCar implements Serializable { private static final long serialVersionUID = 1L; @Id protected Long id; @Transient - protected List ids; + protected List ids; @Transient protected String sortColumns; @@ -32,10 +32,11 @@ public class WxCUserCars implements Serializable { return sortColumns; } - public List getIds() { + public List getIds() { return ids; } - public void setIds(List ids) { + + public void setIds(List ids) { this.ids = ids; } @@ -56,6 +57,12 @@ public class WxCUserCars implements Serializable { /*更新时间**/ @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private Date updateDate; + /*停车厂家(2:TJD)**/ + @io.swagger.annotations.ApiModelProperty(value="停车厂家(2:TJD)",name="vendorType") + private Integer vendorType; + /*停车厂家参数**/ + @io.swagger.annotations.ApiModelProperty(value="停车厂家参数",name="vendorParams") + private String vendorParams; public String getTenantId() { return tenantId; } @@ -86,6 +93,18 @@ public class WxCUserCars implements Serializable { public void setUpdateDate(Date _updateDate) { updateDate = _updateDate; } + public Integer getVendorType() { + return vendorType; + } + public void setVendorType(Integer _vendorType) { + vendorType = _vendorType; + } + public String getVendorParams() { + return vendorParams; + } + public void setVendorParams(String _vendorParams) { + vendorParams = _vendorParams; + } @@ -97,6 +116,8 @@ public class WxCUserCars implements Serializable { ,CarNumber_ASC("`carNumber` ASC"),CarNumber_DESC("`carNumber` DESC") ,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC") ,UpdateDate_ASC("`updateDate` ASC"),UpdateDate_DESC("`updateDate` DESC") + ,VendorType_ASC("`vendorType` ASC"),VendorType_DESC("`vendorType` DESC") + ,VendorParams_ASC("`vendorParams` ASC"),VendorParams_DESC("`vendorParams` DESC") ; private String value; Field(String value){ @@ -114,7 +135,7 @@ public class WxCUserCars implements Serializable { } } - public void setSortColumns(WxCUserCars.Field... fields) + public void setSortColumns(WxCUserCar.Field... fields) { if (fields == null || fields.length == 0) { return; diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxCarCmdLogs.java b/mallinkService/src/main/java/com/simple/domain/po/WxCarCmdLog.java similarity index 81% rename from mallinkService/src/main/java/com/simple/domain/po/WxCarCmdLogs.java rename to mallinkService/src/main/java/com/simple/domain/po/WxCarCmdLog.java index aa2e1da95..57e570503 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxCarCmdLogs.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxCarCmdLog.java @@ -8,15 +8,15 @@ import java.util.List; import javax.persistence.Id; import java.io.Serializable; -@Table(name = "wx_car_cmd_logs") -public class WxCarCmdLogs implements Serializable { +@Table(name = "wx_car_cmd_log") +public class WxCarCmdLog implements Serializable { private static final long serialVersionUID = 1L; @Id protected Long id; @Transient - protected List ids; + protected List ids; @Transient protected String sortColumns; @@ -32,10 +32,11 @@ public class WxCarCmdLogs implements Serializable { return sortColumns; } - public List getIds() { + public List getIds() { return ids; } - public void setIds(List ids) { + + public void setIds(List ids) { this.ids = ids; } @@ -45,11 +46,11 @@ public class WxCarCmdLogs implements Serializable { @io.swagger.annotations.ApiModelProperty(value="",name="tenantId") private String tenantId; /*停车厂家,1. ETCP,2.停简单**/ - @io.swagger.annotations.ApiModelProperty(value="停车厂家,1. ETCP,2.停简单",name="supportVendor") - private Integer supportVendor; - /*厂家命令名**/ - @io.swagger.annotations.ApiModelProperty(value="厂家命令名",name="cmdType") - private String cmdType; + @io.swagger.annotations.ApiModelProperty(value="停车厂家,1. ETCP,2.停简单",name="vendorType") + private Integer vendorType; + /*停车厂家命令**/ + @io.swagger.annotations.ApiModelProperty(value="停车厂家命令",name="cmdType") + private Integer cmdType; /*创建时间**/ @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") private Date createDate; @@ -65,16 +66,16 @@ public class WxCarCmdLogs implements Serializable { public void setTenantId(String _tenantId) { tenantId = _tenantId; } - public Integer getSupportVendor() { - return supportVendor; + public Integer getVendorType() { + return vendorType; } - public void setSupportVendor(Integer _supportVendor) { - supportVendor = _supportVendor; + public void setVendorType(Integer _vendorType) { + vendorType = _vendorType; } - public String getCmdType() { + public Integer getCmdType() { return cmdType; } - public void setCmdType(String _cmdType) { + public void setCmdType(Integer _cmdType) { cmdType = _cmdType; } public Date getCreateDate() { @@ -102,7 +103,7 @@ public class WxCarCmdLogs implements Serializable { { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") ,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC") - ,SupportVendor_ASC("`supportVendor` ASC"),SupportVendor_DESC("`supportVendor` DESC") + ,VendorType_ASC("`vendorType` ASC"),VendorType_DESC("`vendorType` DESC") ,CmdType_ASC("`cmdType` ASC"),CmdType_DESC("`cmdType` DESC") ,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC") ,UpdateDate_ASC("`updateDate` ASC"),UpdateDate_DESC("`updateDate` DESC") @@ -124,7 +125,7 @@ public class WxCarCmdLogs implements Serializable { } } - public void setSortColumns(WxCarCmdLogs.Field... fields) + public void setSortColumns(WxCarCmdLog.Field... fields) { if (fields == null || fields.length == 0) { return; diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxCouponSend.java b/mallinkService/src/main/java/com/simple/domain/po/WxCouponSend.java index 730acce5d..21148cf16 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxCouponSend.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxCouponSend.java @@ -11,15 +11,15 @@ import java.io.Serializable; @Table(name = "wx_coupon_send") public class WxCouponSend implements Serializable { private static final long serialVersionUID = 1L; - + @Id - protected Long id; - - @Transient - protected List ids; - @Transient - protected String sortColumns; - + protected Long id; + + @Transient + protected List ids; + @Transient + protected String sortColumns; + public Long getId() { return id; } @@ -27,20 +27,21 @@ public class WxCouponSend implements Serializable { public void setId(Long id) { this.id = id; } - + public String getSortColumns() { return sortColumns; } - - public List getIds() { + + public List getIds() { return ids; } - public void setIds(List ids) { + + public void setIds(List ids) { this.ids = ids; } - - - + + + /*租户ID**/ @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; @@ -59,6 +60,15 @@ public class WxCouponSend implements Serializable { /*发券方式(1.主动领取,2.停车发券,3.核销发券)**/ @io.swagger.annotations.ApiModelProperty(value="发券方式(1.主动领取,2.停车发券,3.核销发券)",name="sendType") private Integer sendType; + /*0:有效 1:无效**/ + @io.swagger.annotations.ApiModelProperty(value="0:有效 1:无效",name="status") + private Integer status; + /***/ + @io.swagger.annotations.ApiModelProperty(value="",name="sendStartTime") + private Date sendStartTime; + /***/ + @io.swagger.annotations.ApiModelProperty(value="",name="sendEndTime") + private Date sendEndTime; /*创建时间**/ @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") private Date createDate; @@ -101,6 +111,24 @@ public class WxCouponSend implements Serializable { public void setSendType(Integer _sendType) { sendType = _sendType; } + public Integer getStatus() { + return status; + } + public void setStatus(Integer _status) { + status = _status; + } + public Date getSendStartTime() { + return sendStartTime; + } + public void setSendStartTime(Date _sendStartTime) { + sendStartTime = _sendStartTime; + } + public Date getSendEndTime() { + return sendEndTime; + } + public void setSendEndTime(Date _sendEndTime) { + sendEndTime = _sendEndTime; + } public Date getCreateDate() { return createDate; } @@ -119,15 +147,18 @@ public class WxCouponSend implements Serializable { public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") - ,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC") - ,MerchantId_ASC("`merchantId` ASC"),MerchantId_DESC("`merchantId` DESC") - ,CouponId_ASC("`couponId` ASC"),CouponId_DESC("`couponId` DESC") - ,Type_ASC("`type` ASC"),Type_DESC("`type` DESC") - ,Title_ASC("`title` ASC"),Title_DESC("`title` DESC") - ,SendType_ASC("`sendType` ASC"),SendType_DESC("`sendType` DESC") - ,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC") - ,UpdateDate_ASC("`updateDate` ASC"),UpdateDate_DESC("`updateDate` DESC") - ; + ,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC") + ,MerchantId_ASC("`merchantId` ASC"),MerchantId_DESC("`merchantId` DESC") + ,CouponId_ASC("`couponId` ASC"),CouponId_DESC("`couponId` DESC") + ,Type_ASC("`type` ASC"),Type_DESC("`type` DESC") + ,Title_ASC("`title` ASC"),Title_DESC("`title` DESC") + ,SendType_ASC("`sendType` ASC"),SendType_DESC("`sendType` DESC") + ,Status_ASC("`status` ASC"),Status_DESC("`status` DESC") + ,SendStartTime_ASC("`sendStartTime` ASC"),SendStartTime_DESC("`sendStartTime` DESC") + ,SendEndTime_ASC("`sendEndTime` ASC"),SendEndTime_DESC("`sendEndTime` DESC") + ,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC") + ,UpdateDate_ASC("`updateDate` ASC"),UpdateDate_DESC("`updateDate` DESC") + ; private String value; Field(String value){ this.value = value; @@ -143,7 +174,7 @@ public class WxCouponSend implements Serializable { return this.getValue(); } } - + public void setSortColumns(WxCouponSend.Field... fields) { if (fields == null || fields.length == 0) { @@ -159,9 +190,9 @@ public class WxCouponSend implements Serializable { sb.append(","); sb.append(fields[k].toString()); } - + } - + public void setSortColumns(String sortColumns) { if (sortColumns == null || "".equals(sortColumns.trim())) { diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java b/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java index 19f28ca54..0aab3e78d 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java @@ -37,9 +37,18 @@ public class WxMerchant implements Serializable { public void setIds(List ids) { this.ids = ids; } - - - + + @Transient + private List userids; + @Transient + private List shopids; + + @Transient + private List shops; + + @Transient + private List bUsers; + /*租户ID**/ @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; @@ -152,6 +161,38 @@ public class WxMerchant implements Serializable { this.status = status; } + public List getUserids() { + return userids; + } + + public void setUserids(List userids) { + this.userids = userids; + } + + public List getShopids() { + return shopids; + } + + public void setShopids(List shopids) { + this.shopids = shopids; + } + + public List getShops() { + return shops; + } + + public void setShops(List shops) { + this.shops = shops; + } + + public List getbUsers() { + return bUsers; + } + + public void setbUsers(List bUsers) { + this.bUsers = bUsers; + } + public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxOrder.java b/mallinkService/src/main/java/com/simple/domain/po/WxOrder.java index 4959b3331..0190585d1 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxOrder.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxOrder.java @@ -51,6 +51,9 @@ public class WxOrder implements Serializable { /*c端用户id**/ @io.swagger.annotations.ApiModelProperty(value="c端用户id",name="cUserId") private Long cUserId; + /*商户ID**/ + @io.swagger.annotations.ApiModelProperty(value="商户ID",name="merchantId") + private Long merchantId; /*操作券B端小程序用户ID**/ @io.swagger.annotations.ApiModelProperty(value="操作券B端小程序用户ID",name="bUserId") private Long bUserId; @@ -93,6 +96,12 @@ public class WxOrder implements Serializable { public void setCUserId(Long _cUserId) { cUserId = _cUserId; } + public Long getMerchantId() { + return merchantId; + } + public void setMerchantId(Long _merchantId) { + merchantId = _merchantId; + } public Long getBUserId() { return bUserId; } @@ -150,6 +159,7 @@ public class WxOrder implements Serializable { ,OrderNumber_ASC("`orderNumber` ASC"),OrderNumber_DESC("`orderNumber` DESC") ,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC") ,CUserId_ASC("`cUserId` ASC"),CUserId_DESC("`cUserId` DESC") + ,MerchantId_ASC("`merchantId` ASC"),MerchantId_DESC("`merchantId` DESC") ,BUserId_ASC("`bUserId` ASC"),BUserId_DESC("`bUserId` DESC") ,PaymentType_ASC("`paymentType` ASC"),PaymentType_DESC("`paymentType` DESC") ,Payment_ASC("`payment` ASC"),Payment_DESC("`payment` DESC") diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxPark.java b/mallinkService/src/main/java/com/simple/domain/po/WxPark.java index e5bea1113..7a04b90f1 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxPark.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxPark.java @@ -16,7 +16,7 @@ public class WxPark implements Serializable { protected Long id; @Transient - protected List ids; + protected List ids; @Transient protected String sortColumns; @@ -32,10 +32,11 @@ public class WxPark implements Serializable { return sortColumns; } - public List getIds() { + public List getIds() { return ids; } - public void setIds(List ids) { + + public void setIds(List ids) { this.ids = ids; } @@ -59,6 +60,9 @@ public class WxPark implements Serializable { /*更新时间**/ @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private Date updateDate; + /*第三方停车场ID**/ + @io.swagger.annotations.ApiModelProperty(value="第三方停车场ID",name="parkId") + private String parkId; /*厂商类型(1:ETCP,2:停简单)**/ @io.swagger.annotations.ApiModelProperty(value="厂商类型(1:ETCP,2:停简单)",name="vendorType") private Integer vendorType; @@ -101,6 +105,12 @@ public class WxPark implements Serializable { public void setUpdateDate(Date _updateDate) { updateDate = _updateDate; } + public String getParkId() { + return parkId; + } + public void setParkId(String _parkId) { + parkId = _parkId; + } public Integer getVendorType() { return vendorType; } @@ -125,6 +135,7 @@ public class WxPark implements Serializable { ,EntryExit_ASC("`entryExit` ASC"),EntryExit_DESC("`entryExit` DESC") ,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC") ,UpdateDate_ASC("`updateDate` ASC"),UpdateDate_DESC("`updateDate` DESC") + ,ParkId_ASC("`parkId` ASC"),ParkId_DESC("`parkId` DESC") ,VendorType_ASC("`vendorType` ASC"),VendorType_DESC("`vendorType` DESC") ,VendorParams_ASC("`vendorParams` ASC"),VendorParams_DESC("`vendorParams` DESC") ; diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java b/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java index dc7b669fa..d7b697bae 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java @@ -16,7 +16,7 @@ public class WxPayOrder implements Serializable { protected Long id; @Transient - protected List ids; + protected List ids; @Transient protected String sortColumns; @@ -32,17 +32,18 @@ public class WxPayOrder implements Serializable { return sortColumns; } - public List getIds() { + public List getIds() { return ids; } - public void setIds(List ids) { + + public void setIds(List ids) { this.ids = ids; } - /***/ - @io.swagger.annotations.ApiModelProperty(value="",name="tenantId") + /*租户ID**/ + @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; /*创建时间**/ @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime") @@ -62,12 +63,12 @@ public class WxPayOrder implements Serializable { /*支付金额(分)**/ @io.swagger.annotations.ApiModelProperty(value="支付金额(分)",name="payAmount") private Integer payAmount; - /*支付发起时间(秒)**/ - @io.swagger.annotations.ApiModelProperty(value="支付发起时间(秒)",name="payTimeStart") - private Integer payTimeStart; - /*支付结束时间(秒)**/ - @io.swagger.annotations.ApiModelProperty(value="支付结束时间(秒)",name="payTimeEnd") - private Integer payTimeEnd; + /*支付发起时间**/ + @io.swagger.annotations.ApiModelProperty(value="支付发起时间",name="payTimeStart") + private Date payTimeStart; + /*支付结束时间**/ + @io.swagger.annotations.ApiModelProperty(value="支付结束时间",name="payTimeEnd") + private Date payTimeEnd; /*微信生成的订单号**/ @io.swagger.annotations.ApiModelProperty(value="微信生成的订单号",name="transactionId") private String transactionId; @@ -125,16 +126,16 @@ public class WxPayOrder implements Serializable { public void setPayAmount(Integer _payAmount) { payAmount = _payAmount; } - public Integer getPayTimeStart() { + public Date getPayTimeStart() { return payTimeStart; } - public void setPayTimeStart(Integer _payTimeStart) { + public void setPayTimeStart(Date _payTimeStart) { payTimeStart = _payTimeStart; } - public Integer getPayTimeEnd() { + public Date getPayTimeEnd() { return payTimeEnd; } - public void setPayTimeEnd(Integer _payTimeEnd) { + public void setPayTimeEnd(Date _payTimeEnd) { payTimeEnd = _payTimeEnd; } public String getTransactionId() { diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingOrder.java b/mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingOrder.java new file mode 100644 index 000000000..f25c11f52 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingOrder.java @@ -0,0 +1,222 @@ +package com.simple.domain.po; + +import javax.persistence.*; +import java.util.*; +import java.math.*; +import javax.persistence.Transient; +import java.util.List; +import javax.persistence.Id; +import java.io.Serializable; + +@Table(name = "wx_profit_sharing_order") +public class WxProfitSharingOrder implements Serializable { + private static final long serialVersionUID = 1L; + + @Id + protected Long id; + + @Transient + protected List ids; + @Transient + protected String sortColumns; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getSortColumns() { + return sortColumns; + } + + public List getIds() { + return ids; + } + + public void setIds(List ids) { + this.ids = ids; + } + + + + /*接收方(商场租户id)**/ + @io.swagger.annotations.ApiModelProperty(value="接收方(商场租户id)",name="tenantId") + private String tenantId; + /*商户ID**/ + @io.swagger.annotations.ApiModelProperty(value="商户ID",name="merchantId") + private String merchantId; + /*订单ID**/ + @io.swagger.annotations.ApiModelProperty(value="订单ID",name="orderId") + private String orderId; + /*分账总金额(分)**/ + @io.swagger.annotations.ApiModelProperty(value="分账总金额(分)",name="payAmount") + private Integer payAmount; + /*分账结束时间(秒)**/ + @io.swagger.annotations.ApiModelProperty(value="分账结束时间(秒)",name="payTimeEnd") + private Date payTimeEnd; + /*分账发起时间(秒)**/ + @io.swagger.annotations.ApiModelProperty(value="分账发起时间(秒)",name="payTimeStart") + private Date payTimeStart; + /*微信生成的支付单号**/ + @io.swagger.annotations.ApiModelProperty(value="微信生成的支付单号",name="transactionId") + private String transactionId; + /*微信生成分账单号**/ + @io.swagger.annotations.ApiModelProperty(value="微信生成分账单号",name="sharingOrderId") + private String sharingOrderId; + /*分账申请失败原因**/ + @io.swagger.annotations.ApiModelProperty(value="分账申请失败原因",name="errorMsg") + private String errorMsg; + /*分账状态:1=提交订单失败, 2=提交业务失败,3=受理成功,4=处理中,5=处理完成,6=处理失败, 已关单,(1-2)为API返回,2具体信息在error_des中,(2-6)为查询返回**/ + @io.swagger.annotations.ApiModelProperty(value="分账状态:1=提交订单失败, 2=提交业务失败,3=受理成功,4=处理中,5=处理完成,6=处理失败, 已关单,(1-2)为API返回,2具体信息在error_des中,(2-6)为查询返回",name="sharingStatus") + private Integer sharingStatus; + /*更新时间**/ + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateTime") + private Date updateTime; + /*创建时间**/ + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime") + private Date createTime; + public String getTenantId() { + return tenantId; + } + public void setTenantId(String _tenantId) { + tenantId = _tenantId; + } + public String getMerchantId() { + return merchantId; + } + public void setMerchantId(String _merchantId) { + merchantId = _merchantId; + } + public String getOrderId() { + return orderId; + } + public void setOrderId(String _orderId) { + orderId = _orderId; + } + public Integer getPayAmount() { + return payAmount; + } + public void setPayAmount(Integer _payAmount) { + payAmount = _payAmount; + } + public Date getPayTimeEnd() { + return payTimeEnd; + } + public void setPayTimeEnd(Date _payTimeEnd) { + payTimeEnd = _payTimeEnd; + } + public Date getPayTimeStart() { + return payTimeStart; + } + public void setPayTimeStart(Date _payTimeStart) { + payTimeStart = _payTimeStart; + } + public String getTransactionId() { + return transactionId; + } + public void setTransactionId(String _transactionId) { + transactionId = _transactionId; + } + public String getSharingOrderId() { + return sharingOrderId; + } + public void setSharingOrderId(String _sharingOrderId) { + sharingOrderId = _sharingOrderId; + } + public String getErrorMsg() { + return errorMsg; + } + public void setErrorMsg(String _errorMsg) { + errorMsg = _errorMsg; + } + public Integer getSharingStatus() { + return sharingStatus; + } + public void setSharingStatus(Integer _sharingStatus) { + sharingStatus = _sharingStatus; + } + public Date getUpdateTime() { + return updateTime; + } + public void setUpdateTime(Date _updateTime) { + updateTime = _updateTime; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date _createTime) { + createTime = _createTime; + } + + + + public static enum Field + { + Id_ASC("`id` ASC"),Id_DESC("`id` DESC") + ,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC") + ,MerchantId_ASC("`merchantId` ASC"),MerchantId_DESC("`merchantId` DESC") + ,OrderId_ASC("`orderId` ASC"),OrderId_DESC("`orderId` DESC") + ,PayAmount_ASC("`payAmount` ASC"),PayAmount_DESC("`payAmount` DESC") + ,PayTimeEnd_ASC("`payTimeEnd` ASC"),PayTimeEnd_DESC("`payTimeEnd` DESC") + ,PayTimeStart_ASC("`payTimeStart` ASC"),PayTimeStart_DESC("`payTimeStart` DESC") + ,TransactionId_ASC("`transactionId` ASC"),TransactionId_DESC("`transactionId` DESC") + ,SharingOrderId_ASC("`sharingOrderId` ASC"),SharingOrderId_DESC("`sharingOrderId` DESC") + ,ErrorMsg_ASC("`errorMsg` ASC"),ErrorMsg_DESC("`errorMsg` DESC") + ,SharingStatus_ASC("`sharingStatus` ASC"),SharingStatus_DESC("`sharingStatus` DESC") + ,UpdateTime_ASC("`updateTime` ASC"),UpdateTime_DESC("`updateTime` DESC") + ,CreateTime_ASC("`createTime` ASC"),CreateTime_DESC("`createTime` DESC") + ; + private String value; + Field(String value){ + this.value = value; + } + public String getValue() { + return value; + } + public void setCol(String value) { + this.value = value; + } + @Override + public String toString() { + return this.getValue(); + } + } + + public void setSortColumns(WxProfitSharingOrder.Field... fields) + { + if (fields == null || fields.length == 0) { + return; + } + for (int k = 0; k < fields.length; k++) { + if (fields[k] == null) { + return; + } + } + StringBuilder sb = new StringBuilder(fields[0].toString()); + for (int k = 1; k < fields.length; k++) { + sb.append(","); + sb.append(fields[k].toString()); + } + + } + + public void setSortColumns(String sortColumns) + { + if (sortColumns == null || "".equals(sortColumns.trim())) { + return; + } + if (sortColumns.contains(",")) { + String[] cols = sortColumns.split(","); + java.util.List fList = new java.util.ArrayList(); + for (int k = 0; k < cols.length; k++) { + fList.add(Field.valueOf(cols[k])); + } + this.setSortColumns(fList.toArray(new Field[fList.size()])); + } else { + this.setSortColumns(Field.valueOf(sortColumns)); + } + } +} diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingReceiver.java b/mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingReceiver.java new file mode 100644 index 000000000..57f8e7f64 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingReceiver.java @@ -0,0 +1,202 @@ +package com.simple.domain.po; + +import javax.persistence.*; +import java.util.*; +import java.math.*; +import javax.persistence.Transient; +import java.util.List; +import javax.persistence.Id; +import java.io.Serializable; + +@Table(name = "wx_profit_sharing_receiver") +public class WxProfitSharingReceiver implements Serializable { + private static final long serialVersionUID = 1L; + + @Id + protected Long id; + + @Transient + protected List ids; + @Transient + protected String sortColumns; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getSortColumns() { + return sortColumns; + } + + public List getIds() { + return ids; + } + + public void setIds(List ids) { + this.ids = ids; + } + + + + /*商户ID**/ + @io.swagger.annotations.ApiModelProperty(value="商户ID",name="merchantId") + private String merchantId; + /*分账接收方类型,1 = MERCHANT_ID(商户 ID) 2 = PERSONAL_WECHATID(个人微信号) 3 = PERSONAL_OPENID(个人openid(由父商 户 APPID 转换得到) 4 = PERSONAL_SUB_OPENID(个人 sub_openid(由子商户 APPID 转换得到))**/ + @io.swagger.annotations.ApiModelProperty(value="分账接收方类型,1 = MERCHANT_ID(商户 ID) 2 = PERSONAL_WECHATID(个人微信号) 3 = PERSONAL_OPENID(个人openid(由父商 户 APPID 转换得到) 4 = PERSONAL_SUB_OPENID(个人 sub_openid(由子商户 APPID 转换得到))",name="receiverType") + private Integer receiverType; + /*分账接收方账号,见接收方类型**/ + @io.swagger.annotations.ApiModelProperty(value="分账接收方账号,见接收方类型",name="receiverAccount") + private String receiverAccount; + /*分款接受方说明**/ + @io.swagger.annotations.ApiModelProperty(value="分款接受方说明",name="receiverComments") + private String receiverComments; + /***/ + @io.swagger.annotations.ApiModelProperty(value="",name="createTime") + private Date createTime; + /***/ + @io.swagger.annotations.ApiModelProperty(value="",name="updateTime") + private Date updateTime; + /*分账类型:1-服务商户分账,2-商户转入银行卡**/ + @io.swagger.annotations.ApiModelProperty(value="分账类型:1-服务商户分账,2-商户转入银行卡",name="sharingType") + private Integer sharingType; + /***/ + @io.swagger.annotations.ApiModelProperty(value="",name="bankNo") + private String bankNo; + /***/ + @io.swagger.annotations.ApiModelProperty(value="",name="trueName") + private String trueName; + /***/ + @io.swagger.annotations.ApiModelProperty(value="",name="bankCode") + private String bankCode; + public String getMerchantId() { + return merchantId; + } + public void setMerchantId(String _merchantId) { + merchantId = _merchantId; + } + public Integer getReceiverType() { + return receiverType; + } + public void setReceiverType(Integer _receiverType) { + receiverType = _receiverType; + } + public String getReceiverAccount() { + return receiverAccount; + } + public void setReceiverAccount(String _receiverAccount) { + receiverAccount = _receiverAccount; + } + public String getReceiverComments() { + return receiverComments; + } + public void setReceiverComments(String _receiverComments) { + receiverComments = _receiverComments; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date _createTime) { + createTime = _createTime; + } + public Date getUpdateTime() { + return updateTime; + } + public void setUpdateTime(Date _updateTime) { + updateTime = _updateTime; + } + public Integer getSharingType() { + return sharingType; + } + public void setSharingType(Integer _sharingType) { + sharingType = _sharingType; + } + public String getBankNo() { + return bankNo; + } + public void setBankNo(String _bankNo) { + bankNo = _bankNo; + } + public String getTrueName() { + return trueName; + } + public void setTrueName(String _trueName) { + trueName = _trueName; + } + public String getBankCode() { + return bankCode; + } + public void setBankCode(String _bankCode) { + bankCode = _bankCode; + } + + + + public static enum Field + { + Id_ASC("`id` ASC"),Id_DESC("`id` DESC") + ,MerchantId_ASC("`merchantId` ASC"),MerchantId_DESC("`merchantId` DESC") + ,ReceiverType_ASC("`receiverType` ASC"),ReceiverType_DESC("`receiverType` DESC") + ,ReceiverAccount_ASC("`receiverAccount` ASC"),ReceiverAccount_DESC("`receiverAccount` DESC") + ,ReceiverComments_ASC("`receiverComments` ASC"),ReceiverComments_DESC("`receiverComments` DESC") + ,CreateTime_ASC("`createTime` ASC"),CreateTime_DESC("`createTime` DESC") + ,UpdateTime_ASC("`updateTime` ASC"),UpdateTime_DESC("`updateTime` DESC") + ,SharingType_ASC("`sharingType` ASC"),SharingType_DESC("`sharingType` DESC") + ,BankNo_ASC("`bankNo` ASC"),BankNo_DESC("`bankNo` DESC") + ,TrueName_ASC("`trueName` ASC"),TrueName_DESC("`trueName` DESC") + ,BankCode_ASC("`bankCode` ASC"),BankCode_DESC("`bankCode` DESC") + ; + private String value; + Field(String value){ + this.value = value; + } + public String getValue() { + return value; + } + public void setCol(String value) { + this.value = value; + } + @Override + public String toString() { + return this.getValue(); + } + } + + public void setSortColumns(WxProfitSharingReceiver.Field... fields) + { + if (fields == null || fields.length == 0) { + return; + } + for (int k = 0; k < fields.length; k++) { + if (fields[k] == null) { + return; + } + } + StringBuilder sb = new StringBuilder(fields[0].toString()); + for (int k = 1; k < fields.length; k++) { + sb.append(","); + sb.append(fields[k].toString()); + } + + } + + public void setSortColumns(String sortColumns) + { + if (sortColumns == null || "".equals(sortColumns.trim())) { + return; + } + if (sortColumns.contains(",")) { + String[] cols = sortColumns.split(","); + java.util.List fList = new java.util.ArrayList(); + for (int k = 0; k < cols.length; k++) { + fList.add(Field.valueOf(cols[k])); + } + this.setSortColumns(fList.toArray(new Field[fList.size()])); + } else { + this.setSortColumns(Field.valueOf(sortColumns)); + } + } +} diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingResult.java b/mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingResult.java new file mode 100644 index 000000000..23b40c987 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingResult.java @@ -0,0 +1,182 @@ +package com.simple.domain.po; + +import javax.persistence.*; +import java.util.*; +import java.math.*; +import javax.persistence.Transient; +import java.util.List; +import javax.persistence.Id; +import java.io.Serializable; + +@Table(name = "wx_profit_sharing_result") +public class WxProfitSharingResult implements Serializable { + private static final long serialVersionUID = 1L; + + @Id + protected Long id; + + @Transient + protected List ids; + @Transient + protected String sortColumns; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getSortColumns() { + return sortColumns; + } + + public List getIds() { + return ids; + } + + public void setIds(List ids) { + this.ids = ids; + } + + + + /*分账订单号**/ + @io.swagger.annotations.ApiModelProperty(value="分账订单号",name="sharingOrderId") + private String sharingOrderId; + /*分账接收方id**/ + @io.swagger.annotations.ApiModelProperty(value="分账接收方id",name="sharingReceiverId") + private String sharingReceiverId; + /*分账金额(分)**/ + @io.swagger.annotations.ApiModelProperty(value="分账金额(分)",name="payAmount") + private Integer payAmount; + /*更新时间**/ + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateTime") + private Date updateTime; + /*创建时间**/ + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime") + private Date createTime; + /*分账结果状态:1-PENDING:待分账 2-SUCCESS:分账成功 3-ADJUST:分账失败待调账 4-RETURNED:已转回分账方 5-CLOSED: 已关闭 **/ + @io.swagger.annotations.ApiModelProperty(value="分账结果状态:1-PENDING:待分账 2-SUCCESS:分账成功 3-ADJUST:分账失败待调账 4-RETURNED:已转回分账方 5-CLOSED: 已关闭 ",name="sharingStatus") + private Integer sharingStatus; + /*微信返回的分账完成时间**/ + @io.swagger.annotations.ApiModelProperty(value="微信返回的分账完成时间",name="finishTime") + private String finishTime; + /*微信返回的失败原因**/ + @io.swagger.annotations.ApiModelProperty(value="微信返回的失败原因",name="failedReason") + private String failedReason; + public String getSharingOrderId() { + return sharingOrderId; + } + public void setSharingOrderId(String _sharingOrderId) { + sharingOrderId = _sharingOrderId; + } + public String getSharingReceiverId() { + return sharingReceiverId; + } + public void setSharingReceiverId(String _sharingReceiverId) { + sharingReceiverId = _sharingReceiverId; + } + public Integer getPayAmount() { + return payAmount; + } + public void setPayAmount(Integer _payAmount) { + payAmount = _payAmount; + } + public Date getUpdateTime() { + return updateTime; + } + public void setUpdateTime(Date _updateTime) { + updateTime = _updateTime; + } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date _createTime) { + createTime = _createTime; + } + public Integer getSharingStatus() { + return sharingStatus; + } + public void setSharingStatus(Integer _sharingStatus) { + sharingStatus = _sharingStatus; + } + public String getFinishTime() { + return finishTime; + } + public void setFinishTime(String _finishTime) { + finishTime = _finishTime; + } + public String getFailedReason() { + return failedReason; + } + public void setFailedReason(String _failedReason) { + failedReason = _failedReason; + } + + + + public static enum Field + { + Id_ASC("`id` ASC"),Id_DESC("`id` DESC") + ,SharingOrderId_ASC("`sharingOrderId` ASC"),SharingOrderId_DESC("`sharingOrderId` DESC") + ,SharingReceiverId_ASC("`sharingReceiverId` ASC"),SharingReceiverId_DESC("`sharingReceiverId` DESC") + ,PayAmount_ASC("`payAmount` ASC"),PayAmount_DESC("`payAmount` DESC") + ,UpdateTime_ASC("`updateTime` ASC"),UpdateTime_DESC("`updateTime` DESC") + ,CreateTime_ASC("`createTime` ASC"),CreateTime_DESC("`createTime` DESC") + ,SharingStatus_ASC("`sharingStatus` ASC"),SharingStatus_DESC("`sharingStatus` DESC") + ,FinishTime_ASC("`finishTime` ASC"),FinishTime_DESC("`finishTime` DESC") + ,FailedReason_ASC("`failedReason` ASC"),FailedReason_DESC("`failedReason` DESC") + ; + private String value; + Field(String value){ + this.value = value; + } + public String getValue() { + return value; + } + public void setCol(String value) { + this.value = value; + } + @Override + public String toString() { + return this.getValue(); + } + } + + public void setSortColumns(WxProfitSharingResult.Field... fields) + { + if (fields == null || fields.length == 0) { + return; + } + for (int k = 0; k < fields.length; k++) { + if (fields[k] == null) { + return; + } + } + StringBuilder sb = new StringBuilder(fields[0].toString()); + for (int k = 1; k < fields.length; k++) { + sb.append(","); + sb.append(fields[k].toString()); + } + + } + + public void setSortColumns(String sortColumns) + { + if (sortColumns == null || "".equals(sortColumns.trim())) { + return; + } + if (sortColumns.contains(",")) { + String[] cols = sortColumns.split(","); + java.util.List fList = new java.util.ArrayList(); + for (int k = 0; k < cols.length; k++) { + fList.add(Field.valueOf(cols[k])); + } + this.setSortColumns(fList.toArray(new Field[fList.size()])); + } else { + this.setSortColumns(Field.valueOf(sortColumns)); + } + } +} diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxRefundOrder.java b/mallinkService/src/main/java/com/simple/domain/po/WxRefundOrder.java index 27f5a1e4d..c576f17cc 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxRefundOrder.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxRefundOrder.java @@ -71,10 +71,10 @@ public class WxRefundOrder implements Serializable { private Integer refundFee; /*退款发起时间(秒)**/ @io.swagger.annotations.ApiModelProperty(value="退款发起时间(秒)",name="refundTimeStart") - private Integer refundTimeStart; + private Date refundTimeStart; /*退款结束时间(秒)**/ @io.swagger.annotations.ApiModelProperty(value="退款结束时间(秒)",name="refundTimeEnd") - private Integer refundTimeEnd; + private Date refundTimeEnd; /*支付渠道: 0-微信 1-支付宝 2-银联 **/ @io.swagger.annotations.ApiModelProperty(value="支付渠道: 0-微信 1-支付宝 2-银联 ",name="refundVendor") private Integer refundVendor; @@ -141,16 +141,16 @@ public class WxRefundOrder implements Serializable { public void setRefundFee(Integer _refundFee) { refundFee = _refundFee; } - public Integer getRefundTimeStart() { + public Date getRefundTimeStart() { return refundTimeStart; } - public void setRefundTimeStart(Integer _refundTimeStart) { + public void setRefundTimeStart(Date _refundTimeStart) { refundTimeStart = _refundTimeStart; } - public Integer getRefundTimeEnd() { + public Date getRefundTimeEnd() { return refundTimeEnd; } - public void setRefundTimeEnd(Integer _refundTimeEnd) { + public void setRefundTimeEnd(Date _refundTimeEnd) { refundTimeEnd = _refundTimeEnd; } public Integer getRefundVendor() { diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxShop.java b/mallinkService/src/main/java/com/simple/domain/po/WxShop.java index daf2dd842..fc1588d4c 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxShop.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxShop.java @@ -1,12 +1,12 @@ package com.simple.domain.po; -import javax.persistence.*; -import java.util.*; -import java.math.*; -import javax.persistence.Transient; -import java.util.List; import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; @Table(name = "wx_shop") public class WxShop implements Serializable { @@ -86,6 +86,10 @@ public class WxShop implements Serializable { /*更新时间**/ @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private Date updateDate; + + @io.swagger.annotations.ApiModelProperty(value="图片",name="imgUrl") + private String imgUrl; + public String getTenantId() { return tenantId; } @@ -177,7 +181,13 @@ public class WxShop implements Serializable { updateDate = _updateDate; } + public String getImgUrl() { + return imgUrl; + } + public void setImgUrl(String imgUrl) { + this.imgUrl = imgUrl; + } public static enum Field { diff --git a/mallinkService/src/main/java/com/simple/domain/vo/OrderVo.java b/mallinkService/src/main/java/com/simple/domain/vo/OrderVo.java index 8d0ce8953..4ff8f3e6a 100644 --- a/mallinkService/src/main/java/com/simple/domain/vo/OrderVo.java +++ b/mallinkService/src/main/java/com/simple/domain/vo/OrderVo.java @@ -8,49 +8,60 @@ public class OrderVo implements Serializable { /*租户ID**/ @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; + /*商户ID**/ + @io.swagger.annotations.ApiModelProperty(value="商户ID",name="merchantId") + private Long merchantId; /*订单ID**/ @io.swagger.annotations.ApiModelProperty(value="订单ID",name="orderId") private Long orderId; /*卡券ID**/ @io.swagger.annotations.ApiModelProperty(value="卡券ID",name="couponId") private Long couponId; - /*商户ID**/ - @io.swagger.annotations.ApiModelProperty(value="商户ID",name="merchantId") - private Long merchantId; /*c端用户id**/ @io.swagger.annotations.ApiModelProperty(value="c端用户id",name="cUserId") private Long cUserId; + /*b端用户id**/ + @io.swagger.annotations.ApiModelProperty(value="b端用户id",name="bUserId") + private Long bUserId; /*订单状态**/ - @io.swagger.annotations.ApiModelProperty(value="订单状态",name="status") - private Integer status; + @io.swagger.annotations.ApiModelProperty(value="订单状态",name="orderStatus") + private Integer orderStatus; /*券状态**/ @io.swagger.annotations.ApiModelProperty(value="券状态",name="status") private Integer couponStatus; - public String getTenantId() { + public String getTenantId() { return tenantId; } - public void setTenantId(String _tenantId) { - tenantId = _tenantId; + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; } - public Long getOrderId() { - return orderId; + + public Long getMerchantId() { + return merchantId; } - public void setOrderId(Long _orderId) { - orderId = _orderId; + + public void setMerchantId(Long merchantId) { + this.merchantId = merchantId; } - public Long getCouponId() { - return couponId; + + public Long getOrderId() { + return orderId; } - public void setCouponId(Long _couponId) { - couponId = _couponId; + + public void setOrderId(Long orderId) { + this.orderId = orderId; } - public Long getMerchantId() { - return merchantId; + + public Long getCouponId() { + return couponId; } - public void setMerchantId(Long _merchantId) { - merchantId = _merchantId; + + public void setCouponId(Long couponId) { + this.couponId = couponId; } + public Long getcUserId() { return cUserId; } @@ -59,12 +70,20 @@ public class OrderVo implements Serializable { this.cUserId = cUserId; } - public Integer getStatus() { - return status; + public Long getbUserId() { + return bUserId; + } + + public void setbUserId(Long bUserId) { + this.bUserId = bUserId; + } + + public Integer getOrderStatus() { + return orderStatus; } - public void setStatus(Integer status) { - this.status = status; + public void setOrderStatus(Integer orderStatus) { + this.orderStatus = orderStatus; } public Integer getCouponStatus() { diff --git a/mallinkService/src/main/java/com/simple/enums/EnumCarCmd.java b/mallinkService/src/main/java/com/simple/enums/EnumCarCmd.java new file mode 100644 index 000000000..5cdf04a47 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/enums/EnumCarCmd.java @@ -0,0 +1,41 @@ +package com.simple.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumCarCmd { + + CAR_ETCP_LOGIN(600, "ETCP"), + CAR_ETCP_CALLBACK_PARK_IN(601, "ETCP入场通知"), + CAR_ETCP_CALLBACK_PARK_OUT(602, "ETCP出场通知"), + CAR_ETCP_CALLBACK_UNBIND(603, "ETCP车辆解绑通知"), + CAR_ETCP_CALLBACK_PAY_MANUAL(604, "主动支付结果通知"), + CAR_TJD_CALLBACK_PARK_IN(610, "停简单入场通知"), + CAR_TJD_CALLBACK_PARK_OUT(611, "停简单出场通知"), + ; + + public static EnumCarCmd getEnum(Integer code) { + for (EnumCarCmd value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumCarCmd(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/simple/enums/EnumPayDomain.java b/mallinkService/src/main/java/com/simple/enums/EnumPayDomain.java new file mode 100644 index 000000000..a8bbe060b --- /dev/null +++ b/mallinkService/src/main/java/com/simple/enums/EnumPayDomain.java @@ -0,0 +1,35 @@ +package com.simple.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumPayDomain { + + PAY_DOMAIN_MASTER_ACCOUNT_ID(8, ""), + PAY_DOMAIN_MASTER_APPINFO_ID(8, ""); + + public static EnumPayDomain getEnum(Integer code) { + for (EnumPayDomain value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumPayDomain(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/simple/enums/EnumPayStatus.java b/mallinkService/src/main/java/com/simple/enums/EnumPayStatus.java index 5a06c1bd4..2f2f89621 100644 --- a/mallinkService/src/main/java/com/simple/enums/EnumPayStatus.java +++ b/mallinkService/src/main/java/com/simple/enums/EnumPayStatus.java @@ -8,6 +8,7 @@ public enum EnumPayStatus { PAY_WAY_WAIT(0, "支付中"), PAY_WAY_SUCCESS(1, "支付成功"), PAY_WAY_FAIL(2, "支付失败"), + PAY_WAY_CANCEL(3, "取消支付") ; public static EnumPayStatus getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/simple/enums/EnumProfitSharingReceiverType.java b/mallinkService/src/main/java/com/simple/enums/EnumProfitSharingReceiverType.java new file mode 100644 index 000000000..09fa151da --- /dev/null +++ b/mallinkService/src/main/java/com/simple/enums/EnumProfitSharingReceiverType.java @@ -0,0 +1,37 @@ +package com.simple.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumProfitSharingReceiverType { + PROFIT_SHARING_RECEIVER_MERCHANT_ID(1, "MERCHANT_ID"), + PROFIT_SHARING_RECEIVER_PERSONAL_WECHATID(2, "PERSONAL_WECHATID"), + PROFIT_SHARING_RECEIVER_PERSONAL_OPENID(3, "PERSONAL_OPENID"), + PROFIT_SHARING_RECEIVER_PERSONAL_SUB_OPENID(4, "PERSONAL_SUB_OPENID"), + ; + + public static EnumProfitSharingReceiverType getEnum(Integer code) { + for (EnumProfitSharingReceiverType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumProfitSharingReceiverType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/simple/enums/EnumProfitSharingStatus.java b/mallinkService/src/main/java/com/simple/enums/EnumProfitSharingStatus.java new file mode 100644 index 000000000..39f40f88e --- /dev/null +++ b/mallinkService/src/main/java/com/simple/enums/EnumProfitSharingStatus.java @@ -0,0 +1,40 @@ +package com.simple.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumProfitSharingStatus { + PROFIT_SHARING_UNKNOWN(-1, "未知"), + PROFIT_SHARING_REQ_FAILED(1, "提交订单失败"), + PROFIT_SHARING_APPLY_FAILED(2, "提交业务失败"), + PROFIT_SHARING_ACCEPTED(3, "受理成功"), + PROFIT_SHARING_PROCESSING(4, "处理中"), + PROFIT_SHARING_DONE(5, "处理完成"), + PROFIT_SHARING_FAILED(6, "处理失败"), + ; + + public static EnumProfitSharingStatus getEnum(Integer code) { + for (EnumProfitSharingStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumProfitSharingStatus(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCUserCarMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCUserCarMapper.java new file mode 100644 index 000000000..aa6a2780b --- /dev/null +++ b/mallinkService/src/main/java/com/simple/mapper/WxCUserCarMapper.java @@ -0,0 +1,17 @@ +package com.simple.mapper; + +import java.util.*; +import com.simple.common.CommonMapper; +import org.apache.ibatis.annotations.Param; +import com.simple.domain.po.WxCUserCar; + +public interface WxCUserCarMapper extends CommonMapper { + + List findList(WxCUserCar wxCUserCar); + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCUserCarsMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCUserCarsMapper.java deleted file mode 100644 index bbcaf9c38..000000000 --- a/mallinkService/src/main/java/com/simple/mapper/WxCUserCarsMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.simple.mapper; - -import java.util.*; -import com.simple.common.CommonMapper; -import org.apache.ibatis.annotations.Param; -import com.simple.domain.po.WxCUserCars; - -public interface WxCUserCarsMapper extends CommonMapper { - - List findList(WxCUserCars wxCUserCars); - - - - - - -} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogMapper.java new file mode 100644 index 000000000..e8017220f --- /dev/null +++ b/mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogMapper.java @@ -0,0 +1,17 @@ +package com.simple.mapper; + +import java.util.*; +import com.simple.common.CommonMapper; +import org.apache.ibatis.annotations.Param; +import com.simple.domain.po.WxCarCmdLog; + +public interface WxCarCmdLogMapper extends CommonMapper { + + List findList(WxCarCmdLog wxCarCmdLog); + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogsMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogsMapper.java deleted file mode 100644 index 44f6af535..000000000 --- a/mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogsMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.simple.mapper; - -import java.util.*; -import com.simple.common.CommonMapper; -import org.apache.ibatis.annotations.Param; -import com.simple.domain.po.WxCarCmdLogs; - -public interface WxCarCmdLogsMapper extends CommonMapper { - - List findList(WxCarCmdLogs wxCarCmdLogs); - - - - - - -} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCouponMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCouponMapper.java index a0c8168d1..55acf79f6 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxCouponMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/WxCouponMapper.java @@ -12,6 +12,8 @@ public interface WxCouponMapper extends CommonMapper { List findEnableList(WxCoupon wxCoupon); + List findCanSendList(WxCoupon record); + diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java index 0d35df6ad..2d0387bca 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java @@ -8,10 +8,4 @@ import com.simple.domain.po.WxCouponOrder; public interface WxCouponOrderMapper extends CommonMapper { List findList(WxCouponOrder wxCouponOrder); - - - - - - } diff --git a/mallinkService/src/main/java/com/simple/mapper/WxPayOrderMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxPayOrderMapper.java index c5bbdb30e..9f64bd266 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxPayOrderMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/WxPayOrderMapper.java @@ -5,7 +5,7 @@ import com.simple.common.CommonMapper; import org.apache.ibatis.annotations.Param; import com.simple.domain.po.WxPayOrder; -public interface WxPayOrderMapper extends CommonMapper { +public interface WxPayOrderMapper extends CommonMapper { List findList(WxPayOrder wxPayOrder); diff --git a/mallinkService/src/main/java/com/simple/mapper/WxProfitSharingOrderMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxProfitSharingOrderMapper.java new file mode 100644 index 000000000..924bf871a --- /dev/null +++ b/mallinkService/src/main/java/com/simple/mapper/WxProfitSharingOrderMapper.java @@ -0,0 +1,17 @@ +package com.simple.mapper; + +import java.util.*; +import com.simple.common.CommonMapper; +import org.apache.ibatis.annotations.Param; +import com.simple.domain.po.WxProfitSharingOrder; + +public interface WxProfitSharingOrderMapper extends CommonMapper { + + List findList(WxProfitSharingOrder wxProfitSharingOrder); + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxProfitSharingReceiverMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxProfitSharingReceiverMapper.java new file mode 100644 index 000000000..ecfc3c5b3 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/mapper/WxProfitSharingReceiverMapper.java @@ -0,0 +1,17 @@ +package com.simple.mapper; + +import java.util.*; +import com.simple.common.CommonMapper; +import org.apache.ibatis.annotations.Param; +import com.simple.domain.po.WxProfitSharingReceiver; + +public interface WxProfitSharingReceiverMapper extends CommonMapper { + + List findList(WxProfitSharingReceiver wxProfitSharingReceiver); + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxProfitSharingResultMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxProfitSharingResultMapper.java new file mode 100644 index 000000000..7ee92d407 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/mapper/WxProfitSharingResultMapper.java @@ -0,0 +1,17 @@ +package com.simple.mapper; + +import java.util.*; +import com.simple.common.CommonMapper; +import org.apache.ibatis.annotations.Param; +import com.simple.domain.po.WxProfitSharingResult; + +public interface WxProfitSharingResultMapper extends CommonMapper { + + List findList(WxProfitSharingResult wxProfitSharingResult); + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/pay/WxPayment.java b/mallinkService/src/main/java/com/simple/pay/WxPayment.java index 63b222451..215e4bb5d 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxPayment.java +++ b/mallinkService/src/main/java/com/simple/pay/WxPayment.java @@ -153,6 +153,26 @@ public class WxPayment { } + /** + * 小程序统一下单后二次签名 + * + * @param appId + * @param timestamp + * @param prepay_id + * @param paternerKey + * @return + */ + public static Map buildWeappSecondSignMap(String appId, String timestamp, String prepay_id, String paternerKey) { + Map params = new HashMap(); + Map sighMap = MapUtil.getOrderMap(); + sighMap.put("appId", appId); + sighMap.put("timeStamp", timestamp); + sighMap.put("package", "prepay_id="+prepay_id); + sighMap.put("signType", "MD5"); + + return buildSignAfterParasMap(params, paternerKey); + } + /** * 关闭订单 * diff --git a/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java b/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java new file mode 100644 index 000000000..a308ad0c6 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java @@ -0,0 +1,48 @@ +package com.simple.pay; + +import java.util.HashMap; +import java.util.Map; + +import com.simple.utils.HttpUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class WxProfitSharing { + protected static Logger log = LoggerFactory.getLogger(WxProfitSharing.class); + + // 分账接口 + private static final String PROFIT_SHARING_URL = "https://api.mch.weixin.qq.com/secapi/pay/profitsharing"; + // 查询接口 + private static final String PROFIT_SHARING_QUERY_URL = "https://api.mch.weixin.qq.com/pay/profitsharingquery"; + // 添加分账账户 + private static final String RPOFIT_SHARING_ADD_RECEIVER_URL = "https://api.mch.weixin.qq.com/pay/profitsharingaddreceiver"; + // 删除分账账户 + private static final String RPOFIT_SHARING_REMOVE_RECEIVER_URL = "https://api.mch.weixin.qq.com/pay/profitsharingremovereceiver"; + + + private WxProfitSharing() { + } + + /** + * 分账下单 + * @param params + * @return + */ + public static String pushOrder(Map params) { + return doPost(PROFIT_SHARING_URL, params); + } + + /** + * 分账查询 + * @param params 请求参数 + * @return + */ + public static String queryOrder(Map params) { + return doPost(PROFIT_SHARING_URL, params); + } + + + public static String doPost(String url, Map params) { + return HttpUtil.payPost(url, WxPayment.toXml(params)); + } +} diff --git a/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java new file mode 100644 index 000000000..3d65abe64 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java @@ -0,0 +1,89 @@ +package com.simple.pay; + +import java.io.Serializable; + +/** + * Created by Peng on 2018/8/10. + */ +public class WxProfitSharingP implements Serializable { + private static final long serialVersionUID = 1L; + + private String mch_id; // 商户号 + private String sub_mch_id; // 子商户号 + private String appid; // 公众账号ID + private String sub_appid; // 子公众账号ID + private String nonce_str; // 随机字符串 + private String sign; // 签名 + private String transaction_id ; // 支付订单号 + private String out_trade_no; // 商户订单号 + private String receivers; // 分账接收方 + + public String getMch_id() { + return mch_id; + } + + public void setMch_id(String mch_id) { + this.mch_id = mch_id; + } + + public String getSub_mch_id() { return sub_mch_id; } + + public void setSub_mch_id(String sub_mch_id) { + this.sub_mch_id = sub_mch_id; + } + + public String getAppid() { + return appid; + } + + public void setAppid(String appid) { + this.appid = appid; + } + + public String getSub_appid() { + return sub_appid; + } + + public void setSub_appid(String sub_appid) { + this.sub_appid = sub_appid; + } + + public String getNonce_str() { + return nonce_str; + } + + public void setNonce_str(String nonce_str) { + this.nonce_str = nonce_str; + } + + public String getSign() { + return sign; + } + + public void setSign(String sign) { + this.sign = sign; + } + + public String getTransaction_id() { + return transaction_id; + } + + public void setTransaction_id(String transaction_id) { + this.transaction_id = transaction_id; + } + + public String getOut_trade_no() { return out_trade_no; } + + public void setOut_trade_no(String out_trade_no) { + this.out_trade_no = out_trade_no; + } + + public String getReceivers() { + return receivers; + } + + public void setReceivers(String receivers) { + this.receivers = receivers; + } + +} diff --git a/mallinkService/src/main/java/com/simple/service/WxCUserCarService.java b/mallinkService/src/main/java/com/simple/service/WxCUserCarService.java new file mode 100644 index 000000000..74e00ab3f --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/WxCUserCarService.java @@ -0,0 +1,63 @@ +package com.simple.service; + +import java.util.*; +import com.github.pagehelper.PageInfo; +import com.simple.domain.po.WxCUserCar; + +public interface WxCUserCarService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param pageIndex + * @param pageSize + * @return + */ + PageInfo listAsPage(WxCUserCar record, Integer pageIndex, Integer pageSize); + + /** + * 根据实体查询列表 + * + * @param record + * @return + */ + List getList(WxCUserCar record); + + /** + * 根据实体查询 + * @param record + * @return + */ + WxCUserCar getOne(WxCUserCar record); + + /** + * 根据Id获得实体 + * + * @param id + * @return + */ + WxCUserCar getById(Long id); + + /** + * 保存或更新实体 + * + * @param record + */ + void saveOrUpdate(WxCUserCar record); + + /** + * 根据Id删除实体 + * + * @param id + */ + void deleteById(Long id); + + /** + * 根据WxCUserCar删除实体 + * @param record + */ + void deleteByObj(WxCUserCar record); + + +} diff --git a/mallinkService/src/main/java/com/simple/service/WxCUserCarsService.java b/mallinkService/src/main/java/com/simple/service/WxCarCmdLogService.java similarity index 70% rename from mallinkService/src/main/java/com/simple/service/WxCUserCarsService.java rename to mallinkService/src/main/java/com/simple/service/WxCarCmdLogService.java index 24c3e48c1..1316d8d7f 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCUserCarsService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCarCmdLogService.java @@ -2,9 +2,9 @@ package com.simple.service; import java.util.*; import com.github.pagehelper.PageInfo; -import com.simple.domain.po.WxCUserCars; +import com.simple.domain.po.WxCarCmdLog; -public interface WxCUserCarsService { +public interface WxCarCmdLogService { /** * 根据实体查询分页列表 @@ -14,7 +14,7 @@ public interface WxCUserCarsService { * @param limit * @return */ - PageInfo listAsPage(WxCUserCars record, Integer pageIndex, Integer pageSize); + PageInfo listAsPage(WxCarCmdLog record, Integer pageIndex, Integer pageSize); /** * 根据Id获得实体 @@ -22,14 +22,14 @@ public interface WxCUserCarsService { * @param id * @return */ - WxCUserCars getById(Long id); + WxCarCmdLog getById(Long id); /** * 保存或更新实体 * * @param record */ - void saveOrUpdate(WxCUserCars record); + void saveOrUpdate(WxCarCmdLog record); /** * 根据Id删除实体 diff --git a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java index ceaf624f0..897e2a2fe 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java @@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo; import com.simple.common.ResultData; import com.simple.domain.po.MallUserInfo; import com.simple.domain.po.WxCouponOrder; +import com.simple.domain.po.WxMerchantBUser; public interface WxCouponOrderService { @@ -12,8 +13,8 @@ public interface WxCouponOrderService { * 根据实体查询分页列表 * * @param record - * @param offset - * @param limit + * @param pageIndex + * @param pageSize * @return */ PageInfo listAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize); @@ -40,20 +41,20 @@ public interface WxCouponOrderService { */ void deleteById(Long id); /** - * 根据主键Id(券码)核销 + * 根据主键couponOrderId(券码)核销 * - * @param id - * @param mallUserInfo 核销人(登录用户) + * @param couponOrderId + * @param bUserId 核销人(登录用户) */ - ResultData verify(Long id, MallUserInfo mallUserInfo); + ResultData verify(Long couponOrderId, Long bUserId); /** - * 根据主键Id(券码)退券(款) + * 根据主键couponOrderId(券码)退券(款) * - * @param id - * @param mallUserInfo 退券(款)人(登录用户) + * @param couponOrderId + * @param bUserId 退券(款)人(登录用户) */ - ResultData refund(Long id, MallUserInfo mallUserInfo); + ResultData refund(Long couponOrderId, Long bUserId); diff --git a/mallinkService/src/main/java/com/simple/service/WxCouponService.java b/mallinkService/src/main/java/com/simple/service/WxCouponService.java index 12ecd5dc8..2b7ac2300 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCouponService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCouponService.java @@ -48,7 +48,10 @@ public interface WxCouponService { * @param id */ void deleteById(Long id); - + /** + * + */ + PageInfo findCanSendList(WxCoupon record, Integer pageIndex, Integer pageSize); diff --git a/mallinkService/src/main/java/com/simple/service/WxMerchantService.java b/mallinkService/src/main/java/com/simple/service/WxMerchantService.java index c5e2f6645..9965c1059 100644 --- a/mallinkService/src/main/java/com/simple/service/WxMerchantService.java +++ b/mallinkService/src/main/java/com/simple/service/WxMerchantService.java @@ -39,6 +39,6 @@ public interface WxMerchantService { void deleteById(Long id); - void saveOrUpdate(WxMerchant wxMerchant, String shopids, String userids); + void disable(Long id); } diff --git a/mallinkService/src/main/java/com/simple/service/WxMerchantShopService.java b/mallinkService/src/main/java/com/simple/service/WxMerchantShopService.java index 4184dd87a..7208a7646 100644 --- a/mallinkService/src/main/java/com/simple/service/WxMerchantShopService.java +++ b/mallinkService/src/main/java/com/simple/service/WxMerchantShopService.java @@ -1,8 +1,8 @@ package com.simple.service; -import java.util.*; import com.github.pagehelper.PageInfo; import com.simple.domain.po.WxMerchantShop; +import com.simple.domain.po.WxShop; public interface WxMerchantShopService { @@ -37,12 +37,11 @@ public interface WxMerchantShopService { * @param id */ void deleteById(Long id); - - - - - - + + + PageInfo queryShopList(WxMerchantShop record, Integer pageIndex, Integer pageSize); + + } diff --git a/mallinkService/src/main/java/com/simple/service/WxParkService.java b/mallinkService/src/main/java/com/simple/service/WxParkService.java index 1c2d5ceb6..34a2952a6 100644 --- a/mallinkService/src/main/java/com/simple/service/WxParkService.java +++ b/mallinkService/src/main/java/com/simple/service/WxParkService.java @@ -10,8 +10,8 @@ public interface WxParkService { * 根据实体查询分页列表 * * @param record - * @param offset - * @param limit + * @param pageIndex + * @param pageSize * @return */ PageInfo listAsPage(WxPark record, Integer pageIndex, Integer pageSize); @@ -23,6 +23,14 @@ public interface WxParkService { * @return */ WxPark getById(Long id); + + /** + * 根据WxPark获得实体 + * + * @param record + * @return + */ + WxPark getByObj(WxPark record); /** * 保存或更新实体 diff --git a/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java b/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java index 267d790c6..1187f71a4 100644 --- a/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java @@ -13,7 +13,8 @@ public interface WxPayOrderService { /** * 创建支付订单 - * @param record 支付订单请求 + * + * @param record 支付订单请求 * @param payWay * @return */ @@ -21,28 +22,45 @@ public interface WxPayOrderService { /** * 异步通知 - * @param paramMap 异步通知参数 - * @param payWay 支付方式 + * + * @param paramMap 异步通知参数 + * @param payWay 支付方式 * @return */ String notify(Map paramMap, EnumPayWay payWay); /** * 支付成功处理 + * * @param record * @param transactionId */ void handleOrderPaySuccess(WxPayOrder record, String transactionId); + /** + * 支付状态处理 + * + * @param record + */ + void handlePayOrderStatusUpdate(WxPayOrder record); + /** * 页面回调 - * @param paramMap 页面通知参数 - * @param payWay 支付方式 + * + * @param paramMap 页面通知参数 + * @param payWay 支付方式 * @return */ void callback(Map paramMap, EnumPayWay payWay); - /** + /** + * 保存或更新实体 + * + * @param record + */ + void saveOrUpdate(WxPayOrder record); + + /** * 根据实体查询分页列表 * * @param record @@ -50,22 +68,17 @@ public interface WxPayOrderService { * @param pageSize * @return */ - PageInfo listAsPage(WxPayOrder record, Integer pageIndex, Integer pageSize); - - /** + PageInfo listAsPage(WxPayOrder record, Integer pageIndex, Integer pageSize); + + /** * 根据Id获得实体 * * @param id * @return */ WxPayOrder getById(Long id); - - /** - * 保存或更新实体 - * - * @param record - */ - void saveOrUpdate(WxPayOrder record); + + /** * 根据Id删除实体 @@ -73,12 +86,6 @@ public interface WxPayOrderService { * @param id */ void deleteById(Long id); - - - - - - - - + + } diff --git a/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java b/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java new file mode 100644 index 000000000..256ef1b31 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java @@ -0,0 +1,58 @@ +package com.simple.service; + +import java.util.*; +import com.github.pagehelper.PageInfo; +import com.simple.common.ResultData; +import com.simple.domain.po.WxAppinfo; +import com.simple.domain.po.WxPayOrder; +import com.simple.domain.po.WxProfitSharingOrder; + +public interface WxProfitSharingOrderService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param offset + * @param limit + * @return + */ + PageInfo listAsPage(WxProfitSharingOrder record, Integer pageIndex, Integer pageSize); + + /** + * 根据Id获得实体 + * + * @param id + * @return + */ + WxProfitSharingOrder getById(Long id); + + /** + * 保存或更新实体 + * + * @param record + */ + void saveOrUpdate(WxProfitSharingOrder record); + + /** + * 根据Id删除实体 + * + * @param id + */ + void deleteById(Long id); + + + /** + * 临时测试 + */ + public void test(); + + /** + * 创建分账订单 + */ + public ResultData createSharingOrder(WxAppinfo appInfo, WxPayOrder wxPayOrder); + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/WxProfitSharingReceiverService.java b/mallinkService/src/main/java/com/simple/service/WxProfitSharingReceiverService.java new file mode 100644 index 000000000..49ec0d3ed --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/WxProfitSharingReceiverService.java @@ -0,0 +1,48 @@ +package com.simple.service; + +import java.util.*; +import com.github.pagehelper.PageInfo; +import com.simple.domain.po.WxProfitSharingReceiver; + +public interface WxProfitSharingReceiverService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param offset + * @param limit + * @return + */ + PageInfo listAsPage(WxProfitSharingReceiver record, Integer pageIndex, Integer pageSize); + + /** + * 根据Id获得实体 + * + * @param id + * @return + */ + WxProfitSharingReceiver getById(Long id); + + /** + * 保存或更新实体 + * + * @param record + */ + void saveOrUpdate(WxProfitSharingReceiver record); + + /** + * 根据Id删除实体 + * + * @param id + */ + void deleteById(Long id); + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/WxCarCmdLogsService.java b/mallinkService/src/main/java/com/simple/service/WxProfitSharingResultService.java similarity index 57% rename from mallinkService/src/main/java/com/simple/service/WxCarCmdLogsService.java rename to mallinkService/src/main/java/com/simple/service/WxProfitSharingResultService.java index 94986e923..808391d69 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCarCmdLogsService.java +++ b/mallinkService/src/main/java/com/simple/service/WxProfitSharingResultService.java @@ -2,19 +2,19 @@ package com.simple.service; import java.util.*; import com.github.pagehelper.PageInfo; -import com.simple.domain.po.WxCarCmdLogs; +import com.simple.domain.po.WxProfitSharingResult; -public interface WxCarCmdLogsService { +public interface WxProfitSharingResultService { /** * 根据实体查询分页列表 * * @param record - * @param pageIndex - * @param pageSize + * @param offset + * @param limit * @return */ - PageInfo listAsPage(WxCarCmdLogs record, Integer pageIndex, Integer pageSize); + PageInfo listAsPage(WxProfitSharingResult record, Integer pageIndex, Integer pageSize); /** * 根据Id获得实体 @@ -22,14 +22,14 @@ public interface WxCarCmdLogsService { * @param id * @return */ - WxCarCmdLogs getById(Long id); + WxProfitSharingResult getById(Long id); /** * 保存或更新实体 * * @param record */ - void saveOrUpdate(WxCarCmdLogs record); + void saveOrUpdate(WxProfitSharingResult record); /** * 根据Id删除实体 diff --git a/mallinkService/src/main/java/com/simple/service/impl/MallPermissionServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/MallPermissionServiceImpl.java index 6bf23751c..466be284d 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/MallPermissionServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/MallPermissionServiceImpl.java @@ -32,7 +32,8 @@ public class MallPermissionServiceImpl implements MallPermissionService { public void saveOrUpdate(MallPermission record) { if (record.getId() == null) { //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); - record.setId(new IdWorker(0, 0).nextId()); + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); mallPermissionMapper.insertSelective(record); } else { mallPermissionMapper.updateByPrimaryKeySelective(record); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java index 66f172cd9..aad9d9abc 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java @@ -31,7 +31,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { public void saveOrUpdate(WxCUserBasicInfo record) { if (record.getId() == null) { //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); - IdWorker idWorker = new IdWorker(0, 0); + final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); wxCUserBasicInfoMapper.insertSelective(record); } else { diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCUserCarServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCUserCarServiceImpl.java new file mode 100644 index 000000000..e9505a54d --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCUserCarServiceImpl.java @@ -0,0 +1,69 @@ +package com.simple.service.impl; + +import java.util.*; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.simple.domain.po.WxCUserCar; +import com.simple.mapper.WxCUserCarMapper; +import com.simple.service.WxCUserCarService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.simple.common.IdWorker; + +@Service +public class WxCUserCarServiceImpl implements WxCUserCarService { + + @Autowired + WxCUserCarMapper wxCUserCarMapper; + + + @Override + public PageInfo listAsPage(WxCUserCar record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserCarMapper.findList(record)); + } + + @Override + public List getList(WxCUserCar record) { + return wxCUserCarMapper.findList(record); + } + + @Override + public WxCUserCar getOne(WxCUserCar record) { + return wxCUserCarMapper.selectOne(record); + } + + + @Override + public WxCUserCar getById(Long id) { + return wxCUserCarMapper.selectByPrimaryKey(id); + } + + @Override + public void saveOrUpdate(WxCUserCar record) { + if (record.getId() == null) { + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + wxCUserCarMapper.insertSelective(record); + } else { + wxCUserCarMapper.updateByPrimaryKeySelective(record); + } + } + + @Override + public void deleteById(Long id) { + wxCUserCarMapper.deleteByPrimaryKey(id); + } + + @Override + public void deleteByObj(WxCUserCar record) { + wxCUserCarMapper.delete(record); + } + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCUserCarsServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCarCmdLogServiceImpl.java similarity index 54% rename from mallinkService/src/main/java/com/simple/service/impl/WxCUserCarsServiceImpl.java rename to mallinkService/src/main/java/com/simple/service/impl/WxCarCmdLogServiceImpl.java index dac16838d..7a89da373 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCUserCarsServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCarCmdLogServiceImpl.java @@ -3,45 +3,45 @@ package com.simple.service.impl; import java.util.*; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; -import com.simple.domain.po.WxCUserCars; -import com.simple.mapper.WxCUserCarsMapper; -import com.simple.service.WxCUserCarsService; +import com.simple.domain.po.WxCarCmdLog; +import com.simple.mapper.WxCarCmdLogMapper; +import com.simple.service.WxCarCmdLogService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.simple.common.IdWorker; @Service -public class WxCUserCarsServiceImpl implements WxCUserCarsService { +public class WxCarCmdLogServiceImpl implements WxCarCmdLogService { @Autowired - WxCUserCarsMapper wxCUserCarsMapper; + WxCarCmdLogMapper wxCarCmdLogMapper; @Override - public PageInfo listAsPage(WxCUserCars record, Integer pageIndex, Integer pageSize) { - return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserCarsMapper.findList(record)); + public PageInfo listAsPage(WxCarCmdLog record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCarCmdLogMapper.findList(record)); } @Override - public WxCUserCars getById(Long id) { - return wxCUserCarsMapper.selectByPrimaryKey(id); + public WxCarCmdLog getById(Long id) { + return wxCarCmdLogMapper.selectByPrimaryKey(id); } @Override - public void saveOrUpdate(WxCUserCars record) { + public void saveOrUpdate(WxCarCmdLog record) { if (record.getId() == null) { //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); - wxCUserCarsMapper.insertSelective(record); + wxCarCmdLogMapper.insertSelective(record); } else { - wxCUserCarsMapper.updateByPrimaryKeySelective(record); + wxCarCmdLogMapper.updateByPrimaryKeySelective(record); } } @Override public void deleteById(Long id) { - wxCUserCarsMapper.deleteByPrimaryKey(id); + wxCarCmdLogMapper.deleteByPrimaryKey(id); } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCarCmdLogsServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCarCmdLogsServiceImpl.java deleted file mode 100644 index 1c61ed47c..000000000 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCarCmdLogsServiceImpl.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.simple.service.impl; - -import java.util.*; -import com.github.pagehelper.PageHelper; -import com.github.pagehelper.PageInfo; -import com.simple.domain.po.WxCarCmdLogs; -import com.simple.mapper.WxCarCmdLogsMapper; -import com.simple.service.WxCarCmdLogsService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.simple.common.IdWorker; - -@Service -public class WxCarCmdLogsServiceImpl implements WxCarCmdLogsService { - - @Autowired - WxCarCmdLogsMapper wxCarCmdLogsMapper; - - - @Override - public PageInfo listAsPage(WxCarCmdLogs record, Integer pageIndex, Integer pageSize) { - return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCarCmdLogsMapper.findList(record)); - } - - @Override - public WxCarCmdLogs getById(Long id) { - return wxCarCmdLogsMapper.selectByPrimaryKey(id); - } - - @Override - public void saveOrUpdate(WxCarCmdLogs record) { - if (record.getId() == null) { - //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); - final IdWorker idWorker = IdWorker.get(); - record.setId(idWorker.nextId()); - wxCarCmdLogsMapper.insertSelective(record); - } else { - wxCarCmdLogsMapper.updateByPrimaryKeySelective(record); - } - } - - @Override - public void deleteById(Long id) { - wxCarCmdLogsMapper.deleteByPrimaryKey(id); - } - - - - - - - - -} diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java index b3245402c..a67f1369c 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java @@ -8,9 +8,16 @@ import com.simple.common.Result; import com.simple.common.ResultData; import com.simple.domain.po.MallUserInfo; import com.simple.domain.po.WxCouponOrder; +import com.simple.domain.po.WxMerchantBUser; +import com.simple.domain.po.WxOrder; import com.simple.enums.EnumCouponOrderStatus; +import com.simple.enums.EnumCouponStatus; +import com.simple.exception.MallinkException; +import com.simple.mapper.WxOrderMapper; import com.simple.mapper.WxCouponOrderMapper; +import com.simple.mapper.WxMerchantBUserMapper; import com.simple.service.WxCouponOrderService; +import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -20,10 +27,17 @@ import java.util.Date; @Service public class WxCouponOrderServiceImpl implements WxCouponOrderService { - + private Logger logger = Logger.getLogger(WxCouponOrderServiceImpl.class); + @Autowired WxCouponOrderMapper wxCouponOrderMapper; + @Autowired + WxOrderMapper wxOrderMapper; + + @Autowired + WxMerchantBUserMapper wxMerchantBUserMapper; + @Override public PageInfo listAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findList(record)); @@ -38,7 +52,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { public void saveOrUpdate(WxCouponOrder record) { if (record.getId() == null) { //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); - IdWorker idWorker = new IdWorker(0, 0); + final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); wxCouponOrderMapper.insertSelective(record); } else { @@ -52,48 +66,98 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } - @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public ResultData verify(Long id, MallUserInfo mallUserInfo) { - WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(id); - if (wxCouponOrder.getCouponOrderStatus() == 2) { - return new ResultData(Result.ERROR, "已过期"); + public ResultData verify(Long couponOrderId, Long bUserId) { + + WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(couponOrderId); + if(wxCouponOrder == null){ + logger.error("券ID不存在:"+ couponOrderId); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); + } + + WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId.longValue()); + if(wxMerchantBUser == null){ + logger.error("核销员ID不存在:"+ bUserId); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); + } + + WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxCouponOrder.getOrderId()); + + if (!wxOrder.getMerchantId().equals(wxMerchantBUser.getMerchantId())){ + logger.error("券: couponMerchantId-" + wxOrder.getMerchantId()+"核销: couponMerchantId-"+wxMerchantBUser.getMerchantId()); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); + } + + if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode()) { + logger.error("已过期: couponOrder-" + couponOrderId); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME); + } + if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()) { + logger.error("已退款: couponOrder-" + couponOrderId); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_INVALID); } - if (wxCouponOrder.getCouponOrderStatus() == 3) { - return new ResultData(Result.ERROR, "已退款"); + if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()) { + logger.error("已经核销过的券: couponOrder-" + couponOrderId); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED); } - if (wxCouponOrder.getCouponOrderStatus() == 1) { - return new ResultData(Result.ERROR, "已经核销过的券"); + try { + wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); //1核销 + wxCouponOrder.setBUserId(bUserId); + wxCouponOrder.setUpdateDate(new Date()); + wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder); + } catch (Exception e) { + logger.error("db failed: couponOrder-" + couponOrderId + ", e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); } - wxCouponOrder.setCouponOrderStatus(1); //1核销 - wxCouponOrder.setBUserId(mallUserInfo.getId()); - wxCouponOrder.setUpdateDate(new Date()); - wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder); - return new ResultData(); + return new ResultData(wxCouponOrder); } @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public ResultData refund(Long id, MallUserInfo mallUserInfo) { - WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(id); + public ResultData refund(Long couponOrderId, Long bUserId) { + WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(couponOrderId); + if(wxCouponOrder == null){ + logger.error("券ID不存在:"+ couponOrderId); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); + } + + WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId.longValue()); + if(wxMerchantBUser == null){ + logger.error("操作员ID不存在:"+ bUserId); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); + } + + WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxCouponOrder.getOrderId()); + + if (!wxOrder.getMerchantId().equals(wxMerchantBUser.getMerchantId())){ + logger.error("券: couponMerchantId-" + wxOrder.getMerchantId()+"核销: couponMerchantId-"+wxMerchantBUser.getMerchantId()); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); + } if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode())) { - return new ResultData(ErrorCode.COUPON_ORDER_IS_OVER_TIME); + logger.error("已过期: couponOrder-" + couponOrderId); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME); } if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode())) { - return new ResultData(ErrorCode.COUPON_ORDER_IS_INVALID); + logger.error("已退款: couponOrder-" + couponOrderId); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME); } if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode())) { - return new ResultData(ErrorCode.COUPON_ORDER_IS_USED); + logger.error("已经核销过的券: couponOrder-" + couponOrderId); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED); + } + try { + wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()); //3退款,券作废 + wxCouponOrder.setBUserId(bUserId); + wxCouponOrder.setUpdateDate(new Date()); + wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder); + } catch (Exception e) { + logger.error("db failed: couponOrder-" + couponOrderId + ", e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); } - - wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()); //3退款,券作废 - wxCouponOrder.setBUserId(mallUserInfo.getId()); - wxCouponOrder.setUpdateDate(new Date()); - wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder); return new ResultData(wxCouponOrder); } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCouponServiceImpl.java index d6fe80afe..fc870d8ea 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponServiceImpl.java @@ -50,12 +50,11 @@ public class WxCouponServiceImpl implements WxCouponService { public void deleteById(Long id) { wxCouponMapper.deleteByPrimaryKey(id); } - - - - - - - - + + @Override + public PageInfo findCanSendList(WxCoupon record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponMapper.findCanSendList(record)); + } + + } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxDateAmountRecordServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxDateAmountRecordServiceImpl.java index 71733e067..e5761b636 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxDateAmountRecordServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxDateAmountRecordServiceImpl.java @@ -31,7 +31,7 @@ public class WxDateAmountRecordServiceImpl implements WxDateAmountRecordService public void saveOrUpdate(WxDateAmountRecord record) { if (record.getId() == null) { //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); - IdWorker idWorker = new IdWorker(0, 0); + final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); wxDateAmountRecordMapper.insertSelective(record); } else { diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantBUserServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantBUserServiceImpl.java index f5279f232..845b38577 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantBUserServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantBUserServiceImpl.java @@ -37,9 +37,16 @@ public class WxMerchantBUserServiceImpl implements WxMerchantBUserService { if (record.getId() == null) { //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); final IdWorker idWorker = IdWorker.get(); - record.setId(idWorker.nextId()); + long id = idWorker.nextId(); + record.setId(id); + record.setBUserId(id); + Date date = new Date(); + record.setCreateDate(date); + record.setUpdateDate(date); wxMerchantBUserMapper.insertSelective(record); } else { + Date date = new Date(); + record.setUpdateDate(date); wxMerchantBUserMapper.updateByPrimaryKeySelective(record); } } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java index 3264ac35f..9151060c2 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java @@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -42,31 +43,43 @@ public class WxMerchantServiceImpl implements WxMerchantService { @Override public WxMerchant getById(Long id) { - return wxMerchantMapper.selectByPrimaryKey(id); - } + WxMerchant wxMerchant = wxMerchantMapper.selectByPrimaryKey(id); + WxMerchantShop wxMerchantShop=new WxMerchantShop(); + wxMerchantShop.setMerchantId(wxMerchant.getId()); + List shops = new ArrayList<>(); + + List wxMerchantShopList = wxMerchantShopMapper.findList(wxMerchantShop); + for(WxMerchantShop merchantShop:wxMerchantShopList){ + WxShop wxShop = WxShopMapper.selectByPrimaryKey(merchantShop.getShopId()); + if(wxShop!=null) + shops.add(wxShop); + } - @Override - public void saveOrUpdate(WxMerchant record) { - if (record.getId() == null) { - //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); - final IdWorker idWorker = IdWorker.get(); - record.setId(idWorker.nextId()); - record.setCreateDate(new Date()); + wxMerchant.setShops(shops); - wxMerchantMapper.insertSelective(record); - } else { - wxMerchantMapper.updateByPrimaryKeySelective(record); - } + WxMerchantBUser wxMerchantBUser = new WxMerchantBUser(); + wxMerchantBUser.setMerchantId(wxMerchant.getId()); + List bUserList = wxMerchantBUserMapper.findList(wxMerchantBUser); + wxMerchant.setbUsers(bUserList); + return wxMerchant; } + @Override public void deleteById(Long id) { wxMerchantMapper.deleteByPrimaryKey(id); } + @Override + public void disable(Long id) { + WxMerchant wxMerchant = wxMerchantMapper.selectByPrimaryKey(id); + wxMerchant.setStatus(0); + wxMerchantMapper.updateByPrimaryKeySelective(wxMerchant); + } + @Transactional @Override - public void saveOrUpdate(WxMerchant wxMerchant, String shopids, String userids) { + public void saveOrUpdate(WxMerchant wxMerchant) { if (wxMerchant.getId() == null) { @@ -74,12 +87,13 @@ public class WxMerchantServiceImpl implements WxMerchantService { long merchantid = idWorker.nextId(); wxMerchant.setId(merchantid); Date date = new Date(); + wxMerchant.setStatus(1); wxMerchant.setUpdateDate(date); wxMerchant.setCreateDate(date); wxMerchantMapper.insertSelective(wxMerchant); //保存商户商铺的关联 - List shopidlist = JSONArray.parseArray(shopids, Long.class); + List shopidlist = wxMerchant.getShopids(); for(Long shopid:shopidlist){ WxMerchantShop wxMerchantShop = new WxMerchantShop(); wxMerchantShop.setId(idWorker.nextId()); @@ -101,7 +115,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { } //保存商户关联用户 - List useridlist = JSONArray.parseArray(userids, Long.class); + List useridlist = wxMerchant.getUserids(); for(Long userid:useridlist){ WxMerchantBUser wxMerchantBUser = new WxMerchantBUser(); wxMerchantBUser.setId(userid); @@ -133,13 +147,13 @@ public class WxMerchantServiceImpl implements WxMerchantService { //更新商铺状态 WxShop wxShop = new WxShop(); wxShop.setId(merchantShop.getShopId()); - wxShop.setStatus(0);//已出租 + wxShop.setStatus(0);//未出租 WxShopMapper.updateByPrimaryKeySelective(wxShop); } final IdWorker idWorker = IdWorker.get(); //保存商户商铺的关联 - List shopidlist = JSONArray.parseArray(shopids, Long.class); + List shopidlist = wxMerchant.getShopids(); for(Long shopid:shopidlist){ WxMerchantShop wxMerchantShop = new WxMerchantShop(); wxMerchantShop.setId(idWorker.nextId()); @@ -162,7 +176,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { //保存商户关联用户 - List useridlist = JSONArray.parseArray(userids, Long.class); + List useridlist = wxMerchant.getUserids(); for(Long userid:useridlist){ WxMerchantBUser wxMerchantBUser = new WxMerchantBUser(); wxMerchantBUser.setId(userid); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantShopServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantShopServiceImpl.java index 990924ebf..fdbf2cc5b 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantShopServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantShopServiceImpl.java @@ -1,14 +1,22 @@ package com.simple.service.impl; -import java.util.*; +import com.github.pagehelper.ISelect; +import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.simple.common.IdWorker; import com.simple.domain.po.WxMerchantShop; +import com.simple.domain.po.WxShop; import com.simple.mapper.WxMerchantShopMapper; +import com.simple.mapper.WxShopMapper; import com.simple.service.WxMerchantShopService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.simple.common.IdWorker; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; @Service public class WxMerchantShopServiceImpl implements WxMerchantShopService { @@ -16,12 +24,33 @@ public class WxMerchantShopServiceImpl implements WxMerchantShopService { @Autowired WxMerchantShopMapper wxMerchantShopMapper; + @Autowired + WxShopMapper wxShopMapper; + @Override public PageInfo listAsPage(WxMerchantShop record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxMerchantShopMapper.findList(record)); } + @Override + public PageInfo queryShopList(WxMerchantShop record, Integer pageIndex, Integer pageSize) { + List resultlist=new ArrayList<>(); + + List merchantShops = wxMerchantShopMapper.findList(record); + for(WxMerchantShop merchantShop:merchantShops){ + WxShop wxShop = new WxShop(); + wxShop.setId(merchantShop.getShopId()); + List shopList = wxShopMapper.findList(wxShop); + if(shopList.size()>0){ + resultlist.add(shopList.get(0)); + } + } + PageHelper.startPage(pageIndex, pageSize); + PageInfo pageInfo = new PageInfo<>(resultlist); + return pageInfo; + } + @Override public WxMerchantShop getById(Long id) { return wxMerchantShopMapper.selectByPrimaryKey(id); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMsgValidationcodeServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMsgValidationcodeServiceImpl.java index 3817aaa05..d2957c49a 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMsgValidationcodeServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMsgValidationcodeServiceImpl.java @@ -145,7 +145,7 @@ public class WxMsgValidationcodeServiceImpl implements WxMsgValidationcodeServic wxMsgValidationcode.setExpiretime(expiredate); wxMsgValidationcode.setCreatetime(createtime); wxMsgValidationcodeMapper.insertSelective(wxMsgValidationcode); - return new ResultData(200,"发送成功"); + return new ResultData(Result.SUCCESS,"发送成功"); } return new ResultData(500,"发送失败"); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java index 60519fac9..1773ec1e3 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java @@ -103,22 +103,25 @@ public class WxOrderServiceImpl implements WxOrderService { } // check 购买是否超限 + int count = 0; try { WxCouponOrder query = new WxCouponOrder(); query.setCouponId(couponId); + query.setCUserId(user.getId()); query.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode()); - List list = wxCouponOrderMapper.findList(query); - if (list.size() >= coupon.getUseLimitQuantity()) { - //解锁 - redisLock.unlock(couponIdStr, timeStr); - throw new MallinkException(ErrorCode.ORDER_IS_LIMITED); - } + count = wxCouponOrderMapper.selectCount(query); }catch (Exception e) { //解锁 redisLock.unlock(couponIdStr, timeStr); - logger.error("此券购买数量检查出问题了, couponId: " + couponIdStr); + logger.error("购买是否超限-DB, couponId: " + couponIdStr + ", e:" + e.getMessage()); throw new MallinkException(ErrorCode.ORDER_IS_FAIL); } + if (count > coupon.getUseLimitQuantity()) { + //解锁 + redisLock.unlock(couponIdStr, timeStr); + logger.error("此券购买数量已超限, couponId: " + couponIdStr + ", count: " + count); + throw new MallinkException(ErrorCode.ORDER_IS_LIMITED); + } try { // 减库存 @@ -155,6 +158,7 @@ public class WxOrderServiceImpl implements WxOrderService { record.setTenantId(user.getTenantId()); record.setOrderNumber(orderNumber); record.setCUserId(user.getId()); + record.setMerchantId(coupon.getMerchantId()); record.setPaymentType(EnumPayType.PAY_PAYMENT.getCode()); record.setPayment(payment); record.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); @@ -171,6 +175,7 @@ public class WxOrderServiceImpl implements WxOrderService { try { WxCouponOrder couponOrder = new WxCouponOrder(); couponOrder.setId(idWorker.nextId()); + couponOrder.setTenantId(user.getTenantId()); couponOrder.setCouponId(couponId); couponOrder.setCUserId(user.getId()); couponOrder.setOrderId(orderNumber); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxParkServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxParkServiceImpl.java index 249fba95b..e9926c86c 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxParkServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxParkServiceImpl.java @@ -27,6 +27,11 @@ public class WxParkServiceImpl implements WxParkService { return wxParkMapper.selectByPrimaryKey(id); } + @Override + public WxPark getByObj(WxPark record) { + return wxParkMapper.selectOne(record); + } + @Override public void saveOrUpdate(WxPark record) { if (record.getId() == null) { diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java index 0dda1ca2f..07c218eb9 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -1,5 +1,6 @@ package com.simple.service.impl; +import java.text.ParseException; import java.util.*; import com.alibaba.fastjson.JSON; @@ -7,6 +8,7 @@ import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.simple.common.ErrorCode; +import com.simple.common.Result; import com.simple.common.ResultData; import com.simple.domain.po.*; import com.simple.enums.EnumOrderStatus; @@ -47,10 +49,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { @Autowired WxOrderMapper wxOrderMapper; - @Autowired + @Autowired WxPayOrderMapper wxPayOrderMapper; - @Autowired + @Autowired WxOrderService wxOrderService; JSONObject errorMap = JSON.parseObject("{\"NOAUTH\":{\"detail\":\"商户无此接口权限\",\"reason\":\"商户未开通此接口权限\",\"resolution\":\"请商户前往申请此接口权限\"}," + @@ -77,82 +79,99 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { // 1. check 订单 WxOrder order = wxOrderMapper.selectByPrimaryKey(record.getOrderId()); if (order == null) { - logger.warn("pay order, order not allow, repaymentReq: " + record.toString() +", payWay: " + payWay.toString()); + logger.error("pay order, order not allow, repaymentReq: " + record.toString() + ", payWay: " + payWay.toString()); throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); } if (order.getOrderStatus() != EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()) { - logger.warn("pay order, order status not allow, repaymentReq: " + order.toString() + " , payWay: " + payWay.toString()); + logger.error("pay order, order status not allow, repaymentReq: " + order.toString() + " , payWay: " + payWay.toString()); throw new MallinkException(ErrorCode.ORDER_IS_NOT_PAY); } // 2. check 是否有支付订单 - List list = wxPayOrderMapper.findList(record); - if (list.size() > 0) { - throw new MallinkException(ErrorCode.PAY_ORDER_EXIST); - } - // 3. 创建支付订单 - Long id = idworker.nextId(); Date currentDate = new Date(); + List list = wxPayOrderMapper.findList(record); + String payOrderNo = ""; + if (list.size() <= 0) { + // 3. 创建支付订单 + Long id = idworker.nextId(); + payOrderNo = String.valueOf(id); + record.setId(id); + record.setTenantId(user.getTenantId()); + record.setCUserId(user.getId()); + record.setCreateTime(currentDate); + record.setUpdateTime(currentDate); + record.setPayTimeStart(currentDate); + record.setPayTimeEnd(currentDate); + // 支付单号 + record.setPayOrderNo(payOrderNo); + record.setPayAmount(order.getPayment()); + record.setPayVendor(EnumPayWay.PAY_WAY_WEAPP.getCode()); + record.setPayOrderStatus(EnumPayStatus.PAY_WAY_WAIT.getCode()); - record.setId(id); - record.setTenantId(user.getTenantId()); - record.setCUserId(user.getId()); - record.setCreateTime(currentDate); - record.setUpdateTime(currentDate); - int currentTime = Utility.convertDate2TimeStamp(currentDate); - record.setPayTimeStart(currentTime); - record.setPayTimeEnd(currentTime); - // 支付单号 - record.setPayOrderNo(String.valueOf(id)); - record.setPayAmount(order.getPayment()); - record.setPayVendor(EnumPayWay.PAY_WAY_WEAPP.getCode()); - record.setPayOrderStatus(EnumPayStatus.PAY_WAY_WAIT.getCode()); - - int sqlRow = wxPayOrderMapper.insertSelective(record); - if(sqlRow != 1) { - throw new MallinkException(ErrorCode.DB_FAIL); + int sqlRow = wxPayOrderMapper.insertSelective(record); + if (sqlRow != 1) { + logger.error("pay order insert error: " + record.toString()); + throw new MallinkException(ErrorCode.DB_FAIL); + } + } else { + record = list.get(0); + payOrderNo = String.valueOf(record.getId()); } + WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); - { - // 统一下单 - String noncestr = Utility.generate32UUID(); - WxPayOrderP wxPayOrderP = new WxPayOrderP(); - wxPayOrderP.setOpenid(user.getOpenId()); - wxPayOrderP.setAppid(user.getAppId()); - wxPayOrderP.setMch_id(payAccount.getMchId()); - wxPayOrderP.setNonce_str(noncestr); - wxPayOrderP.setBody(order.getDetail()); - wxPayOrderP.setOut_trade_no(record.getPayOrderNo()); - wxPayOrderP.setTotal_fee(order.getPayment()); - wxPayOrderP.setSpbill_create_ip(record.getIp()); // 终端IP - wxPayOrderP.setNotify_url(payAccount.getPayNotifyUrl()); - wxPayOrderP.setTrade_type(WxPay.TradeType.JSAPI.name()); // 终端类型 - wxPayOrderP.setProduct_id(String.valueOf(order.getId())); // 订单ID - wxPayOrderP.setTime_start(Utility.getDataFormatStringYYYYMMDDHHmmss(currentTime)); - wxPayOrderP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(currentTime + 15 * 60)); // 15分钟结束 - wxPayOrderP.setSign(WxPayment.createSign(BeanUtils.toStringMap(wxPayOrderP), payAccount.getApiKey())); - String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderP)); - logger.info("pay order, wechat pushOrder, wxPayOrder:" + wxPayOrderP.toString() + ", response: " + response.toString()); - Map returnMap = WxPayment.xmlToMap(response); - String result_no = returnMap.get("result_code"); - if ("SUCCESS".equals(result_no)) { - String prepay_id = returnMap.get("prepay_id"); - String timestamp = String.valueOf(Utility.getCurrentTimeStamp()); - Map sighMap = MapUtil.getOrderMap(); - sighMap.put("appId", returnMap.get("appid")); - sighMap.put("timeStamp", timestamp); - sighMap.put("nonceStr", noncestr); - sighMap.put("package", "prepay_id="+prepay_id); - sighMap.put("signType", "MD5"); - String signAgent = WxPayment.createSign(sighMap, payAccount.getApiKey()); - returnMap.put("timeStamp", timestamp); - returnMap.put("nonceStr", noncestr); - returnMap.put("package", "prepay_id="+prepay_id); - returnMap.put("paySign", signAgent); - return new ResultData(200, "创建支付订单成功", returnMap); - } else { - JSONObject errObj = errorMap.getJSONObject(result_no); - return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), errObj.toJSONString(), returnMap); - } + + // 统一下单 + String noncestr = Utility.generate32UUID(); + WxPayOrderP wxPayOrderP = new WxPayOrderP(); + wxPayOrderP.setOpenid(user.getOpenId()); + wxPayOrderP.setAppid(user.getAppId()); + wxPayOrderP.setMch_id(payAccount.getMchId()); + wxPayOrderP.setNonce_str(noncestr); + wxPayOrderP.setBody(order.getDetail()); + wxPayOrderP.setOut_trade_no(record.getPayOrderNo()); + wxPayOrderP.setTotal_fee(order.getPayment()); + wxPayOrderP.setSpbill_create_ip(record.getIp()); // 终端IP + wxPayOrderP.setNotify_url(payAccount.getPayNotifyUrl()); + wxPayOrderP.setTrade_type(WxPay.TradeType.JSAPI.name()); // 终端类型 + wxPayOrderP.setProduct_id(String.valueOf(order.getId())); // 订单ID + wxPayOrderP.setTime_start(Utility.getDataFormatStringYYYYMMDDHHmmss(currentDate)); + Date futureDate = new Date(); + futureDate.setTime(currentDate.getTime() + 15*60*1000); + wxPayOrderP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 + wxPayOrderP.setSign(WxPayment.createSign(BeanUtils.toStringMap(wxPayOrderP), payAccount.getApiKey())); + String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderP)); + logger.info("pay order, wechat pushOrder, " + wxPayOrderP.toString() + ", response: " + response.toString()); + Map returnMap = WxPayment.xmlToMap(response); + returnMap.put("payOrderId", payOrderNo); + String result_code = returnMap.get("result_code"); + if ("SUCCESS".equals(result_code)) { + /* + Map signMap = WxPayment.buildWeappSecondSignMap(returnMap.get("appid"), + String.valueOf(Utility.getCurrentTimeStamp()), + returnMap.get("prepay_id"), + payAccount.getApiKey()); + + String signAgent = signMap.remove("sign"); + returnMap.putAll(signMap); + returnMap.put("paySign", signAgent); + */ + String prepay_id = returnMap.get("prepay_id"); + String timestamp = String.valueOf(Utility.getCurrentTimeStamp()); + Map sighMap = MapUtil.getOrderMap(); + sighMap.put("appId", returnMap.get("appid")); + sighMap.put("timeStamp", timestamp); + sighMap.put("nonceStr", noncestr); + sighMap.put("package", "prepay_id=" + prepay_id); + sighMap.put("signType", "MD5"); + String signAgent = WxPayment.createSign(sighMap, payAccount.getApiKey()); + returnMap.put("timeStamp", timestamp); + returnMap.put("nonceStr", noncestr); + returnMap.put("package", "prepay_id=" + prepay_id); + returnMap.put("paySign", signAgent); + logger.info("back to UI: " +returnMap.toString()); + return new ResultData(Result.SUCCESS, "创建支付订单成功", returnMap); + } else { + JSONObject errObj = errorMap.getJSONObject(result_code); + return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), errObj.toJSONString(), returnMap); } } catch (RuntimeException e) { throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); @@ -167,8 +186,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { /** * 提供微信支付回调调用 - * @param paramMap 异步通知参数 - * @param payWay 支付方式 + * + * @param paramMap 异步通知参数 + * @param payWay 支付方式 * @return */ @Override @@ -188,16 +208,14 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { try { if (payWay == EnumPayWay.PAY_WAY_WEAPP) { boolean signVerified = false; - if (payWay == EnumPayWay.PAY_WAY_WECHAT) { - // 微信支付 - signVerified = WxPayment.verifyNotify(paramMap, partnerKey); - } + // 微信支付 + signVerified = WxPayment.verifyNotify(paramMap, partnerKey); if (!signVerified) { - logger.warn("notify order, wxpay checksign error, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + logger.warn("notify order, wxpay checksign error, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); throw new MallinkException(ErrorCode.PAY_ORDER_NOTIFY_CHECK_SIGN_ERROR); } if (!"SUCCESS".equals(paramMap.get("return_code"))) { - logger.warn("notify order, wxpay status not success, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + logger.warn("notify order, wxpay status not success, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); Map resultMap = new LinkedHashMap<>(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "订单状态码非SUCCESS"); @@ -205,34 +223,45 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } String payOrderNo = paramMap.get("out_trade_no"); + String timEndStr = paramMap.get("time_end"); Long payOrderId = Long.valueOf(payOrderNo); WxPayOrder payOrder = wxPayOrderMapper.selectByPrimaryKey(payOrderId); if (payOrder == null) { - logger.warn("notify order, wxpay check pay order not exists, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + logger.warn("notify order, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); Map resultMap = new LinkedHashMap<>(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "订单不存在"); return XmlUtil.parseDto2Xml(resultMap, ""); } // 验证支付金额 - if(!paramMap.get("total_fee").equals(payOrder.getPayAmount().toString())) { - logger.warn("notify order, wxpay check total_fee is invalid, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + if (!paramMap.get("total_fee").equals(payOrder.getPayAmount().toString())) { + logger.warn("notify order, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); Map resultMap = new LinkedHashMap<>(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "订单总金额不一致"); return XmlUtil.parseDto2Xml(resultMap, ""); } + Date timeEnd = null; + + try { + timeEnd = Utility.getDateFromString(timEndStr); + } catch (ParseException e) { + logger.error("解析timeEnd失败"); + timeEnd = new Date(); + } + payOrder.setPayTimeEnd(timeEnd); + // 处理支付成功 handleOrderPaySuccess(payOrder, paramMap.get("transaction_id")); - logger.info("notify order, wxpay checksign success, paramMap:{}, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + logger.info("notify order, wxpay checksign success, paramMap:{}, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); Map resultMap = new LinkedHashMap<>(); resultMap.put("return_code", "SUCCESS"); resultMap.put("return_msg", "OK"); return XmlUtil.parseDto2Xml(resultMap, ""); } } catch (RuntimeException e) { - logger.warn("notify order, alipay checksign error, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); + logger.warn("notify order, alipay checksign error, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); throw new MallinkException(ErrorCode.PAY_ORDER_NOTIFY_CHECK_SIGN_ERROR); } return ""; @@ -246,8 +275,21 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) public void handleOrderPaySuccess(WxPayOrder record, String transactionId) { + Date currentDate = new Date(); EnumPayStatus payStatus = EnumPayStatus.getEnum(record.getPayOrderStatus()); // 判断支付状态 + if (payStatus == EnumPayStatus.PAY_WAY_SUCCESS) { + // 已经是成功状态,只更新transactionId + try { + record.setUpdateTime(currentDate); + record.setTransactionId(transactionId); + wxPayOrderMapper.updateByPrimaryKeySelective(record); + } catch (Exception e) { + logger.error(e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL); + } + return; + } if (payStatus != EnumPayStatus.PAY_WAY_WAIT) { logger.error("pay success handle, payOrder " + record.getPayOrderNo() + "is paid success , orderId : " + record.getOrderId()); @@ -255,20 +297,20 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } WxOrder order = wxOrderMapper.selectByPrimaryKey(record.getOrderId()); if (order == null) { - logger.error("pay success handle, order " + record.getOrderId() +" not found , payOrderGid : " + record.getPayOrderNo()); + logger.error("pay success handle, order " + record.getOrderId() + " not found , payOrderGid : " + record.getPayOrderNo()); throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); } - Date currentDate = new Date(); + // 修改支付订单状态 try { - WxPayOrder updatePayOrder = new WxPayOrder(); - updatePayOrder.setId(record.getId()); - updatePayOrder.setOrderId(record.getOrderId()); - updatePayOrder.setUpdateTime(currentDate); - updatePayOrder.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode()); - updatePayOrder.setTransactionId(transactionId); - wxPayOrderMapper.updateByPrimaryKeySelective(updatePayOrder); + WxPayOrder updateOrder = new WxPayOrder(); + updateOrder.setId(record.getId()); + updateOrder.setOrderId(record.getOrderId()); + updateOrder.setUpdateTime(currentDate); + updateOrder.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode()); + updateOrder.setTransactionId(transactionId); + wxPayOrderMapper.updateByPrimaryKeySelective(updateOrder); } catch (Exception e) { logger.error(e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL); @@ -297,6 +339,68 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { */ } + @Override + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public void handlePayOrderStatusUpdate(WxPayOrder record) { + // 判断支付状态 + if (record.getPayOrderStatus() == EnumPayStatus.PAY_WAY_WAIT.getCode()) { + logger.error("pay handle, payOrder " + record.getPayOrderNo() + + "is complete, orderId : " + record.getOrderId()); + return; + } + WxOrder order = wxOrderMapper.selectByPrimaryKey(record.getOrderId()); + if (order == null) { + logger.error("pay handle, order " + record.getOrderId() + " not found , payOrderGid : " + record.getPayOrderNo()); + throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); + } + + Date currentDate = new Date(); + // 修改支付订单状态 + try { + WxPayOrder updateOrder = new WxPayOrder(); + updateOrder.setId(record.getId()); + updateOrder.setOrderId(record.getOrderId()); + updateOrder.setUpdateTime(currentDate); + updateOrder.setPayOrderStatus(record.getPayOrderStatus()); + updateOrder.setPayTimeEnd(currentDate); + updateOrder.setFailReason(record.getFailReason()); + wxPayOrderMapper.updateByPrimaryKeySelective(updateOrder); + } catch (Exception e) { + logger.error(e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL); + } + + // 修改订单状态 + if (record.getPayOrderStatus() == EnumPayStatus.PAY_WAY_SUCCESS.getCode()) { + try { + wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS); + } catch (Exception e) { + logger.error(e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL); + } + } else if (record.getPayOrderStatus() == EnumPayStatus.PAY_WAY_CANCEL.getCode()) { + try { + wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL); + } catch (Exception e) { + logger.error(e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL); + } + } + /* + Map msgMap = new HashMap<>(); + try { + msgMap.put("name", String.valueOf(order.getCouponId())); + msgMap.put("orderNo", String.valueOf(order.getId())); + msgMap.put("createTime", Utility.getDataFormatString3(order.getCreateDate())); + msgMap.put("standingTime", order.getCreateDate() + "-" + currentDate ); + // 短信 通知 商户 + //smsSenderHandler.sendSms("SMS_18195394", order.getMobile(), msgMap); + } catch (Exception e) { + logger.error("pay success handle, sms send exception, payOrderi: " + updatePayOrder+ ", msgMap: " + msgMap.toString() + ", e: " + e.getMessage()); + } + */ + } + @Override public PageInfo listAsPage(WxPayOrder record, Integer pageIndex, Integer pageSize) { @@ -312,8 +416,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { public void saveOrUpdate(WxPayOrder record) { if (record.getId() == null) { //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); - IdWorker idWorker = new IdWorker(0, 0); - record.setId(idWorker.nextId()); + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); wxPayOrderMapper.insertSelective(record); } else { wxPayOrderMapper.updateByPrimaryKeySelective(record); @@ -324,12 +428,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { public void deleteById(Long id) { wxPayOrderMapper.deleteByPrimaryKey(id); } - - - - - - - - + + } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java new file mode 100644 index 000000000..ac475f67f --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -0,0 +1,214 @@ +package com.simple.service.impl; + +import java.util.*; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.simple.common.ErrorCode; +import com.simple.common.ResultData; +import com.simple.domain.po.*; +import com.simple.enums.EnumPayDomain; +import com.simple.enums.EnumProfitSharingReceiverType; +import com.simple.enums.EnumProfitSharingStatus; +import com.simple.exception.MallinkException; +import com.simple.mapper.*; +import com.simple.pay.WxPayment; +import com.simple.pay.WxProfitSharing; +import com.simple.pay.WxProfitSharingP; +import com.simple.service.WxProfitSharingOrderService; +import com.simple.utils.BeanUtils; +import com.simple.utils.Utility; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.simple.common.IdWorker; + + + +@Service +public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderService { + + @Autowired + WxProfitSharingOrderMapper wxProfitSharingOrderMapper; + + @Autowired + WxAppinfoMapper wxAppinfoMapper; + + @Autowired + WxPayAccountMapper wxPayAccountMapper; + + @Autowired + WxOrderMapper wxOrderMapper; + + @Autowired + WxProfitSharingReceiverMapper wxProfitSharingReceiverMapper; + + @Autowired + WxProfitSharingResultMapper wxProfitSharingResultMapper; + + + + final JSONObject errorMap = JSON.parseObject( + "{\"SYSTEMERROR\":{\"detail\":\"接口返回错误\",\"reason\":\"系统超时\",\"resolution\":\"系统异常,请用相同参数重新调用\"}," + + "\"AMOUNT_OVERDUE\":{\"detail\":\"分账金额超限\",\"reason\":\"分账金额大于可分金额 或大于分账最大比例 \",\"resolution\":\"请调整分账金额\"}," + + "\"RECEIVER_INVALID\":{\"detail\":\"分账接收方非法 \",\"reason\":\"未配置分账接收方\",\"resolution\":\"分账接收方在分账之前需要进行添加\"}," + + "\"INVALID_TRANSACTIONID\":{\"detail\":\"无效的微信支付订单号\",\"reason\":\"请求参数未按指引进行填写\",\"resolution\":\"检查原交易单号是否存在\"}," + + "\"PARAM_ERROR\":{\"detail\":\"参数错误\t\",\"reason\":\"请求参数未按指引进行填写\",\"resolution\":\"请求参数错误,请重新检查再调用分账接口\"}," + + "\"INVALID_REQUEST\":{\"detail\":\"请求不合法\",\"reason\":\"参数中APPID或MCHID不存在等 \",\"resolution\":\"请重新检查再调用分账接口\"}," + + "\"OPENID_MISMATCH\":{\"detail\":\"Openid错误\",\"reason\":\"Openid与Appid不匹配\",\"resolution\":\"请检查openid是否正确\"}," + + "\"FREQUENCY_LIMITED\":{\"detail\":\"频率限制\",\"reason\":\"请求过多被频率限制\",\"resolution\":\"该被请求未受理,请降低频率后原单重试,请勿更换商户分账单号\"}," + + "\"ORDER_NOT_READY\":{\"detail\":\"订单处理中\",\"reason\":\"订单处理中暂时无法分账\",\"resolution\":\"订单处理中暂时无法分账,请稍后再试\"}," + + "\"NOAUTH \":{\"detail\":\"无分账权限\",\"reason\":\"未开通分账权限\",\"resolution\":\"请先开通分账权限\"}," + + "\"NOT_SHARE_ORDER\":{\"detail\":\"非分账订单\t\",\"reason\":\"不是分账订单,无法分账\",\"resolution\":\"下单时请用合适的参数\"}}"); + + @Override + public PageInfo listAsPage(WxProfitSharingOrder record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxProfitSharingOrderMapper.findList(record)); + } + + @Override + public WxProfitSharingOrder getById(Long id) { + return wxProfitSharingOrderMapper.selectByPrimaryKey(id); + } + + @Override + public void saveOrUpdate(WxProfitSharingOrder record) { + if (record.getId() == null) { + //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + wxProfitSharingOrderMapper.insertSelective(record); + } else { + wxProfitSharingOrderMapper.updateByPrimaryKeySelective(record); + } + } + + @Override + public void deleteById(Long id) { + wxProfitSharingOrderMapper.deleteByPrimaryKey(id); + } + + @Autowired + WxPayOrderMapper wxPayOrderMapper; + + @Override + public void test() { + createSharingOrder(wxAppinfoMapper.selectByPrimaryKey(new Long(1L)),wxPayOrderMapper.selectByPrimaryKey(new Long(190403470006681600L))); + } + + @Override + public ResultData createSharingOrder(WxAppinfo subAppInfo, WxPayOrder wxPayOrder) { + final IdWorker idworker = IdWorker.get(); + + WxProfitSharingOrder record = new WxProfitSharingOrder(); + try { + WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxPayOrder.getOrderId()); + //是否已创建分账订单 + record.setOrderId(wxPayOrder.getId().toString()); + record = wxProfitSharingOrderMapper.selectOne(record); + if (record == null) { + //创建分账订单 + Date currentDate = new Date(); + record = new WxProfitSharingOrder(); + record.setId(idworker.nextId()); + record.setTenantId(wxPayOrder.getTenantId()); + record.setTransactionId(wxPayOrder.getTransactionId()); + record.setOrderId(wxPayOrder.getId().toString()); + record.setPayAmount(wxPayOrder.getPayAmount()); + record.setMerchantId(wxOrder.getMerchantId().toString()); + record.setCreateTime(currentDate); + record.setUpdateTime(currentDate); + record.setPayTimeStart(currentDate); + record.setPayTimeEnd(currentDate); + + wxProfitSharingOrderMapper.insertSelective(record); + } + + WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(subAppInfo.getPayId()); + //WxPayAccount mainPayAccount = wxPayAccountMapper.selectByPrimaryKey(new Long(EnumPayDomain.PAY_DOMAIN_MASTER_ACCOUNT_ID.getCode())); + //WxAppinfo mainAppInfo = wxAppinfoMapper.selectByPrimaryKey(new Long(EnumPayDomain.PAY_DOMAIN_MASTER_APPINFO_ID.getCode())); + + //分账提交 + WxProfitSharingP wxProfitSharingP = new WxProfitSharingP(); + //wxProfitSharingP.setAppid(mainAppInfo.getAppId()); + //wxProfitSharingP.setMch_id(mainPayAccount.getMchId()); + wxProfitSharingP.setAppid(subAppInfo.getAppId()); + wxProfitSharingP.setMch_id(payAccount.getMchId()); + wxProfitSharingP.setSub_appid(subAppInfo.getAppId()); + wxProfitSharingP.setSub_mch_id(payAccount.getMchId()); + wxProfitSharingP.setNonce_str(Utility.generate32UUID()); + wxProfitSharingP.setTransaction_id(wxPayOrder.getTransactionId()); + wxProfitSharingP.setOut_trade_no(record.getId().toString()); + + //添加分账接受方 + WxProfitSharingReceiver wxProfitSharingReceiver = new WxProfitSharingReceiver(); + wxProfitSharingReceiver.setMerchantId(wxOrder.getMerchantId().toString()); + wxProfitSharingReceiver.setSharingType(1); + List wxProfitSharingReceiverList = wxProfitSharingReceiverMapper.findList(wxProfitSharingReceiver); + if (wxProfitSharingReceiverList.size()<=0 || wxProfitSharingReceiverList.size() > 50) { + throw new MallinkException(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getMessage()); + } + JSONArray receivers = new JSONArray(); + List resultList = new ArrayList(); + for (int i=0;i returnMap = WxPayment.xmlToMap(response); + String return_code = returnMap.get("return_code"); + if (!"SUCCESS".equals(return_code)) { + record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_REQ_FAILED.getCode()); + record.setUpdateTime(new Date()); + wxProfitSharingOrderMapper.updateByPrimaryKey(record); + return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); + } + + if (!WxPayment.verifyNotify(returnMap,payAccount.getApiKey())){ + return new ResultData(ErrorCode.PROFIT_SHARING_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); + } + + String result_code = returnMap.get("result_code"); + if (!"SUCCESS".equals(result_code)) { + record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_APPLY_FAILED.getCode()); + record.setUpdateTime(new Date()); + wxProfitSharingOrderMapper.updateByPrimaryKey(record); + return new ResultData(ErrorCode.PROFIT_SHARING_APPLY_FAILED.getCode(), returnMap.get("result_msg")); + } + + record.setSharingOrderId(returnMap.get("order_id")); + record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_ACCEPTED.getCode()); + record.setUpdateTime(new Date()); + wxProfitSharingOrderMapper.updateByPrimaryKey(record); + wxProfitSharingResultMapper.insertList(resultList); + return new ResultData(returnMap); + + } catch (RuntimeException e) { + throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); + } catch (Exception e) { + throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); + } + } +} diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java new file mode 100644 index 000000000..bc96d5222 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java @@ -0,0 +1,54 @@ +package com.simple.service.impl; + +import java.util.*; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.simple.domain.po.WxProfitSharingReceiver; +import com.simple.mapper.WxProfitSharingReceiverMapper; +import com.simple.service.WxProfitSharingReceiverService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.simple.common.IdWorker; + +@Service +public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiverService { + + @Autowired + WxProfitSharingReceiverMapper wxProfitSharingReceiverMapper; + + + @Override + public PageInfo listAsPage(WxProfitSharingReceiver record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxProfitSharingReceiverMapper.findList(record)); + } + + @Override + public WxProfitSharingReceiver getById(Long id) { + return wxProfitSharingReceiverMapper.selectByPrimaryKey(id); + } + + @Override + public void saveOrUpdate(WxProfitSharingReceiver record) { + if (record.getId() == null) { + //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + wxProfitSharingReceiverMapper.insertSelective(record); + } else { + wxProfitSharingReceiverMapper.updateByPrimaryKeySelective(record); + } + } + + @Override + public void deleteById(Long id) { + wxProfitSharingReceiverMapper.deleteByPrimaryKey(id); + } + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingResultServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingResultServiceImpl.java new file mode 100644 index 000000000..bdc71de07 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingResultServiceImpl.java @@ -0,0 +1,54 @@ +package com.simple.service.impl; + +import java.util.*; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.simple.domain.po.WxProfitSharingResult; +import com.simple.mapper.WxProfitSharingResultMapper; +import com.simple.service.WxProfitSharingResultService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.simple.common.IdWorker; + +@Service +public class WxProfitSharingResultServiceImpl implements WxProfitSharingResultService { + + @Autowired + WxProfitSharingResultMapper wxProfitSharingResultMapper; + + + @Override + public PageInfo listAsPage(WxProfitSharingResult record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxProfitSharingResultMapper.findList(record)); + } + + @Override + public WxProfitSharingResult getById(Long id) { + return wxProfitSharingResultMapper.selectByPrimaryKey(id); + } + + @Override + public void saveOrUpdate(WxProfitSharingResult record) { + if (record.getId() == null) { + //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + wxProfitSharingResultMapper.insertSelective(record); + } else { + wxProfitSharingResultMapper.updateByPrimaryKeySelective(record); + } + } + + @Override + public void deleteById(Long id) { + wxProfitSharingResultMapper.deleteByPrimaryKey(id); + } + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java index bc9674490..1a50cf5d8 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.simple.common.ErrorCode; +import com.simple.common.Result; import com.simple.common.ResultData; import com.simple.domain.po.*; import com.simple.enums.EnumOrderStatus; @@ -18,10 +19,12 @@ import com.simple.mapper.*; import com.simple.pay.WxPay; import com.simple.pay.WxPayment; import com.simple.pay.WxRefundOrderP; +import com.simple.service.WxOrderService; import com.simple.service.WxRefundOrderService; import com.simple.utils.BeanUtils; import com.simple.utils.Utility; import com.simple.utils.XmlUtil; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -48,6 +51,9 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { @Autowired WxPayAccountMapper wxPayAccountMapper; + @Autowired + WxOrderService wxOrderService; + JSONObject errorRefundReqMap = JSON.parseObject("{\n" + " \"SYSTEMERROR\": {\n" + " \"detail\": \"接口返回错误\",\n" + @@ -206,33 +212,51 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { @Override public ResultData createRefundOrder(WxAppinfo appInfo, WxRefundOrder record, EnumPayWay payWay) { + WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); + if (StringUtils.isBlank(payAccount.getApiKey())) { + logger.error("支付密钥为空"); + throw new MallinkException(ErrorCode.API_KEY_NOT_FOUND.getCode(), "支付密钥为空,请联系商城管理员"); + } + if (StringUtils.isBlank(payAccount.getCertPath())) { + logger.error("证书路径为空"); + throw new MallinkException(ErrorCode.CERT_PATH_NOT_FOUND.getCode(), "证书路径为空,请联系商城管理员"); + } // check 是否有退款订单 List list = wxRefundOrderMapper.findList(record); if (list.size() > 0) { - throw new MallinkException(ErrorCode.REFUND_ORDER_EXIST); + logger.error("退款订单已存在, 无法再提交退款申请"); + throw new MallinkException(ErrorCode.REFUND_ORDER_EXIST.getCode(), "退款订单已存在, 无法再提交退款申请"); } // check 支付 订单 WxPayOrder payOrder = null; + Long payOrderId = 0L; + try { + payOrderId = Long.valueOf(record.getPayOrderNo()); + } catch (NumberFormatException e) { + logger.error("参数转换异常: payOrderId-" + record.getPayOrderNo()); + throw new MallinkException(ErrorCode.PARAMETER_CAST_ERROR.getCode(), "参数转换异常: payOrderId-" + record.getPayOrderNo()); + } try { WxPayOrder payOrderQ = new WxPayOrder(); payOrderQ.setOrderId(record.getOrderId()); - payOrderQ.setId(Long.valueOf(record.getPayOrderNo())); + payOrderQ.setId(payOrderId); payOrderQ.setPayOrderNo(record.getPayOrderNo()); payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode()); payOrder = wxPayOrderMapper.selectOne(payOrderQ); } catch (Exception e) { + logger.error("数据库获取异常: " + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL); } if (payOrder == null) { + logger.error("支付订单不存在: " + record.toString()); throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_NOT_EXIST); } if (payOrder.getPayAmount() <= 0) { - throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_NOT_EXIST); + logger.error("支付订单金额小于等于0: " + record.toString()); + throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO); } - // TODO check 可退券???? - // 创建退款订单 final IdWorker idWorker = IdWorker.get(); Long id = idWorker.nextId(); @@ -247,55 +271,75 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { record.setCUserId(payOrder.getCUserId()); record.setTotalFee(payOrder.getPayAmount()); record.setRefundFee(payOrder.getPayAmount()); - record.setRefundTimeStart((int)(currentDate.getTime()/1000)); + record.setRefundTimeStart(currentDate); record.setRefundOrderStatus(EnumRefundStatus.REFUND_WAIT.getCode()); int sqlRow = wxRefundOrderMapper.insertSelective(record); if(sqlRow != 1) { + logger.error("退款订单数据库插入出错: " + record.toString()); throw new MallinkException(ErrorCode.DB_FAIL); } } catch (Exception e) { + logger.error("退款订单数据库插入出错: " + record.toString()); throw new MallinkException(ErrorCode.DB_FAIL); } - WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); - // 退款申请 - try { - String noncestr = Utility.generate32UUID(); - WxRefundOrderP wxRefundOrderP = new WxRefundOrderP(); - wxRefundOrderP.setAppid(appInfo.getAppId()); - wxRefundOrderP.setMch_id(payAccount.getMchId()); - wxRefundOrderP.setNonce_str(noncestr); + String noncestr = Utility.generate32UUID(); + WxRefundOrderP wxRefundOrderP = new WxRefundOrderP(); + wxRefundOrderP.setAppid(appInfo.getAppId()); + wxRefundOrderP.setMch_id(payAccount.getMchId()); + wxRefundOrderP.setNonce_str(noncestr); + if (record.getTransactionId() == null) wxRefundOrderP.setTransaction_id(record.getTransactionId()); - wxRefundOrderP.setOut_trade_no(record.getPayOrderNo()); - wxRefundOrderP.setTotal_fee(record.getTotalFee()); - wxRefundOrderP.setRefund_fee(record.getRefundFee()); - wxRefundOrderP.setSign(WxPayment.createSign(BeanUtils.toStringMap(wxRefundOrderP), payAccount.getApiKey())); - String response = WxPay.orderRefund(BeanUtils.toStringMap(wxRefundOrderP), payAccount.getCertPath(), payAccount.getApiKey()); - logger.info("微信退款订单:" + wxRefundOrderP.toString() + ", response: " + response.toString()); - Map returnMap = WxPayment.xmlToMap(response); - String result_no = returnMap.get("result_code"); - if ("SUCCESS".equals(result_no)) { - String refund_id = returnMap.get("refund_id"); - record.setRefundId(refund_id); + wxRefundOrderP.setOut_trade_no(record.getPayOrderNo()); + wxRefundOrderP.setTotal_fee(record.getTotalFee()); + wxRefundOrderP.setRefund_fee(record.getRefundFee()); + + Map signMap = new HashMap(); + try { + signMap = BeanUtils.toStringMap(wxRefundOrderP); + } catch (Exception e) { + logger.error("退款签名异常"); + throw new MallinkException(ErrorCode.PARAMETER_CAST_ERROR.getCode(), "退款签名异常"); + } + String signAgent = WxPayment.createSign(signMap, payAccount.getApiKey()); + signMap.put("sign", signAgent); + String response = WxPay.orderRefund(signMap, payAccount.getCertPath(), payAccount.getApiKey()); + logger.info("微信退款订单:" + wxRefundOrderP.toString() + ", response: " + response.toString()); + Map returnMap = WxPayment.xmlToMap(response); + String result_no = returnMap.get("result_code"); + String refund_id = returnMap.get("refund_id"); + // 设置 微信退款订单号 + record.setRefundId(refund_id); + if ("SUCCESS".equals(result_no)) { + logger.error("微信退款订单申请成功: " + returnMap.toString()); + try { record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_SUCCESS.getCode()); wxRefundOrderMapper.updateByPrimaryKey(record); - return new ResultData(200, "退款订单申请成功", returnMap); - } else { - String refund_id = returnMap.get("refund_id"); - record.setRefundId(refund_id); + return new ResultData(Result.SUCCESS, "退款订单申请成功", returnMap); + } catch (Exception e) { + logger.error("微信退款订单更新入库出错: " + e.getMessage() + ", record: " + record.toString()); + throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR); + } + } else { + logger.error("微信退款订单申请失败: " + returnMap.toString()); + try { record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode()); wxRefundOrderMapper.updateByPrimaryKey(record); JSONObject errObj = errorRefundReqMap.getJSONObject(result_no); return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), errObj.toJSONString(), returnMap); + } catch(Exception e) { + logger.error("微信退款订单更新入库出错: " + e.getMessage() + ", record: " + record.toString()); + throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR); } - } catch(Exception e) { - throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR); } } - // TODO - // 微信退款查询 + /** + * 微信退款查询 + * @param appInfo + * @param record + */ @Override public ResultData queryRefundOrder(WxAppinfo appInfo, WxRefundOrder record) { WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); @@ -307,7 +351,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { String result_no = returnMap.get("result_code"); if ("SUCCESS".equals(result_no)) { String refund_id = returnMap.get("refund_id"); - return new ResultData(200, "退款", returnMap); + return new ResultData(Result.SUCCESS, "退款", returnMap); } else { wxRefundOrderMapper.updateByPrimaryKey(record); JSONObject errObj = errorRefundReqMap.getJSONObject(result_no); @@ -433,23 +477,24 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { "is paid success , orderId : " + refundOrder.getOrderId()); return; } - /* - WxOrder order = wxRefundOrderMapper.selectByPrimaryKey(record.getOrderId()); + + WxOrder order = wxOrderMapper.selectByPrimaryKey(refundOrder.getOrderId()); if (order == null) { - logger.error("pay success handle, order " + record.getOrderId() +" not found , payOrderGid : " + record.getPayOrderNo()); + logger.error("pay success handle, order " + refundOrder.getOrderId() +" not found , refundId : " + refundOrder.getId()); throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); } Date currentDate = new Date(); - // 修改支付订单状态 + // 修改退款订单状态 try { - WxPayOrder updatePayOrder = new WxPayOrder(); - updatePayOrder.setId(record.getId()); - updatePayOrder.setOrderId(record.getOrderId()); - updatePayOrder.setUpdateTime(currentDate); - updatePayOrder.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode()); - updatePayOrder.setTransactionId(transactionId); - wxPayOrderMapper.updateByPrimaryKeySelective(updatePayOrder); + WxRefundOrder updateOrder = new WxRefundOrder(); + updateOrder.setId(refundOrder.getId()); + updateOrder.setOrderId(refundOrder.getOrderId()); + updateOrder.setUpdateTime(currentDate); + updateOrder.setRefundOrderStatus(EnumRefundStatus.REFUND_SUCCESS.getCode()); + updateOrder.setTransactionId(transactionId); + updateOrder.setRefundId(refundId); + wxRefundOrderMapper.updateByPrimaryKeySelective(updateOrder); } catch (Exception e) { logger.error(e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL); @@ -457,12 +502,11 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { // 修改订单状态 try { - wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS); + wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_REFUND_SUCCESS); } catch (Exception e) { logger.error(e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL); } - */ /* Map msgMap = new HashMap<>(); try { diff --git a/mallinkService/src/main/java/com/simple/utils/Utility.java b/mallinkService/src/main/java/com/simple/utils/Utility.java index e86068665..26e39c725 100644 --- a/mallinkService/src/main/java/com/simple/utils/Utility.java +++ b/mallinkService/src/main/java/com/simple/utils/Utility.java @@ -526,6 +526,16 @@ public final class Utility { return sf.format(((long) currentSec) * 1000); } + public static String getDataFormatStringYYYYMMDDHHmmss(Date currentDate) { + SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); + return sf.format(currentDate); + } + + public static Date getDateFromString(String timeEnd) throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + return sdf.parse(timeEnd); + } + public static String getOrderNo() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateStr = sdf.format(new Date()); diff --git a/mallinkService/src/main/resources/mapper/WxCUserCarsMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserCarMapper.xml similarity index 92% rename from mallinkService/src/main/resources/mapper/WxCUserCarsMapper.xml rename to mallinkService/src/main/resources/mapper/WxCUserCarMapper.xml index 31f261e49..65e963ceb 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserCarsMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserCarMapper.xml @@ -1,7 +1,7 @@ - - + + @@ -67,14 +67,9 @@ order by ${sortColumns} - + select from wx_c_user_car - - - - - diff --git a/mallinkService/src/main/resources/mapper/WxCarCmdLogsMapper.xml b/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml similarity index 75% rename from mallinkService/src/main/resources/mapper/WxCarCmdLogsMapper.xml rename to mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml index f1a0f5690..12e02bc44 100644 --- a/mallinkService/src/main/resources/mapper/WxCarCmdLogsMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml @@ -1,18 +1,18 @@ - - + + - - + + - `id`,`tenant_id`,`support_vendor`,`cmd_type`,`create_date`,`update_date`,`cmd_json` + `id`,`tenant_id`,`vendor_type`,`cmd_type`,`create_date`,`update_date`,`cmd_json` @@ -28,13 +28,13 @@ - - and `support_vendor` = #{supportVendor} + + and `vendor_type` = #{vendorType} - and `cmd_type` like concat('%', #{cmdType},'%') + and `cmd_type` = #{cmdType} @@ -61,8 +61,8 @@ order by ${sortColumns} - + select from wx_car_cmd_log diff --git a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index 28aab475c..3b4ed7811 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -327,6 +327,145 @@ order by ${sortColumns} + + where 1 = 1 + + + and `id` = #{id} + + + + + and `tenant_id` like concat('%', #{tenantId},'%') + + + + + and `merchant_id` = #{merchantId} + + + + + and `type` = #{type} + + + + + and `cover_img` like concat('%', #{coverImg},'%') + + + + + and `title` like concat('%', #{title},'%') + + + + + and `sub_title` like concat('%', #{subTitle},'%') + + + + + and `sale_price` = #{salePrice} + + + + + and `use_price` = #{usePrice} + + + + + and `use_limit_quantity` = #{useLimitQuantity} + + + + + and `target_ad` = #{targetAd} + + + + + and `send_type` = #{sendType} + + + + and `send_end_date` >= NOW() + and `send_start_date` <= NOW() + + + and `valid_type` = #{validType} + + + + + and `valid_start_date` = #{validStartDate} + + + + + and `valid_end_date` = #{validEndDate} + + + + + and `valid_days` = #{validDays} + + + + + and `detail` like concat('%', #{detail},'%') + + + + + and `price` = #{price} + + + + + and `remain_inventory` = #{remainInventory} + + + + + and `inventory` = #{inventory} + + + + + and `remark` like concat('%', #{remark},'%') + + + + + and `status` in (0,1,2) + + + + + and `create_date` = #{createDate} + + + + + and `update_date` = #{updateDate} + + + + + and `business` like concat('%', #{business},'%') + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 3d7ba0907..3656f4487 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -90,9 +90,4 @@ - - - - - diff --git a/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml index 092b603c4..bfc8a822e 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml @@ -9,78 +9,100 @@ + + + - + - `id`,`tenant_id`,`merchant_id`,`coupon_id`,`type`,`title`,`send_type`,`create_date`,`update_date` + `id`,`tenant_id`,`merchant_id`,`coupon_id`,`type`,`title`,`send_type`,`status`,`send_start_time`,`send_end_time`,`create_date`,`update_date` - where 1 = 1 - - - and `id` = #{id} - - - - - and `tenant_id` like concat('%', #{tenantId},'%') - - - - - and `merchant_id` = #{merchantId} - - - - - and `coupon_id` = #{couponId} - - - - - and `type` = #{type} - - - - - and `title` like concat('%', #{title},'%') - - - - - and `send_type` = #{sendType} - - - - - and `create_date` = #{createDate} - - - - - and `update_date` = #{updateDate} - - + where 1 = 1 + + + and `id` = #{id} + + + + + and `tenant_id` like concat('%', #{tenantId},'%') + + + + + and `merchant_id` = #{merchantId} + + + + + and `coupon_id` = #{couponId} + + + + + and `type` = #{type} + + + + + and `title` like concat('%', #{title},'%') + + + + + and `send_type` = #{sendType} + + + + + and `status` = #{status} + + + + + and `send_start_time` = #{sendStartTime} + + + + + and `send_end_time` = #{sendEndTime} + + + + and `send_end_time` >= NOW() + and `send_start_time` <= NOW() + + + + and `create_date` = #{createDate} + + + + + and `update_date` = #{updateDate} + + - and id in + and id in - #{idItem} + #{idItem} - + order by ${sortColumns} - + - - - - - - + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 45cdb4408..785b57305 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -6,6 +6,7 @@ + @@ -17,7 +18,7 @@ - `id`,`order_number`,`tenant_id`,`c_user_id`,`b_user_id`,`payment_type`,`payment`,`payment_time`,`order_status`,`create_date`,`update_date`,`detail` + `id`,`order_number`,`tenant_id`,`c_user_id`,`merchant_id`,`b_user_id`,`payment_type`,`payment`,`payment_time`,`order_status`,`create_date`,`update_date`,`detail` @@ -43,6 +44,11 @@ + + and `merchant_id` = #{merchantId} + + + and `b_user_id` = #{bUserId} @@ -98,13 +104,15 @@ diff --git a/mallinkService/src/main/resources/mapper/WxParkMapper.xml b/mallinkService/src/main/resources/mapper/WxParkMapper.xml index 42830ebb7..403962394 100644 --- a/mallinkService/src/main/resources/mapper/WxParkMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxParkMapper.xml @@ -9,12 +9,13 @@ + - `id`,`tenant_id`,`addr`,`number`,`entry_exit`,`create_date`,`update_date`,`vendor_type`,`vendor_params` + `id`,`tenant_id`,`addr`,`number`,`entry_exit`,`create_date`,`update_date`,`park_id`,`vendor_type`,`vendor_params` @@ -55,6 +56,11 @@ + + and `park_id` like concat('%', #{parkId},'%') + + + and `vendor_type` = #{vendorType} diff --git a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml index 60de75590..03f72127a 100644 --- a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml @@ -3,15 +3,15 @@ - + - - + + @@ -32,7 +32,7 @@ - and `tenant_id` = #{tenantId} + and `tenant_id` like concat('%', #{tenantId},'%') diff --git a/mallinkService/src/main/resources/mapper/WxProfitSharingOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxProfitSharingOrderMapper.xml new file mode 100644 index 000000000..832c2c2a1 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxProfitSharingOrderMapper.xml @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`merchant_id`,`order_id`,`pay_amount`,`pay_time_end`,`pay_time_start`,`transaction_id`,`sharing_order_id`,`error_msg`,`sharing_status`,`update_time`,`create_time` + + + + where 1 = 1 + + + and `id` = #{id} + + + + + and `tenant_id` = #{tenantId} + + + + + and `merchant_id` = #{merchantId} + + + + + and `order_id` = #{orderId} + + + + + and `pay_amount` = #{payAmount} + + + + + and `pay_time_end` = #{payTimeEnd} + + + + + and `pay_time_start` = #{payTimeStart} + + + + + and `transaction_id` like concat('%', #{transactionId},'%') + + + + + and `sharing_order_id` like concat('%', #{sharingOrderId},'%') + + + + + and `error_msg` like concat('%', #{errorMsg},'%') + + + + + and `sharing_status` like concat('%', #{sharingStatus},'%') + + + + + and `update_time` = #{updateTime} + + + + + and `create_time` = #{createTime} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxProfitSharingReceiverMapper.xml b/mallinkService/src/main/resources/mapper/WxProfitSharingReceiverMapper.xml new file mode 100644 index 000000000..caa6c998e --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxProfitSharingReceiverMapper.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + `id`,`merchant_id`,`receiver_type`,`receiver_account`,`receiver_comments`,`create_time`,`update_time`,`sharing_type`,`bank_no`,`true_name`,`bank_code` + + + + where 1 = 1 + + + and `id` = #{id} + + + + + and `merchant_id` = #{merchantId} + + + + + and `receiver_type` = #{receiverType} + + + + + and `receiver_account` like concat('%', #{receiverAccount},'%') + + + + + and `receiver_comments` like concat('%', #{receiverComments},'%') + + + + + and `create_time` = #{createTime} + + + + + and `update_time` = #{updateTime} + + + + + and `sharing_type` = #{sharingType} + + + + + and `bank_no` like concat('%', #{bankNo},'%') + + + + + and `true_name` like concat('%', #{trueName},'%') + + + + + and `bank_code` like concat('%', #{bankCode},'%') + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxProfitSharingResultMapper.xml b/mallinkService/src/main/resources/mapper/WxProfitSharingResultMapper.xml new file mode 100644 index 000000000..f361df0e6 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxProfitSharingResultMapper.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + `id`,`sharing_order_id`,`sharing_receiver_id`,`pay_amount`,`update_time`,`create_time`,`sharing_status`,`finish_time`,`failed_reason` + + + + where 1 = 1 + + + and `id` = #{id} + + + + + and `sharing_order_id` = #{sharingOrderId} + + + + + and `sharing_receiver_id` = #{sharingReceiverId} + + + + + and `pay_amount` = #{payAmount} + + + + + and `update_time` = #{updateTime} + + + + + and `create_time` = #{createTime} + + + + + and `sharing_status` = #{sharingStatus} + + + + + and `finish_time` like concat('%', #{finishTime},'%') + + + + + and `failed_reason` like concat('%', #{failedReason},'%') + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxRefundOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxRefundOrderMapper.xml index 7f86d8a5f..f20bf75d5 100644 --- a/mallinkService/src/main/resources/mapper/WxRefundOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxRefundOrderMapper.xml @@ -12,8 +12,8 @@ - - + + diff --git a/mallinkService/src/main/resources/mapper/WxShopMapper.xml b/mallinkService/src/main/resources/mapper/WxShopMapper.xml index 6675742eb..498e7c912 100644 --- a/mallinkService/src/main/resources/mapper/WxShopMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxShopMapper.xml @@ -18,10 +18,12 @@ + + - `id`,`tenant_id`,`shop_number`,`build_area`,`operation_area`,`building`,`floor`,`status`,`x`,`y`,`addr`,`baidu_poi`,`longitude`,`latitude`,`create_date`,`update_date` + `id`,`tenant_id`,`shop_number`,`build_area`,`operation_area`,`building`,`floor`,`status`,`x`,`y`,`addr`,`baidu_poi`,`longitude`,`latitude`,`create_date`,`update_date`,`img_url`