diff --git a/mallinkAdmin/src/main/java/com/simple/config/ShiroConfig.java b/mallinkAdmin/src/main/java/com/simple/config/ShiroConfig.java index fc9b10ced..39db846a1 100644 --- a/mallinkAdmin/src/main/java/com/simple/config/ShiroConfig.java +++ b/mallinkAdmin/src/main/java/com/simple/config/ShiroConfig.java @@ -117,6 +117,7 @@ public class ShiroConfig { // } // } filterChainDefinitionMap.put("/swagger-ui.html","anon"); + filterChainDefinitionMap.put("/wxPay/notify/**", "anon"); filterChainDefinitionMap.put("/v2/**","anon"); filterChainDefinitionMap.put("/swagger-resources/**","anon"); filterChainDefinitionMap.put("/webjars/**","anon"); diff --git a/mallinkAdmin/src/main/java/com/simple/controller/CouponInjectController.java b/mallinkAdmin/src/main/java/com/simple/controller/CouponInjectController.java new file mode 100644 index 000000000..c94eaef23 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/simple/controller/CouponInjectController.java @@ -0,0 +1,100 @@ +package com.simple.controller; + +import com.alibaba.fastjson.JSON; +import com.github.pagehelper.PageInfo; +import com.simple.common.Result; +import com.simple.common.ResultData; +import com.simple.domain.po.CouponInject; +import com.simple.service.CouponInjectService; +import com.simple.service.WxCUserTagsService; +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.ArrayList; +import java.util.Date; +import java.util.List; + +@Api(description = "精准投放接口") +@RestController +@RequestMapping("couponInject") +public class CouponInjectController extends BaseController +{ + @Autowired + private CouponInjectService couponInjectService; + @Autowired + private WxCUserTagsService wxCUserTagsService; + + private Logger logger = Logger.getLogger(CouponInjectController.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 CouponInject couponInject, Integer pageNum, Integer pageSize) { + if (null == couponInject) couponInject = new CouponInject(); + if(couponInject.getStatus()!=null&&couponInject.getStatus()==-1){ + couponInject.setStatus(null); + } + final PageInfo page = couponInjectService.listAsPage(couponInject, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation("新增接口") + @PostMapping("add") + public ResultData add(@RequestBody CouponInject couponInject) { + + couponInject.setTenantId(getUser().getTenantId()); + couponInject.setMUserId(getUser().getId()); + if(couponInject.getSendType()==0){ + couponInject.setSendTime(new Date()); + } + //Assert.notNull(couponInject.getName(), "角色名不能为空"); + //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); + couponInjectService.add(couponInject); + return new ResultData(); + } + + @ApiOperation("根据id更新接口") + @PostMapping("update") + public ResultData update(@RequestBody CouponInject couponInject) { + String[] arys = couponInject.getTags().split(","); + List tagids = new ArrayList<>(); + for (int i = 0; i < arys.length; i++) { + tagids.add(Long.parseLong(arys[i])); + } + couponInject.setTags(JSON.toJSONString(arys)); + couponInjectService.saveOrUpdate(couponInject); + return new ResultData(); + } + + @ApiOperation("根据id删除接口") + @GetMapping("/del") + @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) + public ResultData delete(Long id) { + couponInjectService.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) { + + CouponInject couponInject = couponInjectService.getById(id); + if(couponInject!=null) { + List tagids = JSON.parseArray(couponInject.getTags(), Long.class); + couponInject.setWxChooseTagVo(wxCUserTagsService.findChooseTag(tagids)); + } + return new ResultData(Result.SUCCESS,"查询成功",couponInject); + } + + + +} diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCUserBasicInfoController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCUserBasicInfoController.java index 2bc9b6d12..a4f4381e2 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCUserBasicInfoController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCUserBasicInfoController.java @@ -1,5 +1,8 @@ package com.simple.controller; +import java.util.ArrayList; +import java.util.List; + import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -11,13 +14,16 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.simple.common.Result; import com.simple.common.ResultData; import com.simple.domain.po.WxCUserBasicInfo; import com.simple.domain.po.WxCUserTags; +import com.simple.domain.po.WxTags; import com.simple.service.WxCUserBasicInfoService; import com.simple.service.WxCUserTagsService; +import com.simple.service.WxTagsService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -34,6 +40,9 @@ public class WxCUserBasicInfoController extends BaseController @Autowired private WxCUserTagsService wxCUserTagsService; + + @Autowired + private WxTagsService wxTagsService; private Logger logger = Logger.getLogger(WxCUserBasicInfoController.class); @@ -66,7 +75,17 @@ public class WxCUserBasicInfoController extends BaseController WxCUserTags record =new WxCUserTags(); record.setUserId(wxCUserBasicInfo.getcUserId()); record.setTenantId(getTenantId()); - record.setTags(JSON.toJSONString(wxCUserBasicInfo.getTags())); + PageInfo page = wxCUserTagsService.listAsPage(record, 1, 1); + if(page.getSize()>0) { + WxCUserTags t = page.getList().get(0); + record.setId(t.getId()); + } + String tags = wxCUserBasicInfo.getTags(); + List tagIdList = new ArrayList<>(); + for(String t:tags.split(",")) { + tagIdList.add(Long.valueOf(t)); + } + record.setTags(JSON.toJSONString(tagIdList)); wxCUserTagsService.saveOrUpdate(record); wxCUserBasicInfo.setTagId(record.getId()); } @@ -86,9 +105,21 @@ public class WxCUserBasicInfoController 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,"查询成功",wxCUserBasicInfoService.getById(id)); + WxCUserBasicInfo info = wxCUserBasicInfoService.getById(id); + if(info.getTagId()!=null) { + WxCUserTags uTag = wxCUserTagsService.getById(id); + if(StringUtils.isNotBlank(uTag.getTags())) { + List ids = JSONObject.parseArray(uTag.getTags(),Long.class); + WxTags wxTags =new WxTags(); + wxTags.setIds(ids); + PageInfo page = wxTagsService.listAsPage(wxTags, 1, 5000); + if(page.getSize()>0) { + info.setTagList(page.getList()); + } + } + } + return new ResultData(Result.SUCCESS,"查询成功",info); } - } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCampaignController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCampaignController.java new file mode 100644 index 000000000..20352f96b --- /dev/null +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCampaignController.java @@ -0,0 +1,130 @@ +package com.simple.controller; + +import com.alibaba.fastjson.JSON; +import com.github.pagehelper.PageInfo; +import com.simple.common.Result; +import com.simple.common.ResultData; +import com.simple.domain.po.WxCampaign; +import com.simple.domain.po.WxCoupon; +import com.simple.service.WxCampaignService; +import com.simple.service.WxCouponService; +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.ArrayList; +import java.util.List; + +import static com.simple.domain.po.WxCampaign.Field.SortNum_ASC; + +@RestController +@RequestMapping("wxCampaign") +@Api(description="促销和banner接口") +public class WxCampaignController extends BaseController +{ + @Autowired + private WxCampaignService wxCampaignService; + @Autowired + private WxCouponService wxCouponService; + + private Logger logger = Logger.getLogger(WxCampaignController.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 WxCampaign wxCampaign, Integer pageNum, Integer pageSize) { + if (null == wxCampaign) wxCampaign = new WxCampaign(); + if(wxCampaign.getStatus()!=null&&wxCampaign.getStatus()==-1){ + wxCampaign.setStatus(null); + } + wxCampaign.setTenantId(getTenantId()); + wxCampaign.setSortColumns(SortNum_ASC); + final PageInfo page = wxCampaignService.listAsPage(wxCampaign, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation("新增接口") + @PostMapping("add") + public ResultData add(@RequestBody WxCampaign wxCampaign) { + //Assert.notNull(wxCampaign.getName(), "角色名不能为空"); + //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); +// int sortNum = wxCampaignService.getMaxSortNum(getTenantId()); + if(StringUtils.isNotBlank(wxCampaign.getCouponIds())) { + String[] arys = wxCampaign.getCouponIds().split(","); + wxCampaign.setCouponIds(JSON.toJSONString(arys)); + } + wxCampaign.setTenantId(getTenantId()); +// wxCampaign.setSortNum(sortNum+1); + wxCampaignService.saveOrUpdate(wxCampaign); + return new ResultData(); + } + + @ApiOperation("根据id更新接口") + @PostMapping("update") + public ResultData update(@RequestBody WxCampaign wxCampaign) { + if(StringUtils.isNotBlank(wxCampaign.getCouponIds())) { + String[] arys = wxCampaign.getCouponIds().split(","); + wxCampaign.setCouponIds(JSON.toJSONString(arys)); + } + wxCampaignService.saveOrUpdate(wxCampaign); + return new ResultData(); + } + + @ApiOperation("根据id删除接口") + @GetMapping("/del") + @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) + public ResultData delete(Long id) { + wxCampaignService.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) { + WxCampaign wxCampaign = wxCampaignService.getById(id); + if (wxCampaign != null) { + List list = new ArrayList<>(); + List templist = JSON.parseArray(wxCampaign.getCouponIds(), String.class); + for (String temp : templist + ) { + list.add(Long.parseLong(temp)); + } + WxCoupon wxCoupon = new WxCoupon(); + wxCoupon.setTenantId(getTenantId()); + wxCoupon.setIds(list); + wxCoupon.setStatus(1); + List couponlist = wxCouponService.findList(wxCoupon); + wxCampaign.setCoupons(couponlist); + } + return new ResultData(Result.SUCCESS, "查询成功", wxCampaign); + } + + @ApiOperation("调整顺序") + @GetMapping("/move") + @ApiImplicitParams({ + @ApiImplicitParam(name="sourceId",value="",dataType="Long", paramType = "query",required=true), + @ApiImplicitParam(name="targetId",value="",dataType="Long", paramType = "query",required=true)}) + public ResultData move(Long sourceId,Long targetId) { + WxCampaign source = wxCampaignService.getById(sourceId); + WxCampaign target = wxCampaignService.getById(targetId); + if(source==null||target==null){ + return new ResultData(Result.ERROR, "调整顺序失败", null); + } + int temp =source.getSortNum(); + source.setSortNum(target.getSortNum()); + target.setSortNum(temp); + wxCampaignService.saveOrUpdate(source); + wxCampaignService.saveOrUpdate(target); + return new ResultData(Result.SUCCESS, "调整顺序成功", null); + } + + +} diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantBUserController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantBUserController.java index 0f1d79678..6b8e7f42a 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantBUserController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantBUserController.java @@ -38,15 +38,15 @@ public class WxMerchantBUserController extends BaseController //Assert.notNull(wxMerchantBUser.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); wxMerchantBUser.setTenantId(getTenantId()); - wxMerchantBUserService.saveOrUpdate(wxMerchantBUser); - return new ResultData(); + Long id = wxMerchantBUserService.saveOrUpdate(wxMerchantBUser); + return new ResultData(Result.SUCCESS,"添加成功",id); } @ApiOperation("根据id更新接口") @PostMapping("update") public ResultData update(@RequestBody WxMerchantBUser wxMerchantBUser) { - wxMerchantBUserService.saveOrUpdate(wxMerchantBUser); - return new ResultData(); + Long id = wxMerchantBUserService.saveOrUpdate(wxMerchantBUser); + return new ResultData(Result.SUCCESS,"更新成功",id); } @ApiOperation("根据id删除接口") @@ -63,7 +63,23 @@ public class WxMerchantBUserController extends BaseController public ResultData findById(Long id) { return new ResultData(Result.SUCCESS,"查询成功",wxMerchantBUserService.getById(id)); } - - + + @ApiOperation("手机号是否存在") + @GetMapping("/hasphone") + @ApiImplicitParam(name="phone",value="phone",dataType="String", paramType = "query",required=true) + public ResultData hasphone(String phone) { + boolean has=wxMerchantBUserService.hasphone(phone); + return new ResultData(Result.SUCCESS,"查询成功",has); + } + + @ApiOperation("修改密码") + @GetMapping("/updatepwd") + @ApiImplicitParams({ + @ApiImplicitParam(name="phone",value="手机号",dataType="String", paramType = "query",required=true), + @ApiImplicitParam(name="code",value="验证码",dataType="String", paramType = "query",required=true), + @ApiImplicitParam(name="pwd",value="密码",dataType="String", paramType = "query",required=true)}) + public ResultData updatepwd(String phone,String code,String pwd) { + return wxMerchantBUserService.updatepwd(phone,code,pwd); + } } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java index cbd515257..5f53b334a 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java @@ -12,27 +12,36 @@ import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequestMapping("wxMerchant") -public class WxMerchantController extends BaseController -{ - @Autowired +public class WxMerchantController extends BaseController { + @Autowired private WxMerchantService wxMerchantService; private Logger logger = Logger.getLogger(WxMerchantController.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 WxMerchant wxMerchant,Integer pageNum, Integer pageSize) { - if (null == wxMerchant) wxMerchant = new WxMerchant(); + @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 WxMerchant wxMerchant, Integer pageNum, Integer pageSize) { + if (null == wxMerchant) wxMerchant = new WxMerchant(); final PageInfo page = wxMerchantService.listAsPage(wxMerchant, pageNum, pageSize); return new ResultData(page); } - @ApiOperation("新增接口") + @ApiOperation("ETCP商户列表") + @GetMapping("etcplist") + public ResultData etcpList(@ModelAttribute WxMerchant wxMerchant) { + if (null == wxMerchant) wxMerchant = new WxMerchant(); + final List merchantList = wxMerchantService.etcpList(wxMerchant); + return new ResultData(merchantList); + } + + @ApiOperation("新增接口") @PostMapping("add") public ResultData add(@RequestBody WxMerchant wxMerchant) { //Assert.notNull(wxMerchant.getName(), "角色名不能为空"); @@ -51,25 +60,25 @@ public class WxMerchantController 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) { wxMerchantService.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,"查询成功",wxMerchantService.getById(id)); + return new ResultData(Result.SUCCESS, "查询成功", wxMerchantService.getById(id)); } @ApiOperation("停用") @GetMapping("disable") - @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) public ResultData disable(Long id) { wxMerchantService.disable(id); - return new ResultData(Result.SUCCESS,"停用成功"); + return new ResultData(Result.SUCCESS, "停用成功"); } - + } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxMsgCallbackController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxMsgCallbackController.java index aef04f877..d78cd200a 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxMsgCallbackController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxMsgCallbackController.java @@ -74,5 +74,19 @@ public class WxMsgCallbackController extends BaseController wxMsgCallbackService.saveOrUpdate(bid,item,sign); } - + + @RequestMapping(value = "/receivemodel/{bid}") + public void receivemodel(@PathVariable String bid, @RequestParam Map param) { + //解析param数据插入数据库中 + wxMsgCallbackService.receivemodel(bid,param); + + } + + @RequestMapping(value = "/receiveverifymodel/{bid}") + public void receiveverifymodel(@PathVariable String bid, @RequestParam Map param) { + //解析param数据插入数据库中 + wxMsgCallbackService.receiveverifymodel(bid,param); + + } + } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxMsgController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxMsgController.java index 984af8ce3..9e2946256 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxMsgController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxMsgController.java @@ -44,6 +44,7 @@ public class WxMsgController extends BaseController public ResultData add(@RequestBody WxMsg wxMsg) { //Assert.notNull(wxMsg.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); + wxMsg.setTenantId(getTenantId()); wxMsgService.saveOrUpdate(wxMsg); return new ResultData(); } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxMsgModelController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxMsgModelController.java index d24ad1be9..a7e93122e 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxMsgModelController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxMsgModelController.java @@ -37,6 +37,7 @@ public class WxMsgModelController extends BaseController public ResultData add(@RequestBody WxMsgModel wxMsgModel) { //Assert.notNull(wxMsgModel.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); + wxMsgModel.setTenantId(getTenantId()); return wxMsgModelService.saveOrUpdate(wxMsgModel); } @@ -65,7 +66,7 @@ public class WxMsgModelController extends BaseController @ApiOperation("获取所有数据") @GetMapping("getmodellist") public ResultData getmodellist() { - return wxMsgModelService.getmodellist(); + return wxMsgModelService.getmodellist(getTenantId()); } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxMsgValidationcodeController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxMsgValidationcodeController.java index 1dd9baf98..e253dda99 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxMsgValidationcodeController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxMsgValidationcodeController.java @@ -61,29 +61,33 @@ public class WxMsgValidationcodeController extends BaseController @GetMapping("sendvalidationcode") @ApiImplicitParams({ - @ApiImplicitParam(name="tenantId",value="租户ID",dataType="String", paramType = "query",required=true), + @ApiImplicitParam(name="tenantId",value="租户ID",dataType="String", paramType = "query"), @ApiImplicitParam(name="phone",value="手机号",dataType="String", paramType = "query",required=true), - @ApiImplicitParam(name="type",value="场景",dataType="Integer", paramType = "query",required=true)}) - public ResultData sendvalidationcode(String tenantId,String phone,Integer type) { + @ApiImplicitParam(name="type",value="场景",dataType="Integer", paramType = "query",required=true), + @ApiImplicitParam(name="appid",value="appid",dataType="String", paramType = "query",required=true)}) + public ResultData sendvalidationcode(String tenantId,String phone,Integer type,String appid) { WxMsgValidationcode wxMsgValidationcode =new WxMsgValidationcode(); wxMsgValidationcode.setTenantId(tenantId); wxMsgValidationcode.setPhone(phone); wxMsgValidationcode.setType(type); + wxMsgValidationcode.setAppid(appid); return wxMsgValidationcodeService.sendvalidationcode(wxMsgValidationcode); } @GetMapping("hasvalidationcode") @ApiImplicitParams({ - @ApiImplicitParam(name="tenantId",value="租户ID",dataType="String", paramType = "query",required=true), + @ApiImplicitParam(name="tenantId",value="租户ID",dataType="String", paramType = "query"), @ApiImplicitParam(name="phone",value="手机号",dataType="String", paramType = "query",required=true), @ApiImplicitParam(name="type",value="场景",dataType="Integer", paramType = "query",required=true), - @ApiImplicitParam(name="code",value="验证码",dataType="String", paramType = "query",required=true)}) - public ResultData hasvalidationcode(String tenantId,String phone,Integer type,String code) { + @ApiImplicitParam(name="code",value="验证码",dataType="String", paramType = "query",required=true), + @ApiImplicitParam(name="appid",value="appid",dataType="String", paramType = "query",required=true)}) + public ResultData hasvalidationcode(String tenantId,String phone,Integer type,String code,String appid) { WxMsgValidationcode wxMsgValidationcode =new WxMsgValidationcode(); wxMsgValidationcode.setTenantId(tenantId); wxMsgValidationcode.setPhone(phone); wxMsgValidationcode.setType(type); wxMsgValidationcode.setCode(code); + wxMsgValidationcode.setAppid(appid); return wxMsgValidationcodeService.hasvalidationcode(wxMsgValidationcode); } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxMsgValidationcodeModelController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxMsgValidationcodeModelController.java new file mode 100644 index 000000000..d59ab7fb9 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxMsgValidationcodeModelController.java @@ -0,0 +1,62 @@ +package com.simple.controller; + +import com.github.pagehelper.PageInfo; +import com.simple.common.Result; +import com.simple.common.ResultData; +import com.simple.domain.po.WxMsgValidationcodeModel; +import com.simple.service.WxMsgValidationcodeModelService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("wxMsgValidationcodeModel") +public class WxMsgValidationcodeModelController extends BaseController +{ + @Autowired + private WxMsgValidationcodeModelService wxMsgValidationcodeModelService; + + private Logger logger = Logger.getLogger(WxMsgValidationcodeModelController.class); + + @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 WxMsgValidationcodeModel wxMsgValidationcodeModel,Integer pageNum, Integer pageSize) { + if (null == wxMsgValidationcodeModel) wxMsgValidationcodeModel = new WxMsgValidationcodeModel(); + final PageInfo page = wxMsgValidationcodeModelService.listAsPage(wxMsgValidationcodeModel, pageNum, pageSize); + return new ResultData(page); + } + + @PostMapping("add") + public ResultData add(@RequestBody WxMsgValidationcodeModel wxMsgValidationcodeModel) { + //Assert.notNull(wxMsgValidationcodeModel.getName(), "角色名不能为空"); + //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); + + return wxMsgValidationcodeModelService.saveOrUpdate(wxMsgValidationcodeModel); + } + + @PostMapping("update") + public ResultData update(@RequestBody WxMsgValidationcodeModel wxMsgValidationcodeModel) { + wxMsgValidationcodeModelService.saveOrUpdate(wxMsgValidationcodeModel); + return new ResultData(); + } + + @GetMapping("/del") + @ApiImplicitParam(name="id",value="id",dataType="String", paramType = "query",required=true) + public ResultData delete(String id) { + wxMsgValidationcodeModelService.deleteById(id); + return new ResultData(Result.SUCCESS, "删除成功", null); + } + + @GetMapping("/findById") + @ApiImplicitParam(name="id",value="id",dataType="String", paramType = "query",required=true) + public ResultData findById(String id) { + return new ResultData(Result.SUCCESS,"查询成功",wxMsgValidationcodeModelService.getById(id)); + } + + + +} diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxPayController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxPayController.java index d4ff6e902..af8f9e8d7 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxPayController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxPayController.java @@ -16,9 +16,11 @@ import javax.servlet.http.HttpServletRequest; import java.nio.charset.Charset; import java.util.LinkedHashMap; import java.util.Map; +import java.util.SortedMap; +import java.util.TreeMap; @RestController -@RequestMapping("/WxPay/notify") +@RequestMapping("/wxPay/notify") public class WxPayController extends BaseController { private Logger logger = Logger.getLogger(WxPayController.class); @@ -34,35 +36,47 @@ public class WxPayController extends BaseController { * @return 接收微信异步通知 * @throws Exception 可能产生的任何异常 */ - @RequestMapping(value = "/pay", method = RequestMethod.POST) + @RequestMapping(value = "/pay") public String _payNotify(HttpServletRequest request) throws Exception { + Map paramMap = null; - String response; 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); + String 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()); - Map resultMap = new LinkedHashMap<>(); + if (paramMap == null) { + logger.error("payment wxpay, order create error, e: " + e.getMessage()); + } else { + logger.error("payment wxpay, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); + } + SortedMap resultMap = new TreeMap<>(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", e.getMessage()); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(resultMap); } catch (MallinkException e) { - logger.error("payment wxpay, notify error, req: " + paramMap.toString() + ", e:" +e.getLocalizedMessage()); - Map resultMap = new LinkedHashMap<>(); + if (paramMap == null) { + logger.error("payment wxpay, order create error, e: " + e.getMessage()); + } else { + logger.error("payment wxpay, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); + } + SortedMap resultMap = new TreeMap<>(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", e.getMessage()); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(resultMap); } catch (Exception e) { - logger.error("payment wxpay, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); - Map resultMap = new LinkedHashMap<>(); + if (paramMap == null) { + logger.error("payment wxpay, order create error, e: " + e.getMessage()); + } else { + logger.error("payment wxpay, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); + } + SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", e.getMessage()); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(resultMap); } } @@ -72,7 +86,7 @@ public class WxPayController extends BaseController { * @return 接收微信退款异步通知 * @throws Exception 可能产生的任何异常 */ - @RequestMapping(value = "/refund", method = RequestMethod.POST) + @RequestMapping(value = "/refund") public String __refundNotify(HttpServletRequest request) throws Exception { Map paramMap = null; String response; @@ -85,22 +99,22 @@ public class WxPayController extends BaseController { return response; } catch (BizMessageException e) { logger.error("refund wxpay, notify error, req: " + paramMap.toString() + ", e:" + e.getLocalizedMessage()); - Map resultMap = new LinkedHashMap<>(); + SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", e.getMessage()); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(resultMap); } catch (MallinkException e) { logger.error("refund wxpay, notify error, req: " + paramMap.toString() + ", e:" +e.getLocalizedMessage()); - Map resultMap = new LinkedHashMap<>(); + SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", e.getMessage()); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(resultMap); } catch (Exception e) { logger.error("refund wxpay, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); - Map resultMap = new LinkedHashMap<>(); + SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", e.getMessage()); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(resultMap); } } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxTagsController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxTagsController.java index 6ef267210..fc3bf247a 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxTagsController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxTagsController.java @@ -1,7 +1,10 @@ package com.simple.controller; import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -14,6 +17,7 @@ import com.simple.common.Result; import com.simple.common.ResultData; import com.simple.domain.po.WxTags; import com.simple.domain.vo.WxTagsVo; +import com.simple.service.WxCUserTagsService; import com.simple.service.WxTagsService; import io.swagger.annotations.Api; @@ -26,6 +30,9 @@ public class WxTagsController extends BaseController { @Autowired private WxTagsService wxTagsService; + + @Autowired + private WxCUserTagsService wxCUserTagsService; private Logger logger = Logger.getLogger(WxTagsController.class); @@ -48,6 +55,7 @@ public class WxTagsController extends BaseController PageInfo page = wxTagsService.listAsPage(tag, 1, 1000); for(WxTags wxT : page.getList()) { WxTagsVo wxVo = new WxTagsVo(); + wxVo.setId(wxT.getId()); wxVo.setValue(wxT.getName()); list.add(wxVo); } @@ -57,10 +65,59 @@ public class WxTagsController extends BaseController } type1List.add(vo); } - return new ResultData(Result.SUCCESS,"ok",type1List); + return new ResultData(Result.SUCCESS,"查询成功",type1List); } + @GetMapping("getPeopleTagList") + @ApiOperation("用户人群tag接口") + public ResultData getPeopleTagList() { + List type2List =new ArrayList<>(); + List type2s = wxTagsService.findType2Value(null); + for(WxTags wt:type2s) { + WxTagsVo v = new WxTagsVo(); + v.setValue(wt.getType2()); + List list = new ArrayList<>(); + WxTags tag = new WxTags(); + tag.setType2(wt.getType2()); + PageInfo page = wxTagsService.listAsPage(tag, 1, 1000); + for(WxTags wxT : page.getList()) { + WxTagsVo wxVo = new WxTagsVo(); + wxVo.setValue(wxT.getName()); + wxVo.setId(wxT.getId()); + list.add(wxVo); + } + v.setSubTags(list); + type2List.add(v); + } + return new ResultData(Result.SUCCESS,"查询成功",type2List); + } + + @ApiOperation("查询用户人群") + @GetMapping("findUserByTag") + public Result findUserByTag(Long[] tagIds) { +// WxTags wxTags = new WxTags(); +// List ids = new ArrayList<>(); +// for(Long id :tagIds) { +// ids.add(id); +// } +// wxTags.setIds(ids); +// PageInfo page = wxTagsService.listAsPage(wxTags, 1, 5000); +// List list = page.getList(); +// StringBuffer names= new StringBuffer(); +// for(WxTags t:list) { +// names.append(t.getName()+"/"); +// } +// Map map = new HashMap<>(); +// String endName=""; +// if(names.length()>0) { +// endName = names.toString().substring(0,names.length()-1); +// } +// map.put("names",endName ); +// map.put("tagIds", ids); + long count = wxCUserTagsService.findCountByTag(Arrays.asList(tagIds)); + return new ResultData(Result.SUCCESS,"查询成功",count); + } // @ApiOperation("分页列表接口") // @GetMapping("list") diff --git a/mallinkBApi/src/main/java/com/simple/config/Swagger2Config.java b/mallinkBApi/src/main/java/com/simple/config/Swagger2Config.java index 136fbd3fb..bd5c183e6 100644 --- a/mallinkBApi/src/main/java/com/simple/config/Swagger2Config.java +++ b/mallinkBApi/src/main/java/com/simple/config/Swagger2Config.java @@ -39,8 +39,8 @@ public class Swagger2Config { private ApiInfo apiInfo() { return new ApiInfoBuilder() - .title("c端 api") - .description("c api") + .title("b端 api") + .description("b端 api") .termsOfServiceUrl("http://localhost:9000") .version("2.0") .build(); diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java index 873d85564..99aad9b70 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java @@ -1,6 +1,7 @@ package com.simple.controller; import com.github.pagehelper.PageInfo; +import com.simple.annotation.AuthIgnore; import com.simple.common.ErrorCode; import com.simple.common.Result; import com.simple.common.ResultData; @@ -102,10 +103,23 @@ public class WxCouponOrderController extends BaseController { 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)); + @ApiOperation(value = "根据couponOrderId查询接口", notes = "{\"couponOrderId\":\"string\"}") + @PostMapping("/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/mallinkBApi/src/main/java/com/simple/controller/WxDateAmountRecordController.java b/mallinkBApi/src/main/java/com/simple/controller/WxDateAmountRecordController.java index 888f92d26..d00ea71a0 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxDateAmountRecordController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/WxDateAmountRecordController.java @@ -6,6 +6,7 @@ import java.util.List; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -13,6 +14,7 @@ import com.github.pagehelper.PageInfo; import com.simple.common.Result; import com.simple.common.ResultData; import com.simple.domain.po.WxDateAmountRecord; +import com.simple.domain.po.WxMerchantBUser; import com.simple.domain.vo.AmountRecordVo; import com.simple.service.WxDateAmountRecordService; @@ -22,7 +24,7 @@ import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @RestController -@RequestMapping("wxDateAmountRecord") +@RequestMapping("/api/wxDateAmountRecord") @Api(description="首页查询交易金额记录和核销记录接口") public class WxDateAmountRecordController extends BaseController { @@ -33,16 +35,15 @@ public class WxDateAmountRecordController extends BaseController @ApiOperation("首页查询交易金额记录和核销记录接口") - @ApiImplicitParams({ - @ApiImplicitParam(name="tenantId",value="租户id",dataType="String", paramType = "query",required=true), - @ApiImplicitParam(name="merchantId",value="商户id",dataType="long", paramType = "query",required=true)}) - public ResultData getRecord(String tenantId,Long merchantId) { + @GetMapping("list") + public ResultData getRecord() { Calendar c =Calendar.getInstance(); int weekOfYear =c.get(Calendar.WEEK_OF_YEAR); WxDateAmountRecord temp = new WxDateAmountRecord(); temp.setDayOfWeek(weekOfYear); - temp.setTenantId(tenantId); - temp.setMerchantId(merchantId); + WxMerchantBUser u = getUser(); + temp.setTenantId(u.getTenantId()); + temp.setMerchantId(u.getMerchantId()); AmountRecordVo vo = new AmountRecordVo(); vo.setOrderAmountList(getAmountRecord(temp, 0)); vo.setVerifyAmountList(getAmountRecord(temp, 0)); diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxMerchantBUserController.java b/mallinkBApi/src/main/java/com/simple/controller/WxMerchantBUserController.java index 00d80c806..3f51bb1df 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxMerchantBUserController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/WxMerchantBUserController.java @@ -4,6 +4,10 @@ import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import com.simple.annotation.AuthIgnore; import com.simple.common.ErrorCode; +import com.simple.domain.po.WxMall; +import com.simple.domain.po.WxMerchant; +import com.simple.service.WxMallService; +import com.simple.service.WxMerchantService; import com.simple.utils.IPUtil; import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.lang3.StringUtils; @@ -30,7 +34,7 @@ import java.util.HashMap; import java.util.Map; @RestController -@RequestMapping("wxMerchantBUser") +@RequestMapping("/api/user") public class WxMerchantBUserController extends BaseController { private Logger logger = Logger.getLogger(WxMerchantBUserController.class); @@ -38,6 +42,41 @@ public class WxMerchantBUserController extends BaseController @Autowired private WxMerchantBUserService wxMerchantBUserService; + @Autowired + private WxMerchantService wxMerchantService; + + @Autowired + private WxMallService wxMallService; + + + @ApiOperation("查寻当bUser详情接口") + @GetMapping("/detail") + public ResultData detail() { + Map resultMap = new HashMap(); + + WxMerchantBUser user = wxMerchantBUserService.getById(getUser().getId()); + + if (user==null) + return new ResultData(ErrorCode.USER_IS_EMPTY, ErrorCode.USER_IS_EMPTY.getMessage()); + + WxMerchant merchant = wxMerchantService.getById(user.getMerchantId()); + + if (merchant==null) + return new ResultData(ErrorCode.MCH_INFO_NOT_FOUND, ErrorCode.MCH_INFO_NOT_FOUND.getMessage()); + + WxMall mall = wxMallService.getByTenantId(merchant.getTenantId()); + if (mall==null) + return new ResultData(ErrorCode.MCH_INFO_NOT_FOUND, ErrorCode.MCH_INFO_NOT_FOUND.getMessage()); + + resultMap.put("phone",user.getPhone()); + resultMap.put("name",user.getName()); + resultMap.put("merchant_name",merchant.getName()); + resultMap.put("mall_name",mall.getName()); + resultMap.put("service_phone",mall.getServicePhone()); + + return new ResultData(Result.SUCCESS,"查询成功",resultMap); + } + /** * 用户登录 * @param map @@ -73,16 +112,20 @@ public class WxMerchantBUserController extends BaseController WxMerchantBUser user = new WxMerchantBUser(); user.setAppId(appId); user.setPhone(phone); - user.setBUserPwd(password); try { - WxMerchantBUser user1 = wxMerchantBUserService.getById(user.getId()); + WxMerchantBUser user1 = wxMerchantBUserService.getBUserByAppId(user); if (user1 != null) { - user1.createToken(new Date()); - token = user1.getToken(); - wxMerchantBUserService.saveOrUpdate(user1); - resultMap.put("token", token); + if (user1.getBUserPwd().equalsIgnoreCase(password)) { + user1.createToken(new Date()); + token = user1.getToken(); + wxMerchantBUserService.saveOrUpdate(user1); + resultMap.put("token", token); + } else { + return new ResultData(ErrorCode.PASSWORD_ERROR); + } } else { + user.setBUserPwd(password); user.createToken(new Date()); token = user.getToken(); @@ -95,5 +138,16 @@ public class WxMerchantBUserController extends BaseController } return new ResultData(resultMap); } + + @AuthIgnore + @ApiOperation("修改密码") + @PostMapping("/updatepwd") + @ApiImplicitParams({ + @ApiImplicitParam(name="phone",value="手机号",dataType="String", paramType = "query",required=true), + @ApiImplicitParam(name="code",value="验证码",dataType="String", paramType = "query",required=true), + @ApiImplicitParam(name="pwd",value="密码",dataType="String", paramType = "query",required=true)}) + public ResultData updatepwd(String phone,String code,String pwd) { + return wxMerchantBUserService.updatepwd(phone,code,pwd); + } } diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxMsgValidationcodeController.java b/mallinkBApi/src/main/java/com/simple/controller/WxMsgValidationcodeController.java new file mode 100644 index 000000000..616494538 --- /dev/null +++ b/mallinkBApi/src/main/java/com/simple/controller/WxMsgValidationcodeController.java @@ -0,0 +1,55 @@ +package com.simple.controller; + +import com.simple.common.ResultData; +import com.simple.domain.po.WxMsgValidationcode; +import com.simple.service.WxMsgValidationcodeService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("wxMsgValidationcode") +public class WxMsgValidationcodeController extends BaseController { + private Logger logger = Logger.getLogger(WxMsgValidationcodeController.class); + + @Autowired + private WxMsgValidationcodeService wxMsgValidationcodeService; + + @GetMapping("sendvalidationcode") + @ApiImplicitParams({ + @ApiImplicitParam(name = "tenantId", value = "租户ID", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true), + @ApiImplicitParam(name = "type", value = "场景", dataType = "Integer", paramType = "query", required = true), + @ApiImplicitParam(name = "appid", value = "appid", dataType = "String", paramType = "query", required = true)}) + public ResultData sendvalidationcode(String tenantId, String phone, Integer type, String appid) { + WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode(); + wxMsgValidationcode.setTenantId(tenantId); + wxMsgValidationcode.setPhone(phone); + wxMsgValidationcode.setType(type); + wxMsgValidationcode.setAppid(appid); + return wxMsgValidationcodeService.sendvalidationcode(wxMsgValidationcode); + } + + @GetMapping("hasvalidationcode") + @ApiImplicitParams({ + @ApiImplicitParam(name = "tenantId", value = "租户ID", dataType = "String", paramType = "query"), + @ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true), + @ApiImplicitParam(name = "type", value = "场景", dataType = "Integer", paramType = "query", required = true), + @ApiImplicitParam(name = "code", value = "验证码", dataType = "String", paramType = "query", required = true), + @ApiImplicitParam(name = "appid", value = "appid", dataType = "String", paramType = "query", required = true)}) + public ResultData hasvalidationcode(String tenantId, String phone, Integer type, String code, String appid) { + WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode(); + wxMsgValidationcode.setTenantId(tenantId); + wxMsgValidationcode.setPhone(phone); + wxMsgValidationcode.setType(type); + wxMsgValidationcode.setCode(code); + wxMsgValidationcode.setAppid(appid); + return wxMsgValidationcodeService.hasvalidationcode(wxMsgValidationcode); + } + + +} diff --git a/mallinkCApi/src/main/java/com/simple/controller/BaseController.java b/mallinkCApi/src/main/java/com/simple/controller/BaseController.java index 8eeaacb67..144efe018 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/BaseController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/BaseController.java @@ -60,6 +60,12 @@ public class BaseController { return user; } + public Long getUserId() { + HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); + Long cUserId = (Long)request.getAttribute(AuthorizationInterceptor.LOGIN_USER_KEY); + return cUserId; + } + public String getTenantId(){ HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); Long cUserId = (Long)request.getAttribute(AuthorizationInterceptor.LOGIN_USER_KEY); diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java index 6105daba8..e71634764 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java @@ -28,6 +28,34 @@ public class WxCouponOrderController extends BaseController { @Autowired private WxCouponOrderService wxCouponOrderService; + @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") @@ -46,7 +74,7 @@ public class WxCouponOrderController extends BaseController { } @ApiOperation(value = "根据id查询接口", notes = "{\"couponOrderId\":\"string\"}") - @GetMapping("/findById") + @PostMapping("/findById") public ResultData findById(@RequestBody Map paramMap) { logger.info(paramMap.toString()); String couponOrderIdStr = paramMap.get("couponOrderId"); diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java index c9a8c059f..5987ad974 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java @@ -31,6 +31,37 @@ public class WxOrderController extends BaseController { @Autowired private WxOrderService wxOrderService; + @ApiOperation(value = "免费领取", notes = "{\"couponId\":\"String\"}") + @PostMapping("freeCoupon") + public ResultData freeCoupon(@RequestBody Map paramMap) { + //Assert.notNull(wxOrders.getName(), "角色名不能为空"); + //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); + String couponIdStr = paramMap.get("couponId"); + if (StringUtils.isBlank(couponIdStr)) { + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponId不能为空"); + } + Long couponId = 0L; + try { + couponId = Long.valueOf(couponIdStr); + } catch (NumberFormatException e) { + logger.error("couponId convert error, " + couponIdStr + ", e:" + e.getMessage()); + return new ResultData(ErrorCode.PARAMETER_CAST_ERROR.getCode(), "couponId: " + couponIdStr + ", e:" + e.getMessage()); + } + + Long cUserId = getUserId(); + + try { + WxOrder order = wxOrderService.sendUserFreeCoupon(cUserId, couponId); + return new ResultData(order); + } 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.ORDER_IS_FAIL, e.getMessage()); + } + } + @ApiOperation(value = "下订单", notes = "{\"couponId\":\"String\"}") @PostMapping("save") public ResultData saveOrder(@RequestBody Map paramMap) { @@ -40,15 +71,24 @@ public class WxOrderController extends BaseController { if (StringUtils.isBlank(couponIdStr)) { return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponId不能为空"); } - Long couponId = Long.valueOf(couponIdStr); + Long couponId = 0L; + try { + couponId = Long.valueOf(couponIdStr); + } catch (NumberFormatException e) { + logger.error("couponId convert error, " + couponIdStr + ", e:" + e.getMessage()); + return new ResultData(ErrorCode.PARAMETER_CAST_ERROR.getCode(), "couponId: " + couponIdStr + ", e:" + e.getMessage()); + } WxCUser user = getUser(); try { WxOrder order = wxOrderService.saveOrder(user, couponId); return new ResultData(order); - }catch (MallinkException e) { + } 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.ORDER_IS_FAIL, e.getMessage()); } } @@ -67,6 +107,7 @@ public class WxOrderController extends BaseController { orderId = Long.valueOf(orderIdStr); } catch (NumberFormatException e) { logger.error(e.getMessage()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL, "orderId: " + orderIdStr + ", e: " + e.getMessage()); } wxOrderService.updateOrderStatus(orderId, EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL); return new ResultData(); diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java index a8fe6c438..03d5e5a97 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java @@ -59,7 +59,6 @@ public class WxPayOrderController extends BaseController { try { orderId = Long.valueOf(orderIdStr); } catch (NumberFormatException e) { - orderId = 0L; return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId参数不正确"); } WxPayOrder record = new WxPayOrder(); @@ -73,11 +72,11 @@ public class WxPayOrderController extends BaseController { return new ResultData(e.getErrorCode(), e.getMessage()); } catch (Exception e) { logger.error("payment wechat, order create error, req 3: " + record.toString() + ", e:" + e.getMessage()); + return new ResultData(ErrorCode.PAY_ORDER_ERROR, e.getMessage()); } - return new ResultData(ErrorCode.PAY_ORDER_ERROR); } - @ApiOperation(value = "更新支付订单状态", notes = "{\"id\":\"string\",\"orderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") + @ApiOperation(value = "更新支付订单状态", notes = "{\"payOrderId\":\"string\",\"orderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") @PostMapping("/updatePayOrder") public ResultData updatePayOrder(@RequestBody Map paramMap) { logger.info("/api/pay/updatePayOrder" + paramMap.toString()); @@ -85,22 +84,11 @@ public class WxPayOrderController extends BaseController { 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) { @@ -108,6 +96,14 @@ public class WxPayOrderController extends BaseController { logger.error("orderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId参数不正确"); } + if (!StringUtils.isBlank(payOrderIdStr)) { + try { + payOrderId = Long.valueOf(payOrderIdStr); + } catch (NumberFormatException e) { + logger.error("payOrderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage()); + return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "payOrderId参数不正确"); + } + } WxPayOrder payOrder = new WxPayOrder(); payOrder.setId(payOrderId); diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxRefundOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxRefundOrderController.java new file mode 100644 index 000000000..47c7af28f --- /dev/null +++ b/mallinkCApi/src/main/java/com/simple/controller/WxRefundOrderController.java @@ -0,0 +1,94 @@ +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.WxAppinfo; +import com.simple.domain.po.WxCUser; +import com.simple.domain.po.WxMerchantBUser; +import com.simple.domain.po.WxRefundOrder; +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); + + WxCUser cUser = getUser(); + WxAppinfo appinfo = getAppInfo(cUser.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("根据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/mallinkService/src/main/java/com/simple/common/ErrorCode.java b/mallinkService/src/main/java/com/simple/common/ErrorCode.java index a641b5c33..12c21235c 100644 --- a/mallinkService/src/main/java/com/simple/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/simple/common/ErrorCode.java @@ -50,6 +50,7 @@ public enum ErrorCode{ COUPON_IS_EMPTY(2020, "券不存在"), + COUPON_IS_NOT_FREE(2021, "券不存在"), /** * 车流 2040 @@ -76,7 +77,7 @@ public enum ErrorCode{ */ REMAIN_IS_EMPTY(3000, "库存不足"), ORDER_IS_LIMITED(3001, "购买超限"), - ORDER_IS_FAIL(3002, "订单创建失败"), + ORDER_IS_FAIL(3002, "订单失败"), ORDER_IS_NOT_FIND(3003, "订单不存在"), ORDER_IS_NOT_PAY(3004, "订单已不能进行支付"), @@ -103,6 +104,8 @@ public enum ErrorCode{ PAY_ORDER_EXIST(12001, "支付订单已存在"), PAY_ORDER_ERROR(12002, "支付订单异常"), PAY_ORDER_NOTIFY_CHECK_SIGN_ERROR(12003 , "支付验签失败"), + PAY_ORDER_IS_ZERO(12004, "支付订单金额为0"), + PAY_ORDER_IS_NOT_PAYMENT(12005, "不是支付订单"), REFUND_ORDER_EXIST(12010, "退款订单已存在"), REFUND_PAY_ORDER_IS_NOT_EXIST(12011, "退款支付订单不存在"), @@ -117,15 +120,19 @@ public enum ErrorCode{ CERT_PATH_NOT_FOUND(12024, "双向证书未配置"), PROFIT_SHARING_REQUEST_FAILED(12030, "分账请求失败"), - PROFIT_SHARING_APPLY_FAILED(12031, "分账请求业务失败"), + PROFIT_SHARING_APPLY_FAILED(12031, "分账业务失败"), PROFIT_SHARING_RETURN_INVALID(12032, "分账请求返回校验失败"), PROFIT_SHARING_RECEIVER_INVALID(12033, "分账接受方查寻无效"), - + PROFIT_SHARING_QUERY_REQUEST_FAILED(12030, "分账查询请求失败"), + PROFIT_SHARING_QUERY_APPLY_FAILED(12031, "分账查询业务失败"), + PROFIT_SHARING_QUERY_RETURN_INVALID(12032, "分账查询返回校验失败"), /** * 核销 */ - VERIFY_ERROR(12050, "核销异常") - ; + VERIFY_ERROR(12050, "核销异常"), + MSG_REPEAT_SEND(12061, "短信重新发送") + + ; diff --git a/mallinkService/src/main/java/com/simple/domain/po/CouponInject.java b/mallinkService/src/main/java/com/simple/domain/po/CouponInject.java new file mode 100644 index 000000000..42f4dce8b --- /dev/null +++ b/mallinkService/src/main/java/com/simple/domain/po/CouponInject.java @@ -0,0 +1,273 @@ +package com.simple.domain.po; + +import com.simple.domain.vo.WxChooseTagVo; + +import javax.persistence.*; +import java.util.*; +import javax.persistence.Transient; +import java.util.List; +import javax.persistence.Id; +import java.io.Serializable; + +@Table(name = "coupon_inject") +public class CouponInject implements Serializable { + private static final long serialVersionUID = 1L; + + @Id + protected Long id; + + @Transient + protected List ids; + @Transient + protected String sortColumns; + @Transient + protected WxChooseTagVo wxChooseTagVo; + + @Transient + protected Date sendTimeStart; + + @Transient + protected Date sendTimeEnd; + + 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="tenantId") + private String tenantId; + /*任务名称**/ + @io.swagger.annotations.ApiModelProperty(value="任务名称",name="name") + private String name; + /***/ + @io.swagger.annotations.ApiModelProperty(value="",name="mUserId") + private Long mUserId; + /*发送方式0:立即发送 1:定时发送**/ + @io.swagger.annotations.ApiModelProperty(value="发送方式0:立即发送 1:定时发送",name="sendType") + private Integer sendType; + /*券id**/ + @io.swagger.annotations.ApiModelProperty(value="券id",name="couponId") + private Long couponId; + /*券名称**/ + @io.swagger.annotations.ApiModelProperty(value="券名称",name="couponName") + private String couponName; + /*发送时间**/ + @io.swagger.annotations.ApiModelProperty(value="发送时间",name="sendTime") + private Date sendTime; + /*实际发送数量**/ + @io.swagger.annotations.ApiModelProperty(value="实际发送数量",name="sendAmount") + private Integer sendAmount; + /*0:待发送1:发送中2:已发送3:发送失败4已作废**/ + @io.swagger.annotations.ApiModelProperty(value="0:待发送1:发送中2:已发送3:发送失败4已作废",name="status") + private Integer status; + /*发送失败原因**/ + @io.swagger.annotations.ApiModelProperty(value="发送失败原因",name="errorMsg") + private String errorMsg; + /*发送人群标签**/ + @io.swagger.annotations.ApiModelProperty(value="发送人群标签",name="tags") + private String tags; + /*短信模板id**/ + @io.swagger.annotations.ApiModelProperty(value="短信模板id",name="modelId") + private Long modelId; + /*创建时间**/ + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime") + private Date createTime; + /*修改时间**/ + @io.swagger.annotations.ApiModelProperty(value="修改时间",name="updateTime") + private Date updateTime; + public String getTenantId() { + return tenantId; + } + public void setTenantId(String _tenantId) { + tenantId = _tenantId; + } + public String getName() { + return name; + } + public void setName(String _name) { + name = _name; + } + public Long getMUserId() { + return mUserId; + } + public void setMUserId(Long _mUserId) { + mUserId = _mUserId; + } + public Integer getSendType() { + return sendType; + } + public void setSendType(Integer _sendType) { + sendType = _sendType; + } + public Long getCouponId() { + return couponId; + } + public void setCouponId(Long _couponId) { + couponId = _couponId; + } + public String getCouponName() { + return couponName; + } + public void setCouponName(String _couponName) { + couponName = _couponName; + } + public Date getSendTime() { + return sendTime; + } + public void setSendTime(Date _sendTime) { + sendTime = _sendTime; + } + public Integer getSendAmount() { + return sendAmount; + } + public void setSendAmount(Integer _sendAmount) { + sendAmount = _sendAmount; + } + public Integer getStatus() { + return status; + } + public void setStatus(Integer _status) { + status = _status; + } + public String getErrorMsg() { + return errorMsg; + } + public void setErrorMsg(String _errorMsg) { + errorMsg = _errorMsg; + } + public String getTags() { + return tags; + } + public void setTags(String _tags) { + tags = _tags; + } + public Long getModelId() { + return modelId; + } + public void setModelId(Long _modelId) { + modelId = _modelId; + } + 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 WxChooseTagVo getWxChooseTagVo() { + return wxChooseTagVo; + } + + public void setWxChooseTagVo(WxChooseTagVo wxChooseTagVo) { + this.wxChooseTagVo = wxChooseTagVo; + } + public Date getSendTimeStart() { + return sendTimeStart; + } + + public void setSendTimeStart(Date sendTimeStart) { + this.sendTimeStart = sendTimeStart; + } + + public Date getSendTimeEnd() { + return sendTimeEnd; + } + + public void setSendTimeEnd(Date sendTimeEnd) { + this.sendTimeEnd = sendTimeEnd; + } + + + + public static enum Field + { + Id_ASC("`id` ASC"),Id_DESC("`id` DESC") + ,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC") + ,Name_ASC("`name` ASC"),Name_DESC("`name` DESC") + ,MUserId_ASC("`mUserId` ASC"),MUserId_DESC("`mUserId` DESC") + ,SendType_ASC("`sendType` ASC"),SendType_DESC("`sendType` DESC") + ,CouponId_ASC("`couponId` ASC"),CouponId_DESC("`couponId` DESC") + ,CouponName_ASC("`couponName` ASC"),CouponName_DESC("`couponName` DESC") + ,SendTime_ASC("`sendTime` ASC"),SendTime_DESC("`sendTime` DESC") + ,SendAmount_ASC("`sendAmount` ASC"),SendAmount_DESC("`sendAmount` DESC") + ,Status_ASC("`status` ASC"),Status_DESC("`status` DESC") + ,ErrorMsg_ASC("`errorMsg` ASC"),ErrorMsg_DESC("`errorMsg` DESC") + ,Tags_ASC("`tags` ASC"),Tags_DESC("`tags` DESC") + ,ModelId_ASC("`modelId` ASC"),ModelId_DESC("`modelId` DESC") + ,CreateTime_ASC("`createTime` ASC"),CreateTime_DESC("`createTime` DESC") + ,UpdateTime_ASC("`updateTime` ASC"),UpdateTime_DESC("`updateTime` 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(CouponInject.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/WxCUserBasicInfo.java b/mallinkService/src/main/java/com/simple/domain/po/WxCUserBasicInfo.java index 01e58f500..febd9ba01 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxCUserBasicInfo.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxCUserBasicInfo.java @@ -86,7 +86,17 @@ public class WxCUserBasicInfo implements Serializable { @Transient private String tags ; + @Transient + private List tagList; + public List getTagList() { + return tagList; + } + + public void setTagList(List tagList) { + this.tagList = tagList; + } + public Long getcUserId() { return cUserId; } diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxCampaign.java b/mallinkService/src/main/java/com/simple/domain/po/WxCampaign.java new file mode 100644 index 000000000..ced30a5d3 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/domain/po/WxCampaign.java @@ -0,0 +1,282 @@ +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_campaign") +public class WxCampaign implements Serializable { + private static final long serialVersionUID = 1L; + + @Id + protected Long id; + + @Transient + protected List ids; + @Transient + protected String sortColumns; + @Transient + protected List coupons; + + public List getCoupons() { + return coupons; + } + + public void setCoupons(List coupons) { + this.coupons = coupons; + } + + 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="tenantId") + private String tenantId; + /*封面图**/ + @io.swagger.annotations.ApiModelProperty(value="封面图",name="coverImg") + private String coverImg; + /*主标题**/ + @io.swagger.annotations.ApiModelProperty(value="主标题",name="title") + private String title; + /*副标题**/ + @io.swagger.annotations.ApiModelProperty(value="副标题",name="subTitle") + private String subTitle; + /*满x可用**/ + @io.swagger.annotations.ApiModelProperty(value="满x可用",name="usePrice") + private Integer usePrice; + /*折扣**/ + @io.swagger.annotations.ApiModelProperty(value="折扣",name="discountPrice") + private Integer discountPrice; + /*活动说明**/ + @io.swagger.annotations.ApiModelProperty(value="活动说明",name="detail") + private String detail; + /*有效日期-开始**/ + @io.swagger.annotations.ApiModelProperty(value="有效日期-开始",name="validStartDate") + private Date validStartDate; + /*有效日期-结束**/ + @io.swagger.annotations.ApiModelProperty(value="有效日期-结束",name="validEndDate") + private Date validEndDate; + /*图文详情**/ + @io.swagger.annotations.ApiModelProperty(value="图文详情",name="imgDetail") + private String imgDetail; + /*类型:0:促销 1:宣传页**/ + @io.swagger.annotations.ApiModelProperty(value="类型:0:促销 1:宣传页",name="type") + private Integer type; + /*优惠券ids**/ + @io.swagger.annotations.ApiModelProperty(value="优惠券ids",name="couponIds") + private String couponIds; + /*门店id**/ + @io.swagger.annotations.ApiModelProperty(value="门店id",name="mechantId") + private Long mechantId; + /*排序**/ + @io.swagger.annotations.ApiModelProperty(value="排序",name="sortNum") + private Integer sortNum; + /*0上线 1下线**/ + @io.swagger.annotations.ApiModelProperty(value="0上线 1下线",name="status") + private Integer status; + /***/ + @io.swagger.annotations.ApiModelProperty(value="",name="createTime") + private Date createTime; + /***/ + @io.swagger.annotations.ApiModelProperty(value="",name="updateTime") + private Date updateTime; + public String getTenantId() { + return tenantId; + } + public void setTenantId(String _tenantId) { + tenantId = _tenantId; + } + public String getCoverImg() { + return coverImg; + } + public void setCoverImg(String _coverImg) { + coverImg = _coverImg; + } + public String getTitle() { + return title; + } + public void setTitle(String _title) { + title = _title; + } + public String getSubTitle() { + return subTitle; + } + public void setSubTitle(String _subTitle) { + subTitle = _subTitle; + } + public Integer getUsePrice() { + return usePrice; + } + public void setUsePrice(Integer _usePrice) { + usePrice = _usePrice; + } + public Integer getDiscountPrice() { + return discountPrice; + } + public void setDiscountPrice(Integer _discountPrice) { + discountPrice = _discountPrice; + } + public String getDetail() { + return detail; + } + public void setDetail(String _detail) { + detail = _detail; + } + public Date getValidStartDate() { + return validStartDate; + } + public void setValidStartDate(Date _validStartDate) { + validStartDate = _validStartDate; + } + public Date getValidEndDate() { + return validEndDate; + } + public void setValidEndDate(Date _validEndDate) { + validEndDate = _validEndDate; + } + public String getImgDetail() { + return imgDetail; + } + public void setImgDetail(String _imgDetail) { + imgDetail = _imgDetail; + } + public Integer getType() { + return type; + } + public void setType(Integer _type) { + type = _type; + } + public String getCouponIds() { + return couponIds; + } + public void setCouponIds(String _couponIds) { + couponIds = _couponIds; + } + public Long getMechantId() { + return mechantId; + } + public void setMechantId(Long _mechantId) { + mechantId = _mechantId; + } + public Integer getSortNum() { + return sortNum; + } + public void setSortNum(Integer _sortNum) { + sortNum = _sortNum; + } + public Integer getStatus() { + return status; + } + public void setStatus(Integer _status) { + status = _status; + } + 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 static enum Field + { + Id_ASC("`id` ASC"),Id_DESC("`id` DESC") + ,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC") + ,CoverImg_ASC("`coverImg` ASC"),CoverImg_DESC("`coverImg` DESC") + ,Title_ASC("`title` ASC"),Title_DESC("`title` DESC") + ,SubTitle_ASC("`subTitle` ASC"),SubTitle_DESC("`subTitle` DESC") + ,UsePrice_ASC("`usePrice` ASC"),UsePrice_DESC("`usePrice` DESC") + ,DiscountPrice_ASC("`discountPrice` ASC"),DiscountPrice_DESC("`discountPrice` DESC") + ,Detail_ASC("`detail` ASC"),Detail_DESC("`detail` DESC") + ,ValidStartDate_ASC("`validStartDate` ASC"),ValidStartDate_DESC("`validStartDate` DESC") + ,ValidEndDate_ASC("`validEndDate` ASC"),ValidEndDate_DESC("`validEndDate` DESC") + ,ImgDetail_ASC("`imgDetail` ASC"),ImgDetail_DESC("`imgDetail` DESC") + ,Type_ASC("`type` ASC"),Type_DESC("`type` DESC") + ,CouponIds_ASC("`couponIds` ASC"),CouponIds_DESC("`couponIds` DESC") + ,MechantId_ASC("`mechantId` ASC"),MechantId_DESC("`mechantId` DESC") + ,SortNum_ASC("`sortNum` ASC"),SortNum_DESC("`sortNum` DESC") + ,Status_ASC("`status` ASC"),Status_DESC("`status` DESC") + ,CreateTime_ASC("`createTime` ASC"),CreateTime_DESC("`createTime` DESC") + ,UpdateTime_ASC("`updateTime` ASC"),UpdateTime_DESC("`updateTime` 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(WxCampaign.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/WxMall.java b/mallinkService/src/main/java/com/simple/domain/po/WxMall.java index 4d2a701b6..2d35b4bdc 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxMall.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxMall.java @@ -1,12 +1,11 @@ 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.List; @Table(name = "wx_mall") public class WxMall implements Serializable { @@ -81,6 +80,9 @@ public class WxMall implements Serializable { /*支付ID,参看wx_pay_account**/ @io.swagger.annotations.ApiModelProperty(value="支付ID,参看wx_pay_account",name="payId") private Long payId; + @io.swagger.annotations.ApiModelProperty(value="电话",name="servicePhone") + private String servicePhone; + public String getTenantId() { return tenantId; } @@ -160,7 +162,13 @@ public class WxMall implements Serializable { payId = _payId; } + public String getServicePhone() { + return servicePhone; + } + public void setServicePhone(String servicePhone) { + this.servicePhone = servicePhone; + } public static enum Field { diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxMerchantBUser.java b/mallinkService/src/main/java/com/simple/domain/po/WxMerchantBUser.java index 59fc629cb..f5eea0360 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxMerchantBUser.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxMerchantBUser.java @@ -2,13 +2,13 @@ package com.simple.domain.po; import com.simple.utils.BaseConstant; -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.util.Date; +import java.util.List; +import java.util.UUID; @Table(name = "wx_merchant_b_user") public class WxMerchantBUser implements Serializable { @@ -74,6 +74,10 @@ public class WxMerchantBUser implements Serializable { /*用户过期时间**/ @io.swagger.annotations.ApiModelProperty(value="用户过期时间",name="expireTime") private Date expireTime; + + @io.swagger.annotations.ApiModelProperty(value="name",name="name") + private String name; + public String getTenantId() { return tenantId; } @@ -135,7 +139,13 @@ public class WxMerchantBUser implements Serializable { expireTime = _expireTime; } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } public static enum Field { @@ -150,7 +160,9 @@ public class WxMerchantBUser implements Serializable { ,AppId_ASC("`appId` ASC"),AppId_DESC("`appId` DESC") ,Token_ASC("`token` ASC"),Token_DESC("`token` DESC") ,ExpireTime_ASC("`expireTime` ASC"),ExpireTime_DESC("`expireTime` DESC") - ; + ,Name_ASC("`name` ASC"),Name_DESC("`name` DESC") + + ; private String value; Field(String value){ this.value = value; diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxMsgConfig.java b/mallinkService/src/main/java/com/simple/domain/po/WxMsgConfig.java index 6fd38f73d..210255bdc 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxMsgConfig.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxMsgConfig.java @@ -1,12 +1,10 @@ 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.util.List; @Table(name = "wx_msg_config") public class WxMsgConfig implements Serializable { @@ -77,6 +75,18 @@ public class WxMsgConfig implements Serializable { /*回调地址**/ @io.swagger.annotations.ApiModelProperty(value="回调地址",name="notifyurl") private String notifyurl; + + /*模板回调地址**/ + @io.swagger.annotations.ApiModelProperty(value="模板回调地址",name="modelnotifyurl") + private String modelnotifyurl; + + @io.swagger.annotations.ApiModelProperty(value="模板回调地址",name="verifynotifyurl") + private String verifynotifyurl; + + @io.swagger.annotations.ApiModelProperty(value="appid",name="appid") + private String appid; + + public String getTenantId() { return tenantId; } @@ -151,6 +161,29 @@ public class WxMsgConfig implements Serializable { } + public String getModelnotifyurl() { + return modelnotifyurl; + } + + public void setModelnotifyurl(String modelnotifyurl) { + this.modelnotifyurl = modelnotifyurl; + } + + public String getVerifynotifyurl() { + return verifynotifyurl; + } + + public void setVerifynotifyurl(String verifynotifyurl) { + this.verifynotifyurl = verifynotifyurl; + } + + public String getAppid() { + return appid; + } + + public void setAppid(String appid) { + this.appid = appid; + } public static enum Field { diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxMsgModel.java b/mallinkService/src/main/java/com/simple/domain/po/WxMsgModel.java index 90e0d501b..e887872ea 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxMsgModel.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxMsgModel.java @@ -1,12 +1,11 @@ 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.util.Date; +import java.util.List; @Table(name = "wx_msg_model") public class WxMsgModel implements Serializable { @@ -59,6 +58,11 @@ public class WxMsgModel implements Serializable { /*审核状态 0未通过 1 通过 2审核中**/ @io.swagger.annotations.ApiModelProperty(value="审核状态 0未通过 1 通过 2审核中",name="status") private Integer status; + + @io.swagger.annotations.ApiModelProperty(value="modelid",name="modelId") + private Integer modelId; + + public String getTenantId() { return tenantId; } @@ -96,7 +100,13 @@ public class WxMsgModel implements Serializable { status = _status; } + public Integer getModelId() { + return modelId; + } + public void setModelId(Integer modelId) { + this.modelId = modelId; + } public static enum Field { @@ -107,7 +117,9 @@ public class WxMsgModel implements Serializable { ,Content_ASC("`content` ASC"),Content_DESC("`content` DESC") ,Createtime_ASC("`createtime` ASC"),Createtime_DESC("`createtime` DESC") ,Status_ASC("`status` ASC"),Status_DESC("`status` DESC") - ; + ,ModelId_ASC("`modelId` ASC"),ModelId_DESC("`modelId` DESC") + + ; private String value; Field(String value){ this.value = value; diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxMsgValidationcode.java b/mallinkService/src/main/java/com/simple/domain/po/WxMsgValidationcode.java index d7402bf63..fd8116b32 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxMsgValidationcode.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxMsgValidationcode.java @@ -63,6 +63,10 @@ public class WxMsgValidationcode implements Serializable { /***/ @io.swagger.annotations.ApiModelProperty(value="",name="code") private String code; + + @io.swagger.annotations.ApiModelProperty(value="",name="appid") + private String appid; + public String getPhone() { return phone; } @@ -112,7 +116,13 @@ public class WxMsgValidationcode implements Serializable { code = _code; } + public String getAppid() { + return appid; + } + public void setAppid(String appid) { + this.appid = appid; + } public static enum Field { diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxMsgValidationcodeModel.java b/mallinkService/src/main/java/com/simple/domain/po/WxMsgValidationcodeModel.java new file mode 100644 index 000000000..b7ccf700b --- /dev/null +++ b/mallinkService/src/main/java/com/simple/domain/po/WxMsgValidationcodeModel.java @@ -0,0 +1,189 @@ +package com.simple.domain.po; + +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Table(name = "wx_msg_validationcode_model") +public class WxMsgValidationcodeModel 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="name") + private String name; + /*签名**/ + @io.swagger.annotations.ApiModelProperty(value="签名",name="signature") + private String signature; + /***/ + @io.swagger.annotations.ApiModelProperty(value="",name="content") + private String content; + /***/ + @io.swagger.annotations.ApiModelProperty(value="",name="createtime") + private Date createtime; + /*审核状态 0未通过 1 通过 2审核中**/ + @io.swagger.annotations.ApiModelProperty(value="审核状态 0未通过 1 通过 2审核中",name="status") + private Integer status; + /*有效分钟数**/ + @io.swagger.annotations.ApiModelProperty(value="有效分钟数",name="minutes") + private Integer minutes; + /***/ + @io.swagger.annotations.ApiModelProperty(value="",name="modelId") + private Integer modelId; + /*场景**/ + @io.swagger.annotations.ApiModelProperty(value="场景",name="type") + private Integer type; + + @io.swagger.annotations.ApiModelProperty(value="tenantid",name="tenantId") + private String tenantId; + + public String getName() { + return name; + } + public void setName(String _name) { + name = _name; + } + public String getSignature() { + return signature; + } + public void setSignature(String _signature) { + signature = _signature; + } + public String getContent() { + return content; + } + public void setContent(String _content) { + content = _content; + } + public Date getCreatetime() { + return createtime; + } + public void setCreatetime(Date _createtime) { + createtime = _createtime; + } + public Integer getStatus() { + return status; + } + public void setStatus(Integer _status) { + status = _status; + } + public Integer getMinutes() { + return minutes; + } + public void setMinutes(Integer _minutes) { + minutes = _minutes; + } + public Integer getModelId() { + return modelId; + } + public void setModelId(Integer _modelId) { + modelId = _modelId; + } + public Integer getType() { + return type; + } + public void setType(Integer _type) { + type = _type; + } + + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + + public static enum Field + { + Id_ASC("`id` ASC"),Id_DESC("`id` DESC") + ,Name_ASC("`name` ASC"),Name_DESC("`name` DESC") + ,Signature_ASC("`signature` ASC"),Signature_DESC("`signature` DESC") + ,Content_ASC("`content` ASC"),Content_DESC("`content` DESC") + ,Createtime_ASC("`createtime` ASC"),Createtime_DESC("`createtime` DESC") + ,Status_ASC("`status` ASC"),Status_DESC("`status` DESC") + ,Minutes_ASC("`minutes` ASC"),Minutes_DESC("`minutes` DESC") + ,ModelId_ASC("`modelId` ASC"),ModelId_DESC("`modelId` DESC") + ,Type_ASC("`type` ASC"),Type_DESC("`type` 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(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(","); + List fList = new 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/WxTags.java b/mallinkService/src/main/java/com/simple/domain/po/WxTags.java index df8cba9f0..0d2129d38 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxTags.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxTags.java @@ -16,7 +16,7 @@ public class WxTags implements Serializable { protected Long id; @Transient - protected List ids; + protected List ids; @Transient protected String sortColumns; @@ -32,10 +32,10 @@ public class WxTags 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; } diff --git a/mallinkService/src/main/java/com/simple/domain/vo/WxChooseTagVo.java b/mallinkService/src/main/java/com/simple/domain/vo/WxChooseTagVo.java new file mode 100644 index 000000000..ccbeb8c96 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/domain/vo/WxChooseTagVo.java @@ -0,0 +1,30 @@ +package com.simple.domain.vo; + +import java.io.Serializable; + +public class WxChooseTagVo implements Serializable{ + + /** + * + */ + private static final long serialVersionUID = -2193506530627907289L; + //tagname + private String names; + //用户数 + private Long userCount; + public String getNames() { + return names; + } + public void setNames(String names) { + this.names = names; + } + public Long getUserCount() { + return userCount; + } + public void setUserCount(Long userCount) { + this.userCount = userCount; + } + + + +} diff --git a/mallinkService/src/main/java/com/simple/domain/vo/WxTagsVo.java b/mallinkService/src/main/java/com/simple/domain/vo/WxTagsVo.java index 9737c0012..629b79f4a 100644 --- a/mallinkService/src/main/java/com/simple/domain/vo/WxTagsVo.java +++ b/mallinkService/src/main/java/com/simple/domain/vo/WxTagsVo.java @@ -9,10 +9,19 @@ public class WxTagsVo implements Serializable{ * */ private static final long serialVersionUID = 1786459967532225067L; + private Long id; private String value; private List subTags; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } public String getValue() { return value; diff --git a/mallinkService/src/main/java/com/simple/mapper/CouponInjectMapper.java b/mallinkService/src/main/java/com/simple/mapper/CouponInjectMapper.java new file mode 100644 index 000000000..00da103a8 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/mapper/CouponInjectMapper.java @@ -0,0 +1,17 @@ +package com.simple.mapper; + +import com.simple.common.CommonMapper; +import com.simple.domain.po.CouponInject; + +import java.util.List; + +public interface CouponInjectMapper extends CommonMapper { + + List findList(CouponInject couponInject); + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCUserTagsMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCUserTagsMapper.java index fe572edca..f79fd58db 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxCUserTagsMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/WxCUserTagsMapper.java @@ -1,17 +1,16 @@ package com.simple.mapper; -import java.util.*; +import java.util.List; + import com.simple.common.CommonMapper; -import org.apache.ibatis.annotations.Param; import com.simple.domain.po.WxCUserTags; public interface WxCUserTagsMapper extends CommonMapper { List findList(WxCUserTags wxCUserTags); - + long findCountByTag(List tagIds); - - + List findUserByTag(List tagIds); } diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCampaignMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCampaignMapper.java new file mode 100644 index 000000000..7d228028b --- /dev/null +++ b/mallinkService/src/main/java/com/simple/mapper/WxCampaignMapper.java @@ -0,0 +1,19 @@ +package com.simple.mapper; + +import com.simple.common.CommonMapper; +import com.simple.domain.po.WxCampaign; + +import java.util.List; + +public interface WxCampaignMapper extends CommonMapper { + + List findList(WxCampaign wxCampaign); + + int getMaxSortNum(String tenantId); + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxDateAmountRecordMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxDateAmountRecordMapper.java index 769fb12c1..6b1cb4d4a 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxDateAmountRecordMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/WxDateAmountRecordMapper.java @@ -9,7 +9,7 @@ public interface WxDateAmountRecordMapper extends CommonMapper findList(WxDateAmountRecord wxDateAmountRecord); - + int updateAmount(WxDateAmountRecord wxDateAmountRecord); diff --git a/mallinkService/src/main/java/com/simple/mapper/WxMsgValidationcodeModelMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxMsgValidationcodeModelMapper.java new file mode 100644 index 000000000..520e21a4f --- /dev/null +++ b/mallinkService/src/main/java/com/simple/mapper/WxMsgValidationcodeModelMapper.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.WxMsgValidationcodeModel; + +public interface WxMsgValidationcodeModelMapper extends CommonMapper { + + List findList(WxMsgValidationcodeModel wxMsgValidationcodeModel); + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java b/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java index a308ad0c6..f1e57a5b8 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java +++ b/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java @@ -34,11 +34,11 @@ public class WxProfitSharing { /** * 分账查询 - * @param params 请求参数 + * @param params * @return */ public static String queryOrder(Map params) { - return doPost(PROFIT_SHARING_URL, params); + return doPost(PROFIT_SHARING_QUERY_URL, params); } diff --git a/mallinkService/src/main/java/com/simple/pay/WxProfitSharingQueryP.java b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingQueryP.java new file mode 100644 index 000000000..71f163397 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingQueryP.java @@ -0,0 +1,63 @@ +package com.simple.pay; + +import java.io.Serializable; + +/** + * Created by Peng on 2018/8/10. + */ +public class WxProfitSharingQueryP implements Serializable { + private static final long serialVersionUID = 1L; + + private String mch_id; // 商户号 + private String sub_mch_id; // 子商户号 + private String nonce_str; // 随机字符串 + private String sign; // 签名 + private String transaction_id ; // 支付订单号 + private String out_trade_no; // 商户分账单号 + + + 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 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; + } + +} diff --git a/mallinkService/src/main/java/com/simple/service/CouponInjectService.java b/mallinkService/src/main/java/com/simple/service/CouponInjectService.java new file mode 100644 index 000000000..5871fba32 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/CouponInjectService.java @@ -0,0 +1,53 @@ +package com.simple.service; + +import com.github.pagehelper.PageInfo; +import com.simple.domain.po.CouponInject; + +public interface CouponInjectService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param offset + * @param limit + * @return + */ + PageInfo listAsPage(CouponInject record, Integer pageIndex, Integer pageSize); + + /** + * 根据Id获得实体 + * + * @param id + * @return + */ + CouponInject getById(Long id); + + /** + * 保存或更新实体 + * + * @param record + */ + void saveOrUpdate(CouponInject record); + + /** + * 根据Id删除实体 + * + * @param id + */ + void deleteById(Long id); + /** + * 根据Id删除实体 + * + * @param id + */ + void add(CouponInject record); + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/WxCUserTagsService.java b/mallinkService/src/main/java/com/simple/service/WxCUserTagsService.java index 90728c707..83f712f5e 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCUserTagsService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCUserTagsService.java @@ -1,8 +1,11 @@ package com.simple.service; -import java.util.*; +import java.util.List; + import com.github.pagehelper.PageInfo; +import com.simple.domain.po.WxCUser; import com.simple.domain.po.WxCUserTags; +import com.simple.domain.vo.WxChooseTagVo; public interface WxCUserTagsService { @@ -38,11 +41,26 @@ public interface WxCUserTagsService { */ void deleteById(Long id); - - + /** + * tagIds查询 用户数量 + * @param tagIds + * @return + */ + long findCountByTag(List tagIds); + /** + * + * tagIds查询用户user信息集合 + * @param tagIds + * @return + */ + List findUserByTag(List tagIds); - - + /** + * 获取用户数量和tags name + * @param tagIds + * @return + */ + WxChooseTagVo findChooseTag(List tagIds); } diff --git a/mallinkService/src/main/java/com/simple/service/WxCampaignService.java b/mallinkService/src/main/java/com/simple/service/WxCampaignService.java new file mode 100644 index 000000000..66a5ef41d --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/WxCampaignService.java @@ -0,0 +1,48 @@ +package com.simple.service; + +import com.github.pagehelper.PageInfo; +import com.simple.domain.po.WxCampaign; + +public interface WxCampaignService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param offset + * @param limit + * @return + */ + PageInfo listAsPage(WxCampaign record, Integer pageIndex, Integer pageSize); + + /** + * 根据Id获得实体 + * + * @param id + * @return + */ + WxCampaign getById(Long id); + + /** + * 保存或更新实体 + * + * @param record + */ + void saveOrUpdate(WxCampaign record); + + /** + * 根据Id删除实体 + * + * @param id + */ + void deleteById(Long id); + int getMaxSortNum(String tenantId); + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java index 897e2a2fe..c54954ba4 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java @@ -34,6 +34,13 @@ public interface WxCouponOrderService { */ void saveOrUpdate(WxCouponOrder record); + /** + * 返回id + * @param record + * @return + */ + Long insertOne(WxCouponOrder record); + /** * 根据Id删除实体 * diff --git a/mallinkService/src/main/java/com/simple/service/WxCouponService.java b/mallinkService/src/main/java/com/simple/service/WxCouponService.java index 2b7ac2300..48a89ed2a 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCouponService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCouponService.java @@ -26,6 +26,13 @@ public interface WxCouponService { * @return */ PageInfo findEnableList(WxCoupon record, Integer pageIndex, Integer pageSize); + + /** + * 不分页 + * @param record + * @return + */ + List findList(WxCoupon record); /** * 根据Id获得实体 diff --git a/mallinkService/src/main/java/com/simple/service/WxDateAmountRecordService.java b/mallinkService/src/main/java/com/simple/service/WxDateAmountRecordService.java index 4bcaea949..b86b617e7 100644 --- a/mallinkService/src/main/java/com/simple/service/WxDateAmountRecordService.java +++ b/mallinkService/src/main/java/com/simple/service/WxDateAmountRecordService.java @@ -38,8 +38,16 @@ public interface WxDateAmountRecordService { */ void deleteById(Long id); - - + /** + * 修改交易核销 + * @param tenantId 租户id + * @param merchantId 商户id + * @param type 类型 0 交易记录 1.核销记录 + * @param payPrice 金额 + * @return + */ + int updateAmount(String tenantId,Long merchantId + ,Integer type,Integer payPrice); diff --git a/mallinkService/src/main/java/com/simple/service/WxMallService.java b/mallinkService/src/main/java/com/simple/service/WxMallService.java index 4a9c62861..a3447368f 100644 --- a/mallinkService/src/main/java/com/simple/service/WxMallService.java +++ b/mallinkService/src/main/java/com/simple/service/WxMallService.java @@ -37,8 +37,13 @@ public interface WxMallService { * @param id */ void deleteById(Long id); - - + + /** + * 根据tenant Id查寻 + * + * @param id + */ + WxMall getByTenantId(String id); diff --git a/mallinkService/src/main/java/com/simple/service/WxMerchantBUserService.java b/mallinkService/src/main/java/com/simple/service/WxMerchantBUserService.java index 5afbbaf26..7eebc8ac5 100644 --- a/mallinkService/src/main/java/com/simple/service/WxMerchantBUserService.java +++ b/mallinkService/src/main/java/com/simple/service/WxMerchantBUserService.java @@ -1,7 +1,7 @@ package com.simple.service; -import java.util.*; import com.github.pagehelper.PageInfo; +import com.simple.common.ResultData; import com.simple.domain.po.WxMerchantBUser; public interface WxMerchantBUserService { @@ -31,13 +31,21 @@ public interface WxMerchantBUserService { * @return */ WxMerchantBUser getByToken(String token); + + /** + * 根据appId,phone获得实体 + * + * @param record + * @return + */ + WxMerchantBUser getBUserByAppId(WxMerchantBUser record); /** * 保存或更新实体 * * @param record */ - void saveOrUpdate(WxMerchantBUser record); + Long saveOrUpdate(WxMerchantBUser record); /** * 根据Id删除实体 @@ -45,12 +53,10 @@ public interface WxMerchantBUserService { * @param id */ void deleteById(Long id); - - - - - - - + + boolean hasphone(String phone); + + ResultData updatepwd(String phone, String code, String pwd); + } diff --git a/mallinkService/src/main/java/com/simple/service/WxMerchantService.java b/mallinkService/src/main/java/com/simple/service/WxMerchantService.java index 9965c1059..510859616 100644 --- a/mallinkService/src/main/java/com/simple/service/WxMerchantService.java +++ b/mallinkService/src/main/java/com/simple/service/WxMerchantService.java @@ -1,20 +1,29 @@ package com.simple.service; -import java.util.*; import com.github.pagehelper.PageInfo; import com.simple.domain.po.WxMerchant; +import java.util.List; + public interface WxMerchantService { /** * 根据实体查询分页列表 * * @param record - * @param offset - * @param limit + * @param pageIndex + * @param pageSize * @return */ PageInfo listAsPage(WxMerchant record, Integer pageIndex, Integer pageSize); + + /** + * 根据实体查询分页列表 + * + * @param record + * @return + */ + List etcpList(WxMerchant record); /** * 根据Id获得实体 @@ -29,7 +38,7 @@ public interface WxMerchantService { * * @param record */ - void saveOrUpdate(WxMerchant record); + void saveOrUpdate(WxMerchant record); /** * 根据Id删除实体 diff --git a/mallinkService/src/main/java/com/simple/service/WxMsgCallbackService.java b/mallinkService/src/main/java/com/simple/service/WxMsgCallbackService.java index 19393ebc2..9204cc7f4 100644 --- a/mallinkService/src/main/java/com/simple/service/WxMsgCallbackService.java +++ b/mallinkService/src/main/java/com/simple/service/WxMsgCallbackService.java @@ -40,4 +40,9 @@ public interface WxMsgCallbackService { void saveOrUpdate(String bid, String item, String sign); + + void receivemodel(String bid, Map param); + + void receiveverifymodel(String bid, Map param); + } diff --git a/mallinkService/src/main/java/com/simple/service/WxMsgModelService.java b/mallinkService/src/main/java/com/simple/service/WxMsgModelService.java index a7e72758d..618c4efbf 100644 --- a/mallinkService/src/main/java/com/simple/service/WxMsgModelService.java +++ b/mallinkService/src/main/java/com/simple/service/WxMsgModelService.java @@ -41,7 +41,7 @@ public interface WxMsgModelService { - ResultData getmodellist(); + ResultData getmodellist(String tenantId); diff --git a/mallinkService/src/main/java/com/simple/service/WxMsgValidationcodeModelService.java b/mallinkService/src/main/java/com/simple/service/WxMsgValidationcodeModelService.java new file mode 100644 index 000000000..5671f1dc7 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/WxMsgValidationcodeModelService.java @@ -0,0 +1,49 @@ +package com.simple.service; + +import java.util.*; +import com.github.pagehelper.PageInfo; +import com.simple.common.ResultData; +import com.simple.domain.po.WxMsgValidationcodeModel; + +public interface WxMsgValidationcodeModelService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param offset + * @param limit + * @return + */ + PageInfo listAsPage(WxMsgValidationcodeModel record, Integer pageIndex, Integer pageSize); + + /** + * 根据Id获得实体 + * + * @param id + * @return + */ + WxMsgValidationcodeModel getById(String id); + + /** + * 保存或更新实体 + * + * @param record + */ + ResultData saveOrUpdate(WxMsgValidationcodeModel record); + + /** + * 根据Id删除实体 + * + * @param id + */ + void deleteById(String id); + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/WxOrderService.java b/mallinkService/src/main/java/com/simple/service/WxOrderService.java index b8f63c30a..47e55ec7a 100644 --- a/mallinkService/src/main/java/com/simple/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxOrderService.java @@ -44,6 +44,14 @@ public interface WxOrderService { */ WxOrder saveOrder(WxCUser user, Long couponId); + /** + * 免费券订单接口 + * @param userId + * @param couponId + * @return 订单id + */ + WxOrder sendUserFreeCoupon(Long userId, Long couponId); + /** * 更新订单状态 * @param orderId diff --git a/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java b/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java index 256ef1b31..764ad0b97 100644 --- a/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java @@ -50,9 +50,12 @@ public interface WxProfitSharingOrderService { /** * 创建分账订单 */ - public ResultData createSharingOrder(WxAppinfo appInfo, WxPayOrder wxPayOrder); - - + public ResultData createSharingOrder(WxPayOrder wxPayOrder); + + /** + * 查询分账订单 + */ + public ResultData querySharingOrder(WxPayOrder wxPayOrder); } diff --git a/mallinkService/src/main/java/com/simple/service/impl/CouponInjectServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/CouponInjectServiceImpl.java new file mode 100644 index 000000000..62f8e9acb --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/impl/CouponInjectServiceImpl.java @@ -0,0 +1,127 @@ +package com.simple.service.impl; + +import com.alibaba.fastjson.JSON; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.simple.common.IdWorker; +import com.simple.domain.po.*; +import com.simple.mapper.CouponInjectMapper; +import com.simple.service.CouponInjectService; +import com.simple.service.WxCUserTagsService; +import com.simple.service.WxCouponOrderService; +import com.simple.service.WxCouponService; +import org.apache.commons.lang.time.DateUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +@Service +public class CouponInjectServiceImpl implements CouponInjectService { + + @Autowired + CouponInjectMapper couponInjectMapper; + @Autowired + WxCouponOrderService wxCouponOrderService; + @Autowired + WxCouponService wxCouponService; + @Autowired + WxCUserTagsService wxCUserTagsService; + + + @Override + public PageInfo listAsPage(CouponInject record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> couponInjectMapper.findList(record)); + } + + @Override + public CouponInject getById(Long id) { + return couponInjectMapper.selectByPrimaryKey(id); + } + + @Override + public void saveOrUpdate(CouponInject record) { + if (record.getId() == null) { + //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); + final IdWorker idWorker = new IdWorker(0, 0); + record.setId(idWorker.nextId()); + couponInjectMapper.insertSelective(record); + } else { + couponInjectMapper.updateByPrimaryKeySelective(record); + } + } + + @Override + public void deleteById(Long id) { + couponInjectMapper.deleteByPrimaryKey(id); + } + + @Override + public void add(CouponInject record) { + WxCoupon wxCoupon = wxCouponService.getById(record.getCouponId()); + if (wxCoupon.getValidType() == 1) { //时间范围 + if (new Date().after(wxCoupon.getValidEndDate())) { + return; + } + } + String[] arys = record.getTags().split(","); + List tagids = new ArrayList<>(); + for (int i = 0; i < arys.length; i++) { + tagids.add(Long.parseLong(arys[i])); + } + record.setTags(JSON.toJSONString(arys)); + + final IdWorker idWorker = new IdWorker(0, 0); + record.setId(idWorker.nextId()); + if(record.getSendType()==0){ + record.setStatus(1); + record.setSendTime(new Date()); + }else{ + record.setStatus(0); + } + List cUsers = wxCUserTagsService.findUserByTag(tagids); + record.setSendAmount(cUsers.size()); + couponInjectMapper.insertSelective(record); + if(record.getSendType()==0) { + sendNow(wxCoupon,cUsers); + } + + + } + + private void sendNow(WxCoupon wxCoupon,List cUsers){ + //查询标签用户 + + for (WxCUser tempCUser : cUsers) { + sendCouponToUser(tempCUser,wxCoupon); + + } + } + private void sendCouponToUser(WxCUser tempCUser,WxCoupon wxCoupon){ + try { + WxCouponOrder wxCouponOrder = new WxCouponOrder(); + wxCouponOrder.setCouponId(wxCoupon.getId()); + wxCouponOrder.setCouponOrderStatus(0); + wxCouponOrder.setCUserId(tempCUser.getId()); + wxCouponOrder.setCouponPrice(0); + wxCouponOrder.setCreateDate(new Date()); + if (wxCoupon.getValidType() == 1) { //时间范围区间 + wxCouponOrder.setExpiredTime(wxCoupon.getValidEndDate()); + } else { + Date date = DateUtils.addDays(new Date(), wxCoupon.getValidDays()); + wxCouponOrder.setExpiredTime(date); + } + wxCouponOrder.setTenantId(wxCoupon.getTenantId()); + wxCouponOrderService.saveOrUpdate(wxCouponOrder); + //短信通知 + }catch (Exception e){ + throw e; + + } + } + +} diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCUserTagsServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCUserTagsServiceImpl.java index e25a4c2db..ae8affe28 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCUserTagsServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCUserTagsServiceImpl.java @@ -1,20 +1,36 @@ package com.simple.service.impl; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.simple.common.IdWorker; +import com.simple.domain.po.WxCUser; import com.simple.domain.po.WxCUserTags; +import com.simple.domain.po.WxTags; +import com.simple.domain.vo.WxChooseTagVo; +import com.simple.mapper.WxCUserMapper; import com.simple.mapper.WxCUserTagsMapper; +import com.simple.mapper.WxTagsMapper; import com.simple.service.WxCUserTagsService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.simple.common.IdWorker; @Service public class WxCUserTagsServiceImpl implements WxCUserTagsService { @Autowired WxCUserTagsMapper wxCUserTagsMapper; + + @Autowired + WxCUserMapper wxCUserMapper; + + @Autowired + WxTagsMapper wxTagsMapper; @Override @@ -43,11 +59,41 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { public void deleteById(Long id) { wxCUserTagsMapper.deleteByPrimaryKey(id); } - - - - - + + @Override + public long findCountByTag(List tagIds) { + return wxCUserTagsMapper.findCountByTag(tagIds); + } + + @Override + public List findUserByTag(List tagIds) { + List userIds = wxCUserTagsMapper.findUserByTag(tagIds); + if(userIds.size()==0) { + return new ArrayList<>(); + } + WxCUser wxCUser = new WxCUser(); + wxCUser.setIds(userIds); + return wxCUserMapper.findList(wxCUser); + } + + @Override + public WxChooseTagVo findChooseTag(List tagIds) { + WxTags wxTags =new WxTags(); + wxTags.setIds(tagIds); + List list = wxTagsMapper.findList(wxTags); + StringBuffer names= new StringBuffer(); + for(WxTags t:list) { + names.append(t.getName()+"/"); + } + String endName=""; + if(names.length()>0) { + endName = names.toString().substring(0,names.length()-1); + } + WxChooseTagVo vo =new WxChooseTagVo(); + vo.setNames(endName); + vo.setUserCount(findCountByTag(tagIds)); + return vo; + } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCampaignServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCampaignServiceImpl.java new file mode 100644 index 000000000..21709f28f --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCampaignServiceImpl.java @@ -0,0 +1,52 @@ +package com.simple.service.impl; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.simple.common.IdWorker; +import com.simple.domain.po.WxCampaign; +import com.simple.mapper.WxCampaignMapper; +import com.simple.service.WxCampaignService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class WxCampaignServiceImpl implements WxCampaignService { + + @Autowired + WxCampaignMapper wxCampaignMapper; + + + @Override + public PageInfo listAsPage(WxCampaign record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCampaignMapper.findList(record)); + } + + @Override + public WxCampaign getById(Long id) { + return wxCampaignMapper.selectByPrimaryKey(id); + } + + @Override + public void saveOrUpdate(WxCampaign record) { + if (record.getId() == null) { + //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); + IdWorker idWorker = new IdWorker(0, 0); + record.setId(idWorker.nextId()); + wxCampaignMapper.insertSelective(record); + } else { + wxCampaignMapper.updateByPrimaryKeySelective(record); + } + } + + @Override + public void deleteById(Long id) { + wxCampaignMapper.deleteByPrimaryKey(id); + } + + @Override + public int getMaxSortNum(String tenantId) { + return wxCampaignMapper.getMaxSortNum(tenantId); + } + + +} 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 a67f1369c..691757aee 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java @@ -60,6 +60,14 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } } + @Override + public Long insertOne(WxCouponOrder record) { + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + wxCouponOrderMapper.insertSelective(record); + return record.getId(); + } + @Override public void deleteById(Long id) { wxCouponOrderMapper.deleteByPrimaryKey(id); @@ -125,18 +133,24 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { 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(bUserId != wxCouponOrder.getCUserId()) { + // TODO web管理端退款 + // B端用户退款 + WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId.longValue()); + if (wxMerchantBUser == null) { + logger.error("操作员ID不存在:" + bUserId); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); + } + if (!wxOrder.getMerchantId().equals(wxMerchantBUser.getMerchantId())) { + logger.error("券: couponMerchantId-" + wxOrder.getMerchantId() + "核销: couponMerchantId-" + wxMerchantBUser.getMerchantId()); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); + } + } else { + logger.info("自己发起退款, userId: " + bUserId); } + if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode())) { logger.error("已过期: couponOrder-" + couponOrderId); throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME); 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 fc870d8ea..46219828b 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponServiceImpl.java @@ -28,6 +28,11 @@ public class WxCouponServiceImpl implements WxCouponService { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponMapper.findEnableList(record)); } + @Override + public List findList(WxCoupon record) { + return wxCouponMapper.findList(record); + } + @Override public WxCoupon getById(Long id) { return wxCouponMapper.selectByPrimaryKey(id); 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 e5761b636..b2f2a7fec 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxDateAmountRecordServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxDateAmountRecordServiceImpl.java @@ -43,12 +43,24 @@ public class WxDateAmountRecordServiceImpl implements WxDateAmountRecordService public void deleteById(Long id) { wxDateAmountRecordMapper.deleteByPrimaryKey(id); } - - - - - - - + + @Override + public int updateAmount(String tenantId, Long merchantId, Integer type, Integer payPrice) { + Date now = new Date(); + Calendar cal1 = Calendar.getInstance(); + cal1.setTime(now); // 将时分秒,毫秒域清零 + cal1.set(Calendar.HOUR_OF_DAY, 0); + cal1.set(Calendar.MINUTE, 0); + cal1.set(Calendar.SECOND, 0); + cal1.set(Calendar.MILLISECOND, 0); + now = cal1.getTime(); + WxDateAmountRecord r = new WxDateAmountRecord(); + r.setDate(now); + r.setTenantId(tenantId); + r.setMerchantId(merchantId); + r.setType(type); + r.setPayPrice(payPrice); + return wxDateAmountRecordMapper.updateAmount(r); + } } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMallServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMallServiceImpl.java index fa988ac04..5244c7f61 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMallServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMallServiceImpl.java @@ -45,9 +45,17 @@ public class WxMallServiceImpl implements WxMallService { public void deleteById(Long id) { wxMallMapper.deleteByPrimaryKey(id); } - - - + + @Override + public WxMall getByTenantId(String id) { + WxMall wxMall = new WxMall(); + wxMall.setTenantId(id); + try { + return wxMallMapper.findList(wxMall).get(0); + } catch (Exception e){ + return null; + } + } 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 845b38577..095c78139 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantBUserServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantBUserServiceImpl.java @@ -1,10 +1,15 @@ package com.simple.service.impl; import java.util.*; +import java.util.stream.Collectors; + import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.simple.common.ResultData; import com.simple.domain.po.WxMerchantBUser; +import com.simple.domain.po.WxMsgValidationcode; import com.simple.mapper.WxMerchantBUserMapper; +import com.simple.mapper.WxMsgValidationcodeMapper; import com.simple.service.WxMerchantBUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -16,6 +21,8 @@ public class WxMerchantBUserServiceImpl implements WxMerchantBUserService { @Autowired WxMerchantBUserMapper wxMerchantBUserMapper; + @Autowired + WxMsgValidationcodeMapper wxMsgValidationcodeMapper; @Override public PageInfo listAsPage(WxMerchantBUser record, Integer pageIndex, Integer pageSize) { @@ -27,13 +34,18 @@ public class WxMerchantBUserServiceImpl implements WxMerchantBUserService { return wxMerchantBUserMapper.selectByPrimaryKey(id); } + @Override + public WxMerchantBUser getBUserByAppId(WxMerchantBUser record) { + return wxMerchantBUserMapper.selectOne(record); + } + @Override public WxMerchantBUser getByToken(String token) { return wxMerchantBUserMapper.findByToken(token); } @Override - public void saveOrUpdate(WxMerchantBUser record) { + public Long saveOrUpdate(WxMerchantBUser record) { if (record.getId() == null) { //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); final IdWorker idWorker = IdWorker.get(); @@ -44,10 +56,12 @@ public class WxMerchantBUserServiceImpl implements WxMerchantBUserService { record.setCreateDate(date); record.setUpdateDate(date); wxMerchantBUserMapper.insertSelective(record); + return id; } else { Date date = new Date(); record.setUpdateDate(date); wxMerchantBUserMapper.updateByPrimaryKeySelective(record); + return record.getId(); } } @@ -55,12 +69,38 @@ public class WxMerchantBUserServiceImpl implements WxMerchantBUserService { public void deleteById(Long id) { wxMerchantBUserMapper.deleteByPrimaryKey(id); } - - - - - - - - + + @Override + public boolean hasphone(String phone) { + WxMerchantBUser bUser = new WxMerchantBUser(); + bUser.setPhone(phone); + List list = wxMerchantBUserMapper.findList(bUser); + return list.size()>=1?true:false; + } + + @Override + public ResultData updatepwd(String phone, String code, String pwd) { + WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode(); + wxMsgValidationcode.setPhone(phone); + wxMsgValidationcode.setCode(code); + List wxmsgvalidationcodelist = wxMsgValidationcodeMapper.findList(wxMsgValidationcode); + Date currentdate = new Date(); + wxmsgvalidationcodelist = wxmsgvalidationcodelist.stream().filter(validationcode -> + validationcode.getExpiretime().after(currentdate)).collect(Collectors.toList()); + if(wxmsgvalidationcodelist.size()>0){ + //更新 + WxMerchantBUser bUser = new WxMerchantBUser(); + bUser.setPhone(phone); + List list = wxMerchantBUserMapper.findList(bUser); + if(list.size()>0){ + bUser = list.get(0); + bUser.setBUserPwd(pwd); + wxMerchantBUserMapper.updateByPrimaryKeySelective(bUser); + return new ResultData(200,"操作成功"); + } + } + return new ResultData(500,"操作失败"); + } + + } 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 9151060c2..b1f55f880 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java @@ -4,10 +4,12 @@ import com.alibaba.fastjson.JSONArray; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.simple.common.IdWorker; +import com.simple.common.ResultData; import com.simple.domain.po.WxMerchant; import com.simple.domain.po.WxMerchantBUser; import com.simple.domain.po.WxMerchantShop; import com.simple.domain.po.WxShop; +import com.simple.enums.EnumCarVendor; import com.simple.mapper.WxMerchantBUserMapper; import com.simple.mapper.WxMerchantMapper; import com.simple.mapper.WxMerchantShopMapper; @@ -20,6 +22,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @Service public class WxMerchantServiceImpl implements WxMerchantService { @@ -41,6 +45,12 @@ public class WxMerchantServiceImpl implements WxMerchantService { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxMerchantMapper.findList(record)); } + @Override + public List etcpList(WxMerchant record) { + record.setCarVendorType(EnumCarVendor.CAR_ETCP.getCode()); + return wxMerchantMapper.findList(record); + } + @Override public WxMerchant getById(Long id) { WxMerchant wxMerchant = wxMerchantMapper.selectByPrimaryKey(id); @@ -81,10 +91,10 @@ public class WxMerchantServiceImpl implements WxMerchantService { @Override public void saveOrUpdate(WxMerchant wxMerchant) { - + final IdWorker idWorker = IdWorker.get(); + long merchantid = idWorker.nextId(); if (wxMerchant.getId() == null) { - final IdWorker idWorker = IdWorker.get(); - long merchantid = idWorker.nextId(); + wxMerchant.setId(merchantid); Date date = new Date(); wxMerchant.setStatus(1); @@ -114,21 +124,6 @@ public class WxMerchantServiceImpl implements WxMerchantService { WxShopMapper.updateByPrimaryKeySelective(wxShop); } - //保存商户关联用户 - List useridlist = wxMerchant.getUserids(); - for(Long userid:useridlist){ - WxMerchantBUser wxMerchantBUser = new WxMerchantBUser(); - wxMerchantBUser.setId(userid); - List buserlist = wxMerchantBUserMapper.findList(wxMerchantBUser); - if(buserlist.size()>0){ - wxMerchantBUser = buserlist.get(0); - wxMerchantBUser.setMerchantId(merchantid); - wxMerchantBUser.setUpdateDate(new Date()); - wxMerchantBUserMapper.updateByPrimaryKey(wxMerchantBUser); - } - } - - } else { //更新商户 @@ -151,7 +146,6 @@ public class WxMerchantServiceImpl implements WxMerchantService { WxShopMapper.updateByPrimaryKeySelective(wxShop); } - final IdWorker idWorker = IdWorker.get(); //保存商户商铺的关联 List shopidlist = wxMerchant.getShopids(); for(Long shopid:shopidlist){ @@ -174,21 +168,25 @@ public class WxMerchantServiceImpl implements WxMerchantService { WxShopMapper.updateByPrimaryKeySelective(wxShop); } + } - //保存商户关联用户 - List useridlist = wxMerchant.getUserids(); - for(Long userid:useridlist){ - WxMerchantBUser wxMerchantBUser = new WxMerchantBUser(); - wxMerchantBUser.setId(userid); - List buserlist = wxMerchantBUserMapper.findList(wxMerchantBUser); - if(buserlist.size()>0){ - wxMerchantBUser = buserlist.get(0); - wxMerchantBUser.setMerchantId(wxMerchant.getId()); - wxMerchantBUser.setUpdateDate(new Date()); - wxMerchantBUserMapper.updateByPrimaryKey(wxMerchantBUser); - } - } + //删除之前的关联用户 + List bUsers = wxMerchant.getbUsers(); + for(WxMerchantBUser user:bUsers){ + wxMerchantBUserMapper.deleteByPrimaryKey(user.getId()); + } + + //保存商户关联用户 + for(WxMerchantBUser user:bUsers){ + long id = idWorker.nextId(); + user.setId(id); + user.setBUserId(id); + user.setMerchantId(merchantid); + Date date = new Date(); + user.setCreateDate(date); + user.setUpdateDate(date); + wxMerchantBUserMapper.insertSelective(user); } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMsgCallbackServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMsgCallbackServiceImpl.java index d175db730..dfae67d34 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMsgCallbackServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMsgCallbackServiceImpl.java @@ -6,15 +6,19 @@ import com.github.pagehelper.PageInfo; import com.simple.common.IdWorker; import com.simple.domain.po.WxMsgCallback; import com.simple.domain.po.WxMsgConfig; +import com.simple.domain.po.WxMsgModel; +import com.simple.domain.po.WxMsgValidationcodeModel; import com.simple.mapper.WxMsgCallbackMapper; import com.simple.mapper.WxMsgConfigMapper; +import com.simple.mapper.WxMsgModelMapper; +import com.simple.mapper.WxMsgValidationcodeModelMapper; import com.simple.service.WxMsgCallbackService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; -import java.util.UUID; +import java.util.Map; @Service public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { @@ -25,6 +29,13 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { @Autowired WxMsgConfigMapper wxMsgConfigMapper; + @Autowired + WxMsgModelMapper wxMsgModelMapper; + + @Autowired + WxMsgValidationcodeModelMapper wxMsgValidationcodeModelMapper; + + @Override public PageInfo listAsPage(WxMsgCallback record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxMsgCallbackMapper.findList(record)); @@ -56,7 +67,6 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { WxMsgConfig wxMsgConfig = new WxMsgConfig(); wxMsgConfig.setBid(bid); - String tenantid=null; List list = wxMsgConfigMapper.findList(wxMsgConfig); if(list.size()==1) { List wxMsgCallbacks = JSONArray.parseArray(item, WxMsgCallback.class); @@ -65,7 +75,7 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { wxMsgConfigMapper.updateByPrimaryKeySelective(wxMsgConfig); for (WxMsgCallback wxMsgCallback : wxMsgCallbacks) { - wxMsgCallback.setTenantId(tenantid); + wxMsgCallback.setTenantId(wxMsgConfig.getTenantId()); wxMsgCallback.setSign(sign); wxMsgCallback.setCreatetime(new Date()); wxMsgCallbackMapper.insertSelective(wxMsgCallback); @@ -73,5 +83,37 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { } } + @Override + public void receivemodel(String bid, Map param) { + WxMsgConfig wxMsgConfig = new WxMsgConfig(); + wxMsgConfig.setBid(bid); + List list = wxMsgConfigMapper.findList(wxMsgConfig); + if(list.size()==1) { + + WxMsgModel wxMsgModel = new WxMsgModel(); + wxMsgModel.setModelId(Integer.valueOf(param.get("id"))); + wxMsgModel = wxMsgModelMapper.findList(wxMsgModel).get(0); + wxMsgModel.setStatus(param.get("status").equals("1")?Integer.valueOf(param.get("status")):0); + wxMsgModelMapper.updateByPrimaryKeySelective(wxMsgModel); + + } + } + + @Override + public void receiveverifymodel(String bid, Map param) { + WxMsgConfig wxMsgConfig = new WxMsgConfig(); + wxMsgConfig.setBid(bid); + List list = wxMsgConfigMapper.findList(wxMsgConfig); + if(list.size()==1) { + + WxMsgValidationcodeModel wxMsgModel = new WxMsgValidationcodeModel(); + wxMsgModel.setModelId(Integer.valueOf(param.get("id"))); + wxMsgModel = wxMsgValidationcodeModelMapper.findList(wxMsgModel).get(0); + wxMsgModel.setStatus(param.get("status").equals("1")?Integer.valueOf(param.get("status")):0); + wxMsgValidationcodeModelMapper.updateByPrimaryKeySelective(wxMsgModel); + + } + } + } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMsgModelServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMsgModelServiceImpl.java index d988eecfe..08ee0f964 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMsgModelServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMsgModelServiceImpl.java @@ -42,11 +42,9 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { @Override public ResultData saveOrUpdate(WxMsgModel wxMsgModel) { - String tenantid="1"; - //从短信配置中查询密钥 bid 等信息 WxMsgConfig wxMsgConfig = new WxMsgConfig(); - wxMsgConfig.setTenantId(tenantid); + wxMsgConfig.setTenantId(wxMsgModel.getTenantId()); List wxMsgConfigs = wxMsgConfigMapper.findList(wxMsgConfig); if(wxMsgConfigs.size()==0)return new ResultData(Result.SUCCESS, "您还未接入短信运营商,请联系平台管理员"); wxMsgConfig = wxMsgConfigs.get(0); @@ -72,6 +70,7 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { message.put("bid", bid); message.put("signature", signature); message.put("content", content); + message.put("notify_url",wxMsgConfig.getModelnotifyurl()); StringBuilder sb = new StringBuilder(); Set> entries = message.entrySet(); @@ -105,8 +104,11 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { if (wxMsgModel.getId() == null) { final IdWorker idWorker = IdWorker.get(); wxMsgModel.setId(idWorker.nextId()); - wxMsgModel.setTenantId(tenantid); + wxMsgModel.setTenantId(wxMsgModel.getTenantId()); + String data = jsonObjectResult.get("data").toString(); + wxMsgModel.setModelId(Integer.valueOf(data)); wxMsgModel.setCreatetime(new Date()); + wxMsgModel.setStatus(2);//审核中 wxMsgModelMapper.insertSelective(wxMsgModel); } else { wxMsgModelMapper.updateByPrimaryKeySelective(wxMsgModel); @@ -124,9 +126,10 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { } @Override - public ResultData getmodellist() { + public ResultData getmodellist(String tenantId) { WxMsgModel wxMsgModel = new WxMsgModel(); - wxMsgModel.setTenantId("1"); + wxMsgModel.setTenantId(tenantId); + wxMsgModel.setStatus(1); List list = wxMsgModelMapper.findList(wxMsgModel); return new ResultData(list); } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMsgServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMsgServiceImpl.java index ad4776c09..09229afd1 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMsgServiceImpl.java @@ -63,7 +63,6 @@ public class WxMsgServiceImpl implements WxMsgService { if (wxMsg.getStatus() == 2) { final IdWorker idWorker = IdWorker.get(); wxMsg.setId(idWorker.nextId()); - wxMsg.setTenantId("1"); wxMsg.setCreatetime(new Date()); wxMsgMapper.insertSelective(wxMsg); return new ResultData(Result.SUCCESS, "已保存到草稿箱"); @@ -78,7 +77,6 @@ public class WxMsgServiceImpl implements WxMsgService { wxMsg.setStatus(0); final IdWorker idWorker = IdWorker.get(); wxMsg.setId(idWorker.nextId()); - wxMsg.setTenantId("1"); wxMsg.setCreatetime(new Date()); wxMsgMapper.insertSelective(wxMsg); return new ResultData(Result.SUCCESS, "短信会在预设时间发送"); @@ -128,7 +126,7 @@ public class WxMsgServiceImpl implements WxMsgService { public ResultData sendmsg(WxMsg wxMsg) { //从短信配置中查询密钥 bid 等信息 WxMsgConfig wxMsgConfig = new WxMsgConfig(); - wxMsgConfig.setTenantId("1"); + wxMsgConfig.setTenantId(wxMsg.getTenantId()); List wxMsgConfigs = wxMsgConfigMapper.findList(wxMsgConfig); if (wxMsgConfigs.size() == 0) return new ResultData(Result.SUCCESS, "您还未接入短信运营商,请联系平台管理员"); wxMsgConfig = wxMsgConfigs.get(0); @@ -187,7 +185,6 @@ public class WxMsgServiceImpl implements WxMsgService { if (wxMsg.getId() == null) { final IdWorker idWorker = IdWorker.get(); wxMsg.setId(idWorker.nextId()); - wxMsg.setTenantId("1"); wxMsg.setCreatetime(new Date()); wxMsgMapper.insertSelective(wxMsg); } else { diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMsgValidationcodeModelServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMsgValidationcodeModelServiceImpl.java new file mode 100644 index 000000000..a90fb0b16 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMsgValidationcodeModelServiceImpl.java @@ -0,0 +1,139 @@ +package com.simple.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.simple.common.IdWorker; +import com.simple.common.Result; +import com.simple.common.ResultData; +import com.simple.domain.po.WxMsgConfig; +import com.simple.domain.po.WxMsgModel; +import com.simple.domain.po.WxMsgValidationcodeModel; +import com.simple.mapper.WxMsgConfigMapper; +import com.simple.mapper.WxMsgValidationcodeModelMapper; +import com.simple.service.WxMsgValidationcodeModelService; +import com.simple.utils.AesUtil; +import com.simple.utils.HMACSHA256; +import com.simple.utils.HttpUtil; +import com.simple.utils.RsaUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +@Service +public class WxMsgValidationcodeModelServiceImpl implements WxMsgValidationcodeModelService { + + @Autowired + WxMsgValidationcodeModelMapper wxMsgValidationcodeModelMapper; + + @Autowired + WxMsgConfigMapper wxMsgConfigMapper; + + @Override + public PageInfo listAsPage(WxMsgValidationcodeModel record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxMsgValidationcodeModelMapper.findList(record)); + } + + @Override + public WxMsgValidationcodeModel getById(String id) { + return wxMsgValidationcodeModelMapper.selectByPrimaryKey(id); + } + + @Override + public ResultData saveOrUpdate(WxMsgValidationcodeModel wxMsgModel) { + + + //从短信配置中查询密钥 bid 等信息 + WxMsgConfig wxMsgConfig = new WxMsgConfig(); + wxMsgConfig.setTenantId(wxMsgModel.getTenantId()); + List wxMsgConfigs = wxMsgConfigMapper.findList(wxMsgConfig); + if(wxMsgConfigs.size()==0)return new ResultData(Result.SUCCESS, "您还未接入短信运营商,请联系平台管理员"); + wxMsgConfig = wxMsgConfigs.get(0); + + String secret = wxMsgConfig.getSecret(); + String bid = wxMsgConfig.getBid(); + String signature = wxMsgModel.getSignature(); + String content = wxMsgModel.getContent(); + //查看用户最新数据是否存在 + List wxMsgModels = wxMsgValidationcodeModelMapper.findList(wxMsgModel); + if (wxMsgModel.getId() == null && wxMsgModels.size() == 1) { + return new ResultData(Result.SUCCESS, "您添加的短信模板已存在"); + } + if (wxMsgModel.getId() != null && wxMsgModels.size() == 1) { + WxMsgValidationcodeModel wxmsgmodel = wxMsgModels.get(0); + if(wxmsgmodel.getContent().equals(wxMsgModel.getContent()) && wxmsgmodel.getSignature().equals(wxMsgModel.getSignature())) { + return new ResultData(Result.SUCCESS, "您添加的短信模板已存在"); + } + } + + //请求api数据排序 + TreeMap message = new TreeMap<>(); + message.put("bid", bid); + message.put("signature", signature); + message.put("content", content); + message.put("notify_url",wxMsgConfig.getModelnotifyurl()); + message.put("verifysms","1"); + + StringBuilder sb = new StringBuilder(); + Set> entries = message.entrySet(); + for (Map.Entry entry : entries) { + sb.append(entry.getKey()).append("=").append(entry.getValue()); + } + sb.append("&secret=").append(secret); + String sign = HMACSHA256.sha256_HMAC(sb.toString(), secret); + message.put("sign", sign.toUpperCase()); + + String str32 = "198b02e8fd704e96198b02e8fd704e96"; + String iv = "198b02e8fd704e96"; + + Map params = new HashMap<>(); + params.put("iv", iv); + params.put("bid", bid); + try { + String data = AesUtil.AESEncode(str32, JSONObject.toJSONString(message), iv); + String sc = RsaUtil.RSAEncode(str32.getBytes(), wxMsgConfig.getPublickey()); + params.put("data", data); + params.put("sc", sc); + } catch (Exception e) { + e.printStackTrace(); + } + + String requestUrl = "https://webapp.wiwide.com/apisms/addtemplate"; + String result = HttpUtil.doPost(requestUrl, params); + JSONObject jsonObjectResult = JSONObject.parseObject(result); + String ret = jsonObjectResult.get("ret").toString(); + if (ret.equals("1") || ret.equals("-6")) { + if (wxMsgModel.getId() == null) { + final IdWorker idWorker = IdWorker.get(); + wxMsgModel.setId(idWorker.nextId()); + wxMsgModel.setTenantId(wxMsgModel.getTenantId()); + String data = jsonObjectResult.get("data").toString(); + wxMsgModel.setModelId(Integer.valueOf(data)); + wxMsgModel.setCreatetime(new Date()); + wxMsgModel.setStatus(2);//审核中 + wxMsgValidationcodeModelMapper.insertSelective(wxMsgModel); + } else { + wxMsgValidationcodeModelMapper.updateByPrimaryKeySelective(wxMsgModel); + } + return new ResultData(Result.SUCCESS, "创建模板成功"); + }else if (ret == "-4") { + return new ResultData(Result.SUCCESS, "短信签名或内容错误"); + } + return new ResultData(Result.SUCCESS, "创建模板失败"); + + } + + @Override + public void deleteById(String id) { + wxMsgValidationcodeModelMapper.deleteByPrimaryKey(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 d2957c49a..d31a31204 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMsgValidationcodeServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMsgValidationcodeServiceImpl.java @@ -3,18 +3,23 @@ package com.simple.service.impl; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.simple.common.ErrorCode; import com.simple.common.IdWorker; import com.simple.common.Result; import com.simple.common.ResultData; import com.simple.domain.po.WxMall; -import com.simple.domain.po.WxMsg; import com.simple.domain.po.WxMsgConfig; import com.simple.domain.po.WxMsgValidationcode; +import com.simple.domain.po.WxMsgValidationcodeModel; import com.simple.mapper.WxMallMapper; import com.simple.mapper.WxMsgConfigMapper; import com.simple.mapper.WxMsgValidationcodeMapper; +import com.simple.mapper.WxMsgValidationcodeModelMapper; import com.simple.service.WxMsgValidationcodeService; -import com.simple.utils.*; +import com.simple.utils.AesUtil; +import com.simple.utils.HMACSHA256; +import com.simple.utils.HttpUtil; +import com.simple.utils.RsaUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -33,6 +38,8 @@ public class WxMsgValidationcodeServiceImpl implements WxMsgValidationcodeServic @Autowired WxMallMapper wxMallMapper; + @Autowired + WxMsgValidationcodeModelMapper wxMsgValidationcodeModelMapper; @Override public PageInfo listAsPage(WxMsgValidationcode record, Integer pageIndex, Integer pageSize) { @@ -70,21 +77,29 @@ public class WxMsgValidationcodeServiceImpl implements WxMsgValidationcodeServic Date currentdate = new Date(); wxmsgvalidationcodelist = wxmsgvalidationcodelist.stream().filter(validationcode -> validationcode.getExpiretime().after(currentdate)).collect(Collectors.toList()); - if(wxmsgvalidationcodelist.size()>0) return new ResultData(200,"发送成功"); + if(wxmsgvalidationcodelist.size()>0) return new ResultData(ErrorCode.MSG_REPEAT_SEND.getCode(),ErrorCode.MSG_REPEAT_SEND.getMessage()); //2、根据tenantid查询出商场名称作为签名 - WxMall wxMall = new WxMall(); + /*WxMall wxMall = new WxMall(); wxMall.setTenantId(wxMsgValidationcode.getTenantId()); - List wxmallist = wxMallMapper.findList(wxMall); - wxMsgValidationcode.setSignature(wxmallist.get(0).getName()); + List wxmallist = wxMallMapper.findList(wxMall);*/ + //3、从短信配置中查询密钥 bid 等信息 WxMsgConfig wxMsgConfig = new WxMsgConfig(); - wxMsgConfig.setTenantId(wxMsgValidationcode.getTenantId()); + wxMsgConfig.setAppid(wxMsgValidationcode.getAppid()); List wxMsgConfigs = wxMsgConfigMapper.findList(wxMsgConfig); if (wxMsgConfigs.size() == 0) new ResultData(500,"发送失败"); wxMsgConfig = wxMsgConfigs.get(0); + + WxMsgValidationcodeModel wxMsgValidationcodeModel = new WxMsgValidationcodeModel(); + wxMsgValidationcodeModel.setTenantId(wxMsgConfig.getTenantId()); + wxMsgValidationcodeModel.setType(1); + wxMsgValidationcodeModel = wxMsgValidationcodeModelMapper.findList(wxMsgValidationcodeModel).get(0); + wxMsgValidationcode.setSignature(wxMsgValidationcodeModel.getSignature()); + + String secret = wxMsgConfig.getSecret(); String bid = wxMsgConfig.getBid(); String publickey = wxMsgConfig.getPublickey(); @@ -93,7 +108,7 @@ public class WxMsgValidationcodeServiceImpl implements WxMsgValidationcodeServic String phone = wxMsgValidationcode.getPhone(); String signature = wxMsgValidationcode.getSignature(); //内容 - String msg=new StringBuilder().append(code).append("(动态验证码),请在15分钟内填写").toString(); + String msg = wxMsgValidationcodeModel.getContent().replace("{s6}", String.valueOf(code)); wxMsgValidationcode.setCode(String.valueOf(code)); wxMsgValidationcode.setMsg(msg); @@ -104,6 +119,7 @@ public class WxMsgValidationcodeServiceImpl implements WxMsgValidationcodeServic message.put("signature", signature); message.put("msg", msg); message.put("notify_url", notifyUrl); + message.put("verifysms","1"); StringBuilder sb = new StringBuilder(); Set> entries = message.entrySet(); @@ -140,7 +156,8 @@ public class WxMsgValidationcodeServiceImpl implements WxMsgValidationcodeServic wxMsgValidationcode.setId(idWorker.nextId()); long currentTime = System.currentTimeMillis() ; Date createtime=new Date(currentTime); - currentTime +=15*60*1000; + Integer minutes = wxMsgValidationcodeModel.getMinutes(); + currentTime +=minutes*60*1000; Date expiredate=new Date(currentTime); wxMsgValidationcode.setExpiretime(expiredate); wxMsgValidationcode.setCreatetime(createtime); 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 1773ec1e3..b2259497e 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java @@ -166,8 +166,8 @@ public class WxOrderServiceImpl implements WxOrderService { record.setCreateDate(curr); record.setUpdateDate(curr); wxOrderMapper.insertSelective(record); - } catch (RuntimeException e) { + // TODO 增库存 logger.error("保存订单:" + e.getMessage()); throw new MallinkException(ErrorCode.ORDER_IS_FAIL); } @@ -188,6 +188,147 @@ public class WxOrderServiceImpl implements WxOrderService { wxCouponOrderMapper.insertSelective(couponOrder); } catch (RuntimeException e) { + // TODO 增库存 + logger.error("WxCouponOrder:" + e.getMessage()); + throw new MallinkException(ErrorCode.ORDER_IS_FAIL); + } + + return record; + } + + @Override + public WxOrder sendUserFreeCoupon(Long userId, Long couponId) { + WxCUser user = null; + WxCUser userQ = new WxCUser(); + userQ.setId(userId); + try { + user = wxCUserMapper.selectOne(userQ); + } catch (Exception e) { + logger.error("userId : " + userId + ", e: " + e.getMessage()); + } + if (user == null) { + logger.error("用户不存在, userId: " + userId); + throw new MallinkException(ErrorCode.USER_IS_EMPTY); + } + + String couponIdStr = String.valueOf(couponId); + WxCoupon coupon = wxCouponMapper.selectByPrimaryKey(couponId); + if (coupon == null) { + logger.error("券不存在, couponId: " + couponIdStr); + throw new MallinkException(ErrorCode.COUPON_IS_EMPTY); + } + if (coupon.getSalePrice() != 0) { + logger.error("券不免费, couponId: " + couponIdStr); + throw new MallinkException(ErrorCode.COUPON_IS_NOT_FREE); + } + //加锁 + long time = System.currentTimeMillis() + RedisLock.TIMEOUT; + String timeStr = String.valueOf(time); + if(!redisLock.lock(couponIdStr, timeStr)) { + logger.error("此券被锁定, couponId: " + couponIdStr); + throw new MallinkException(ErrorCode.TOO_MANY_REQUEST); + } + + int payPrice = 0; + int payment = 0; + + Date curr = new Date(); + Date valid_date = null; + + // 检查 优惠券 库存 + if (coupon.getRemainInventory() <= 0) { + //解锁 + redisLock.unlock(couponIdStr, timeStr); + logger.error("此券库存为0, couponId: " + couponIdStr); + throw new MallinkException(ErrorCode.REMAIN_IS_EMPTY); + } + + // check 购买是否超限 + int count = 0; + try { + WxCouponOrder query = new WxCouponOrder(); + query.setCouponId(couponId); + query.setCUserId(user.getId()); + query.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode()); + count = wxCouponOrderMapper.selectCount(query); + }catch (Exception e) { + //解锁 + redisLock.unlock(couponIdStr, timeStr); + 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 { + // 减库存 + coupon.setRemainInventory(coupon.getRemainInventory() - 1); + wxCouponMapper.updateByPrimaryKeySelective(coupon); + //解锁 + redisLock.unlock(couponIdStr, timeStr); + } catch (RuntimeException e) { + //解锁 + redisLock.unlock(couponIdStr, timeStr); + logger.error("此券减库存失败, couponId: " + couponIdStr); + throw new MallinkException(ErrorCode.ORDER_IS_FAIL); + } + + payPrice = coupon.getSalePrice(); + payment = coupon.getSalePrice(); + + valid_date = (coupon.getValidType() == EnumValidStatus.VALID_RANGE.getCode())? + coupon.getValidEndDate(): + new Date((curr.getTime()/1000+coupon.getValidDays()*24*60*60)*1000); + + final IdWorker idWorker = IdWorker.get(); + Long orderNumber = idWorker.nextId(); + + // body + // tenant_id + merchant_id + title + subtitle + String bodyStr = coupon.getTitle() + "/" + coupon.getSubTitle(); + + WxOrder record = new WxOrder(); + + try { + // 保存订单 + record.setId(orderNumber); + 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_PAYMENT_SUCCESS.getCode()); + record.setDetail(bodyStr); + record.setCreateDate(curr); + record.setUpdateDate(curr); + wxOrderMapper.insertSelective(record); + } catch (RuntimeException e) { + // TODO 增库存 + logger.error("保存订单:" + e.getMessage()); + throw new MallinkException(ErrorCode.ORDER_IS_FAIL); + } + + try { + WxCouponOrder couponOrder = new WxCouponOrder(); + couponOrder.setId(idWorker.nextId()); + couponOrder.setTenantId(user.getTenantId()); + couponOrder.setCouponId(couponId); + couponOrder.setCUserId(user.getId()); + couponOrder.setOrderId(orderNumber); + couponOrder.setExpiredTime(valid_date); + couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode()); + couponOrder.setCreateDate(curr); + couponOrder.setUpdateDate(curr); + couponOrder.setCouponPrice(payPrice); + + wxCouponOrderMapper.insertSelective(couponOrder); + } catch (RuntimeException e) { + // TODO 增库存 logger.error("WxCouponOrder:" + e.getMessage()); throw new MallinkException(ErrorCode.ORDER_IS_FAIL); } 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 07c218eb9..93d419513 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -13,6 +13,7 @@ import com.simple.common.ResultData; import com.simple.domain.po.*; import com.simple.enums.EnumOrderStatus; import com.simple.enums.EnumPayStatus; +import com.simple.enums.EnumPayType; import com.simple.enums.EnumPayWay; import com.simple.exception.MallinkException; import com.simple.mapper.WxAppinfoMapper; @@ -86,6 +87,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.error("pay order, order status not allow, repaymentReq: " + order.toString() + " , payWay: " + payWay.toString()); throw new MallinkException(ErrorCode.ORDER_IS_NOT_PAY); } + if (order.getPaymentType() != EnumPayType.PAY_PAYMENT.getCode()) { + return new ResultData(ErrorCode.PAY_ORDER_IS_NOT_PAYMENT); + } // 2. check 是否有支付订单 Date currentDate = new Date(); List list = wxPayOrderMapper.findList(record); @@ -216,10 +220,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } if (!"SUCCESS".equals(paramMap.get("return_code"))) { logger.warn("notify order, wxpay status not success, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - Map resultMap = new LinkedHashMap<>(); + SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "订单状态码非SUCCESS"); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(resultMap); } String payOrderNo = paramMap.get("out_trade_no"); @@ -228,18 +232,18 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { WxPayOrder payOrder = wxPayOrderMapper.selectByPrimaryKey(payOrderId); if (payOrder == null) { logger.warn("notify order, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - Map resultMap = new LinkedHashMap<>(); + SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "订单不存在"); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(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()); - Map resultMap = new LinkedHashMap<>(); + SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "订单总金额不一致"); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(resultMap); } Date timeEnd = null; @@ -255,16 +259,19 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { // 处理支付成功 handleOrderPaySuccess(payOrder, paramMap.get("transaction_id")); logger.info("notify order, wxpay checksign success, paramMap:{}, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - Map resultMap = new LinkedHashMap<>(); + SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "SUCCESS"); resultMap.put("return_msg", "OK"); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(resultMap); } } catch (RuntimeException e) { 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); + throw new MallinkException(ErrorCode.PAY_ORDER_ERROR); } - return ""; + SortedMap resultMap = new TreeMap(); + resultMap.put("return_code", "FAIL"); + resultMap.put("return_msg", "FAILED"); + return XmlUtil.getRequestXml(resultMap); } @Override @@ -355,32 +362,41 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } 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.getId() > 0) { + // 修改支付订单状态 + // 订单金额为0时,支付订单不创建,直接更改订单状态 + 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); + int _count = wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS); + if (_count > 1) { + throw new MallinkException(ErrorCode.ORDER_IS_FAIL); + } } 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); + int _count = wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL); + if (_count > 1) { + throw new MallinkException(ErrorCode.ORDER_IS_FAIL); + } } catch (Exception e) { logger.error(e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java index ac475f67f..c4a05a186 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -18,6 +18,7 @@ import com.simple.mapper.*; import com.simple.pay.WxPayment; import com.simple.pay.WxProfitSharing; import com.simple.pay.WxProfitSharingP; +import com.simple.pay.WxProfitSharingQueryP; import com.simple.service.WxProfitSharingOrderService; import com.simple.utils.BeanUtils; import com.simple.utils.Utility; @@ -48,20 +49,43 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ @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\":\"下单时请用合适的参数\"}}"); + @Autowired + WxCUserMapper wxCUserMapper; + + + 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\":\"下单时请用合适的参数\"}}"); + + final JSONObject errorMapQuery = JSON.parseObject("{" + + "\"SYSTEMERROR\":{\"detail\":\"接口返回错误\",\"reason\":\"系统超时\",\"resolution\":\"系统异常,请用相同参数重新调用\"}," + + "\"INVALID_TRANSACTIONID\":{\"detail\":\"无效的微信支付订单号\",\"reason\":\"请求参数未按指引进行填写\",\"resolution\":\"检查原交易单号是否存在\"}," + + "\"PARAM_ERROR\":{\"detail\":\"参数错误\\t\",\"reason\":\"请求参数未按指引进行填写\",\"resolution\":\"请求参数错误,请重新检查再调用分账接口\"}," + + "\"INVALID_REQUEST\":{\"detail\":\"请求不合法\",\"reason\":\"参数中APPID或MCHID不存在等 \",\"resolution\":\"请重新检查再调用分账接口\"}," + + "\"ORDERNOTEXIST\":{\"detail\":\"分账单不存在\",\"reason\":\"订单号错误或分账单号错误\",\"resolution\":\"请检查订单号或分账单号是否有错误\"}}"); + + + final JSONObject statusMap = JSON.parseObject( + "{\"ACCEPTED\":3," + + "\"PROCESSING\": 4," + + "\"FINISHED\": 5," + + "\"CLOSED\": 6}"); + + final JSONObject resultStatusMap = JSON.parseObject( + "{\"PENDING\": 1," + + "\"SUCCESS\": 2," + + "\"ADJUST\": 3," + + "\"RETURNED\": 4," + + "\"CLOSED\": 5}"); @Override public PageInfo listAsPage(WxProfitSharingOrder record, Integer pageIndex, Integer pageSize) { @@ -95,17 +119,37 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ @Override public void test() { - createSharingOrder(wxAppinfoMapper.selectByPrimaryKey(new Long(1L)),wxPayOrderMapper.selectByPrimaryKey(new Long(190403470006681600L))); + createSharingOrder(wxPayOrderMapper.selectByPrimaryKey(new Long(190403470006681600L))); + } + + private WxAppinfo getAppinfo(WxPayOrder wxPayOrder) { + WxAppinfo wxAppinfo; + + WxCUser wxCUser = wxCUserMapper.selectByPrimaryKey(wxPayOrder.getCUserId()); + if (wxCUser == null) + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), ErrorCode.USER_IS_EMPTY.getMessage()); + wxAppinfo = wxAppinfoMapper.selectByPrimaryKey(wxCUser.getAppId()); + if (wxAppinfo == null) + throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND.getCode(), ErrorCode.APP_ID_NOT_FOUND.getMessage()); + + return wxAppinfo; } @Override - public ResultData createSharingOrder(WxAppinfo subAppInfo, WxPayOrder wxPayOrder) { + public ResultData createSharingOrder(WxPayOrder wxPayOrder) { final IdWorker idworker = IdWorker.get(); - WxProfitSharingOrder record = new WxProfitSharingOrder(); try { + + WxAppinfo subAppInfo = getAppinfo(wxPayOrder); + 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())); + WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxPayOrder.getOrderId()); + //是否已创建分账订单 + WxProfitSharingOrder record = new WxProfitSharingOrder(); record.setOrderId(wxPayOrder.getId().toString()); record = wxProfitSharingOrderMapper.selectOne(record); if (record == null) { @@ -126,10 +170,6 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ 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()); @@ -211,4 +251,98 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); } } + + @Override + public ResultData querySharingOrder(WxPayOrder wxPayOrder) { + + WxProfitSharingOrder record = new WxProfitSharingOrder(); + try { + WxAppinfo subAppInfo = getAppinfo(wxPayOrder); + WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(subAppInfo.getPayId()); + //WxPayAccount mainPayAccount = wxPayAccountMapper.selectByPrimaryKey(new Long(EnumPayDomain.PAY_DOMAIN_MASTER_ACCOUNT_ID.getCode())); + + WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxPayOrder.getOrderId()); + + //是否已创建分账订单 + record.setOrderId(wxPayOrder.getId().toString()); + record = wxProfitSharingOrderMapper.selectOne(record); + if (record == null) + throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), ErrorCode.ORDER_IS_NOT_FIND.getMessage()); + + //分账提交 + WxProfitSharingQueryP wxProfitSharingQueryP = new WxProfitSharingQueryP(); + //wxProfitSharingP.setMch_id(mainPayAccount.getMchId()); + wxProfitSharingQueryP.setMch_id(payAccount.getMchId()); + wxProfitSharingQueryP.setSub_mch_id(payAccount.getMchId()); + wxProfitSharingQueryP.setNonce_str(Utility.generate32UUID()); + wxProfitSharingQueryP.setTransaction_id(wxPayOrder.getTransactionId()); + wxProfitSharingQueryP.setOut_trade_no(record.getId().toString()); + + wxProfitSharingQueryP.setSign(WxPayment.createSign(BeanUtils.toStringMap(wxProfitSharingQueryP), payAccount.getApiKey())); + String response = WxProfitSharing.pushOrder(BeanUtils.toStringMap(wxProfitSharingQueryP)); + + Map returnMap = WxPayment.xmlToMap(response); + String return_code = returnMap.get("return_code"); + if (!"SUCCESS".equals(return_code)) { + return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); + } + + if (!WxPayment.verifyNotify(returnMap,payAccount.getApiKey())){ + return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); + } + + String out_order_no = returnMap.get("out_order_no"); + if (!out_order_no.equals(record.getId().toString())){ + return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); + } + + String result_code = returnMap.get("result_code"); + if (!"SUCCESS".equals(result_code)) { + return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_APPLY_FAILED.getCode(), returnMap.get("result_msg")); + } + + record.setSharingStatus((Integer) statusMap.get(returnMap.get("status"))); + record.setUpdateTime(new Date()); + wxProfitSharingOrderMapper.updateByPrimaryKey(record); + + String receivers = returnMap.get("receivers"); + JSONArray jReceivers = JSONArray.parseArray(receivers); + + WxProfitSharingResult result = new WxProfitSharingResult(); + result.setSharingOrderId(record.getId().toString()); + List wxProfitSharingResultList = wxProfitSharingResultMapper.findList(result); + + + WxProfitSharingReceiver wxProfitSharingReceiver; + WxProfitSharingResult wxProfitSharingResult; + + for(int i=0; i resultMap = new LinkedHashMap<>(); + SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "订单状态码非SUCCESS"); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(resultMap); } String payOrderNo = paramMap.get("out_trade_no"); @@ -407,59 +409,62 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { WxPayOrder payOrder = wxPayOrderMapper.selectByPrimaryKey(payOrderId); if (payOrder == null) { logger.warn("notify order, wxpay check pay order not exists, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); - Map resultMap = new LinkedHashMap<>(); + SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "订单不存在"); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(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()); - Map resultMap = new LinkedHashMap<>(); + SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "订单总金额不一致"); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(resultMap); } String refundOrderNo = paramMap.get("out_refund_no"); Long refundOrderId = Long.valueOf(refundOrderNo); WxRefundOrder refundOrder = wxRefundOrderMapper.selectByPrimaryKey(refundOrderId); if (refundOrder == null) { logger.warn("notify order, wxpay check pay order not exists, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); - Map resultMap = new LinkedHashMap<>(); + SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "退款订单不存在"); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(resultMap); } // 验证支付金额 if(!paramMap.get("total_fee").equals(refundOrder.getTotalFee().toString())) { logger.warn("notify order, wxpay check total_fee is invalid, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); - Map resultMap = new LinkedHashMap<>(); + SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "订单总金额不一致"); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(resultMap); } // 验证退款金额 if(!paramMap.get("refund_fee").equals(refundOrder.getRefundFee().toString())) { logger.warn("notify order, wxpay check refund_fee is invalid, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); - Map resultMap = new LinkedHashMap<>(); + SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "退款总金额不一致"); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(resultMap); } // 处理支付成功 handleRefundSuccess(refundOrder, paramMap.get("transaction_id"), paramMap.get("refund_id")); logger.info("notify order, wxpay checksign success, paramMap:{}, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); - Map resultMap = new LinkedHashMap<>(); + SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "SUCCESS"); resultMap.put("return_msg", "OK"); - return XmlUtil.parseDto2Xml(resultMap, ""); + return XmlUtil.getRequestXml(resultMap); } } catch (RuntimeException e) { 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); + throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR); } - return ""; + SortedMap resultMap = new TreeMap(); + resultMap.put("return_code", "FAIL"); + resultMap.put("return_msg", "FAILED"); + return XmlUtil.getRequestXml(resultMap); } @Override diff --git a/mallinkService/src/main/java/com/simple/utils/XmlUtil.java b/mallinkService/src/main/java/com/simple/utils/XmlUtil.java index d816f4f52..308214dee 100644 --- a/mallinkService/src/main/java/com/simple/utils/XmlUtil.java +++ b/mallinkService/src/main/java/com/simple/utils/XmlUtil.java @@ -5,6 +5,14 @@ import org.apache.commons.logging.LogFactory; import org.dom4j.*; import org.dom4j.tree.DefaultElement; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import java.io.StringWriter; import java.util.*; /** @@ -385,4 +393,67 @@ public final class XmlUtil { return map; } + /** + * 将Map转换为XML格式的字符串 + * + * @param data Map类型数据 + * @return XML格式的字符串 + * @throws Exception + */ + public static String mapToXml(Map data) throws Exception { + DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder documentBuilder= documentBuilderFactory.newDocumentBuilder(); + org.w3c.dom.Document document = documentBuilder.newDocument(); + org.w3c.dom.Element root = document.createElement("xml"); + document.appendChild(root); + for (String key: data.keySet()) { + String value = data.get(key); + if (value == null) { + value = ""; + } + value = value.trim(); + org.w3c.dom.Element filed = document.createElement(key); + filed.appendChild(document.createTextNode(value)); + root.appendChild(filed); + } + TransformerFactory tf = TransformerFactory.newInstance(); + Transformer transformer = tf.newTransformer(); + DOMSource source = new DOMSource(document); + transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + StringWriter writer = new StringWriter(); + StreamResult result = new StreamResult(writer); + transformer.transform(source, result); + String output = writer.getBuffer().toString(); //.replaceAll("\n|\r", ""); + try { + writer.close(); + } + catch (Exception ex) { + } + return output; + } + + /* + * 将SortedMap 集合转化成 xml格式 + */ + public static String getRequestXml(SortedMap parameters){ + StringBuffer sb = new StringBuffer(); + sb.append(""); + Set es = parameters.entrySet(); + Iterator it = es.iterator(); + while(it.hasNext()) { + Map.Entry entry = (Map.Entry)it.next(); + String k = (String)entry.getKey(); + String v = (String)entry.getValue(); + if ("attach".equalsIgnoreCase(k)||"body".equalsIgnoreCase(k)||"sign".equalsIgnoreCase(k)|| + "return_code".equalsIgnoreCase(k)||"return_msg".equalsIgnoreCase(k)) { + sb.append("<"+k+">"+""); + }else { + sb.append("<"+k+">"+v+""); + } + } + sb.append(""); + return sb.toString(); + } + } \ No newline at end of file diff --git a/mallinkService/src/main/resources/mapper/CouponInjectMapper.xml b/mallinkService/src/main/resources/mapper/CouponInjectMapper.xml new file mode 100644 index 000000000..0a22d3866 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/CouponInjectMapper.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`name`,`m_user_id`,`send_type`,`coupon_id`,`coupon_name`,`send_time`,`send_amount`,`status`,`error_msg`,`tags`,`model_id`,`create_time`,`update_time` + + + + where 1 = 1 + + + and `id` = #{id} + + + + + and `tenant_id` like concat('%', #{tenantId},'%') + + + + + and `name` like concat('%', #{name},'%') + + + + + and `m_user_id` like concat('%', #{mUserId},'%') + + + + + and `send_type` = #{sendType} + + + + + and `coupon_id` = #{couponId} + + + + + and `coupon_name` like concat('%', #{couponName},'%') + + + + + and `send_time` = #{sendTime} + + + + + and `send_time` >= #{sendTimeStart} and `send_time` <= #{sendTimeEnd} + + + + and `send_amount` = #{sendAmount} + + + + + and `status` = #{status} + + + + + and `error_msg` like concat('%', #{errorMsg},'%') + + + + + and `tags` like concat('%', #{tags},'%') + + + + + and `create_time` = #{createTime} + + + + + and `update_time` = #{updateTime} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxCUserTagsMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserTagsMapper.xml index 7225a3dc6..3538ebf41 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserTagsMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserTagsMapper.xml @@ -60,9 +60,12 @@ + - - - + diff --git a/mallinkService/src/main/resources/mapper/WxCampaignMapper.xml b/mallinkService/src/main/resources/mapper/WxCampaignMapper.xml new file mode 100644 index 000000000..6d733db1e --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxCampaignMapper.xml @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`cover_img`,`title`,`sub_title`,`use_price`,`discount_price`,`detail`,`valid_start_date`,`valid_end_date`,`img_detail`,`type`,`coupon_ids`,`mechant_id`,`sort_num`,`status`,`create_time`,`update_time` + + + + where 1 = 1 + + + and `id` = #{id} + + + + + and `tenant_id` like concat('%', #{tenantId},'%') + + + + + and `cover_img` like concat('%', #{coverImg},'%') + + + + + and `title` like concat('%', #{title},'%') + + + + + and `sub_title` like concat('%', #{subTitle},'%') + + + + + and `use_price` = #{usePrice} + + + + + and `discount_price` = #{discountPrice} + + + + + and `detail` like concat('%', #{detail},'%') + + + + + and `valid_start_date` = #{validStartDate} + + + + + and `valid_end_date` = #{validEndDate} + + + + + and `img_detail` like concat('%', #{imgDetail},'%') + + + + + and `type` = #{type} + + + + + and `coupon_ids` like concat('%', #{couponIds},'%') + + + + + and `mechant_id` = #{mechantId} + + + + + and `sort_num` = #{sortNum} + + + + + and `status` = #{status} + + + + + and `create_time` = #{createTime} + + + + + and `update_time` = #{updateTime} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxDateAmountRecordMapper.xml b/mallinkService/src/main/resources/mapper/WxDateAmountRecordMapper.xml index 201fceed4..b7578ed88 100644 --- a/mallinkService/src/main/resources/mapper/WxDateAmountRecordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxDateAmountRecordMapper.xml @@ -90,7 +90,12 @@ + + update wx_date_amount_record set pay_price=pay_price+#{payPrice} + where tenant_id=#{tenantId} and merchant_id=#{merchantId} + and type=#{type} and date = #{date} + diff --git a/mallinkService/src/main/resources/mapper/WxMallMapper.xml b/mallinkService/src/main/resources/mapper/WxMallMapper.xml index 4e0c99e43..c78119001 100644 --- a/mallinkService/src/main/resources/mapper/WxMallMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMallMapper.xml @@ -16,10 +16,12 @@ + + - `id`,`tenant_id`,`name`,`group`,`country`,`province`,`city`,`addr`,`wiwide_id`,`total_area`,`operating_area`,`park_area`,`park_place_number`,`pay_id` + `id`,`tenant_id`,`name`,`group`,`country`,`province`,`city`,`addr`,`wiwide_id`,`total_area`,`operating_area`,`park_area`,`park_place_number`,`pay_id`,`service_phone` @@ -93,7 +95,11 @@ and `pay_id` = #{payId} - + + + and `service_phone` = #{servicePhone} + + and id in diff --git a/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml index 5e30b300e..6eb59a647 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantBUserMapper.xml @@ -13,10 +13,12 @@ + + - `id`,`tenant_id`,`b_user_id`,`phone`,`b_user_pwd`,`merchant_id`,`create_date`,`update_date`,`app_id`,`token`,`expire_time` + `id`,`tenant_id`,`b_user_id`,`phone`,`b_user_pwd`,`merchant_id`,`create_date`,`update_date`,`app_id`,`token`,`expire_time`,`name` @@ -75,7 +77,10 @@ and `expire_time` = #{expireTime} - + + + and `name` = #{name} + and id in diff --git a/mallinkService/src/main/resources/mapper/WxMsgConfigMapper.xml b/mallinkService/src/main/resources/mapper/WxMsgConfigMapper.xml index 31cd66a3c..c78da4524 100644 --- a/mallinkService/src/main/resources/mapper/WxMsgConfigMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMsgConfigMapper.xml @@ -15,10 +15,15 @@ + + + + + - `id`,`tenant_id`,`secret`,`publickey`,`bid`,`recharge`,`remains`,`total`,`account`,`reminderstatus`,`reminder`,`phone`,`notifyurl` + `id`,`tenant_id`,`secret`,`publickey`,`bid`,`recharge`,`remains`,`total`,`account`,`reminderstatus`,`reminder`,`phone`,`notifyurl`,`modelnotifyurl`,`verifynotifyurl`,`appid` @@ -87,7 +92,13 @@ and `notifyurl` like concat('%', #{notifyurl},'%') - + + + + and `appid` = #{appid} + + + and id in diff --git a/mallinkService/src/main/resources/mapper/WxMsgModelMapper.xml b/mallinkService/src/main/resources/mapper/WxMsgModelMapper.xml index 9d1c14d11..e05d085df 100644 --- a/mallinkService/src/main/resources/mapper/WxMsgModelMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMsgModelMapper.xml @@ -9,10 +9,12 @@ + + - `id`,`tenant_id`,`name`,`signature`,`content`,`createtime`,`status` + `id`,`tenant_id`,`name`,`signature`,`content`,`createtime`,`status`,`model_id` @@ -51,7 +53,11 @@ and `status` = #{status} - + + + and `model_id` = #{modelId} + + and id in @@ -65,7 +71,8 @@ select from wx_msg_model - + + diff --git a/mallinkService/src/main/resources/mapper/WxMsgValidationcodeMapper.xml b/mallinkService/src/main/resources/mapper/WxMsgValidationcodeMapper.xml index cebd27877..026c429cc 100644 --- a/mallinkService/src/main/resources/mapper/WxMsgValidationcodeMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMsgValidationcodeMapper.xml @@ -11,10 +11,12 @@ + + - `id`,`phone`,`expiretime`,`createtime`,`type`,`tenant_id`,`msg`,`signature`,`code` + `id`,`phone`,`expiretime`,`createtime`,`type`,`tenant_id`,`msg`,`signature`,`code`,`appid` diff --git a/mallinkService/src/main/resources/mapper/WxMsgValidationcodeModelMapper.xml b/mallinkService/src/main/resources/mapper/WxMsgValidationcodeModelMapper.xml new file mode 100644 index 000000000..c2d90d671 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxMsgValidationcodeModelMapper.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + `id`,`name`,`signature`,`content`,`createtime`,`status`,`minutes`,`model_id`,`type`,`tenant_id` + + + + where 1 = 1 + and `id` = #{id} + and `name` = #{name} + and `signature` = #{signature} + and `content` = #{content} + and `createtime` = #{createtime} + and `status` = #{status} + and `minutes` = #{minutes} + and `model_id` = #{modelId} + and `type` = #{type} + and `tenant_id` = #{tenantId} + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxTagsMapper.xml b/mallinkService/src/main/resources/mapper/WxTagsMapper.xml index 4e847090b..02562d72a 100644 --- a/mallinkService/src/main/resources/mapper/WxTagsMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxTagsMapper.xml @@ -71,7 +71,10 @@