diff --git a/mallinkAdmin/src/main/java/com/simple/UserApplication.java b/mallinkAdmin/src/main/java/com/simple/UserApplication.java index 3dfeddf2d..ac99f6512 100644 --- a/mallinkAdmin/src/main/java/com/simple/UserApplication.java +++ b/mallinkAdmin/src/main/java/com/simple/UserApplication.java @@ -15,6 +15,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; @MapperScan(basePackages = {"com.simple.mapper"}) @EnableSwagger2 @EnableEncryptableProperties + public class UserApplication { public static void main(String[] args) { diff --git a/mallinkAdmin/src/main/java/com/simple/config/ShiroConfig.java b/mallinkAdmin/src/main/java/com/simple/config/ShiroConfig.java index 948d3b637..023b8ae89 100644 --- a/mallinkAdmin/src/main/java/com/simple/config/ShiroConfig.java +++ b/mallinkAdmin/src/main/java/com/simple/config/ShiroConfig.java @@ -121,6 +121,7 @@ public class ShiroConfig { filterChainDefinitionMap.put("/wxMallApply/add","anon"); filterChainDefinitionMap.put("/wxMallApply/sendvalidationcode","anon"); filterChainDefinitionMap.put("/captcha.jpg", "anon"); + filterChainDefinitionMap.put("/version", "anon"); // filterChainDefinitionMap.put("/role/**", "corsFilter,token"); filterChainDefinitionMap.put("/**", "corsFilter,token,authc"); // filterChainDefinitionMap.put("/**", "anon"); diff --git a/mallinkAdmin/src/main/java/com/simple/controller/CouponInjectController.java b/mallinkAdmin/src/main/java/com/simple/controller/CouponInjectController.java index 0e6da25a4..974679e9c 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/CouponInjectController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/CouponInjectController.java @@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo; import com.simple.common.Result; import com.simple.common.ResultData; import com.simple.domain.po.CouponInject; +import com.simple.enums.EnumCouponInjectSendType; import com.simple.service.CouponInjectService; import com.simple.service.WxCUserTagsService; import io.swagger.annotations.Api; @@ -51,7 +52,7 @@ public class CouponInjectController extends BaseController { couponInject.setTenantId(getUser().getTenantId()); couponInject.setMUserId(getUser().getId()); - if (couponInject.getSendType() == 0) { + if (couponInject.getSendType() == EnumCouponInjectSendType.IMMEDIATE.getCode()) { couponInject.setSendTime(new Date()); } //Assert.notNull(couponInject.getName(), "角色名不能为空"); diff --git a/mallinkAdmin/src/main/java/com/simple/controller/HomeController.java b/mallinkAdmin/src/main/java/com/simple/controller/HomeController.java index e44428563..a0f4464d7 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/HomeController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/HomeController.java @@ -21,6 +21,7 @@ import org.apache.shiro.subject.Subject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; @@ -37,6 +38,8 @@ import java.io.IOException; public class HomeController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); + @Value("${version}") + private String version; @Autowired private Producer producer; @@ -47,7 +50,7 @@ public class HomeController { @Autowired private MallRolePermissionService mallRolePermissionService; - @RequestMapping("/captcha.jpg") + @GetMapping("/captcha.jpg") public void captcha(HttpServletResponse response)throws ServletException, IOException { response.setHeader("Cache-Control", "no-store, no-cache"); response.setContentType("image/jpeg"); @@ -66,12 +69,10 @@ public class HomeController { @ApiOperation("登录") @PostMapping("/doLogin") - public ResultData login(@RequestBody MallUserInfo user, String captcha) { - if (captcha != null) { - String kaptcha = ShiroUtils.getKaptcha(Constants.KAPTCHA_SESSION_KEY); - if(!captcha.equalsIgnoreCase(kaptcha)){ - return new ResultData(ErrorCode.KAPCHA_NOT_EQUAL); - } + public ResultData login(@RequestBody MallUserInfo user) { + String kaptcha = ShiroUtils.getKaptcha(Constants.KAPTCHA_SESSION_KEY); + if(!user.getCaptcha().equalsIgnoreCase(kaptcha)){ + return new ResultData(ErrorCode.KAPCHA_NOT_EQUAL); } ResultData data = new ResultData(); @@ -125,4 +126,10 @@ public class HomeController { SecurityUtils.getSubject().logout(); return data; } + + @ApiOperation("获取后端版本号") + @GetMapping("/version") + public ResultData version() { + return new ResultData(version); + } } \ No newline at end of file diff --git a/mallinkAdmin/src/main/java/com/simple/controller/MallUserInfoController.java b/mallinkAdmin/src/main/java/com/simple/controller/MallUserInfoController.java index 25952ef1a..32a80ba9e 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/MallUserInfoController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/MallUserInfoController.java @@ -1,6 +1,7 @@ package com.simple.controller; import com.github.pagehelper.PageInfo; +import com.simple.common.ErrorCode; import com.simple.common.ResultData; import com.simple.domain.po.*; import com.simple.service.*; @@ -78,8 +79,13 @@ public class MallUserInfoController extends BaseController { @ApiOperation(value = "创建用户接口", response = String.class) @PostMapping("add") public ResultData createUser(@RequestBody MallUserInfo userInfo) { - Assert.notNull(userInfo.getUsername(), "用户名不能为空"); - Assert.isTrue(checkUnique(userInfo.getUsername(), 0), "重复的用户名"); + + if(checkUniqueName(userInfo.getUsername(), null)){ + return new ResultData(ErrorCode.USER_NAME_IS_FOUND,"用户名已存在"); + } + if(checkUniquePhone(userInfo.getPhone(), null)){ + return new ResultData(ErrorCode.USER_PHONE_IS_FOUND,"手机号已存在"); + } Assert.notNull(userInfo.getPassword(), "密码不能为空"); PasswordHelper passwordHelper = new PasswordHelper(); passwordHelper.encryptPassword(userInfo); @@ -97,8 +103,13 @@ public class MallUserInfoController extends BaseController { @ApiOperation(value = "修改用户接口", response = String.class) @PostMapping("update") public ResultData updateUser(@RequestBody MallUserInfo userInfo) { - Assert.notNull(userInfo.getUsername(), "用户名不能为空"); - Assert.isTrue(checkUnique(userInfo.getUsername(), 1), "重复的用户名"); + //Assert.notNull(userInfo.getUsername(), "用户名不能为空"); + if(checkUniqueName(userInfo.getUsername(), userInfo.getId())){ + return new ResultData(ErrorCode.USER_NAME_IS_FOUND,"用户名已存在"); + } + if(checkUniquePhone(userInfo.getPhone(), userInfo.getId())){ + return new ResultData(ErrorCode.USER_PHONE_IS_FOUND,"手机号已存在"); + } // Assert.notNull(userInfo.getPassword(), "密码不能为空"); // PasswordHelper passwordHelper = new PasswordHelper(); // passwordHelper.encryptPassword(userInfo); @@ -155,18 +166,12 @@ public class MallUserInfoController extends BaseController { return new ResultData(); } - private boolean checkUnique(String username, Integer type) { - if (type == 0) { - if (userInfoService.cntByUserName(username) > 0) { - return false; - } - } - if (type == 1) { - if (userInfoService.cntByUserName(username) > 1) { - return false; - } - } - return true; + private boolean checkUniqueName(String username, Long id) { + return userInfoService.cntByUserName(username,id); + } + + private boolean checkUniquePhone(String phone, Long id) { + return userInfoService.cntByUserPhone(phone,id); } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCarCallBackController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCarCallBackController.java index 8012438d7..7f731af45 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCarCallBackController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCarCallBackController.java @@ -8,7 +8,7 @@ import com.simple.domain.po.WxCarCmdLog; import com.simple.domain.po.WxPark; import com.simple.enums.EnumCarCmd; import com.simple.enums.EnumCarVendor; -import com.simple.enums.EnumCouponSendType; +import com.simple.enums.EnumCouponSendSendType; import com.simple.enums.EnumETCPCode; import com.simple.service.*; import com.simple.utils.ETCPUtil; @@ -109,7 +109,7 @@ public class WxCarCallBackController extends BaseController { // TODO 可能多用户关联同一张车牌 List userCarList = wxCUserCarService.getList(userCarQ); for (WxCUserCar userCar : userCarList) { - wxCouponSendService.sendCouponToUser(tenantId, userCar.getCUserId(), EnumCouponSendType.CAR_STOP); + wxCouponSendService.sendCouponToUser(tenantId, userCar.getCUserId(), EnumCouponSendSendType.CAR_STOP); } } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java index 09c131ee8..dc8a8c4db 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java @@ -1,10 +1,13 @@ 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.WxCoupon; import com.simple.domain.po.WxCouponSend; +import com.simple.enums.EnumCouponSendType; +import com.simple.enums.EnumCouponStatus; import com.simple.service.WxCouponSendService; import com.simple.service.WxCouponService; import io.swagger.annotations.ApiImplicitParam; @@ -43,19 +46,24 @@ public class WxCouponSendController extends BaseController { @PostMapping("add") public ResultData add(@RequestBody WxCouponSend wxCouponSend) { if (null == wxCouponSend) { - return new ResultData(Result.ERROR, "参数不对"); + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); } wxCouponSend.setTenantId(getTenantId()); wxCouponSend.setStatus(0); List wxCouponSendList = wxCouponSendService.listAsPage(wxCouponSend, 1, 1).getList(); if (wxCouponSendList != null && wxCouponSendList.size() > 0) { - return new ResultData(Result.ERROR, "已经添加过该券"); + return new ResultData(ErrorCode.COUPON_SEND_IS_EXISTED); } WxCoupon wxCoupon = wxCouponService.getById(wxCouponSend.getCouponId()); - if (wxCoupon.getStatus() != 0 || wxCoupon.getSendType() != 2) { - return new ResultData(Result.ERROR, "该券的状态有问题"); + if (wxCoupon.getStatus() != EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode()){ + return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); } + if (wxCoupon.getSendType() != EnumCouponSendType.PASSIVE.getCode()) { + return new ResultData(ErrorCode.COUPON_TYPE_IS_NOT_PASSIVE); + } + + wxCouponSend.setMerchantId(wxCoupon.getMerchantId()); wxCouponSend.setType(wxCoupon.getType()); wxCouponSend.setTenantId(wxCoupon.getTenantId()); diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java index b90611ea1..2dfb65f18 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java @@ -75,14 +75,4 @@ public class WxPayOrderController extends BaseController { @Autowired private WxAppinfoService wxAppinfoService; - - @ApiOperation("测试分账") - @GetMapping("/sharing") - public ResultData test() { - //xProfitSharingOrderService.test(); - wxPayOrderService.sendPaySuccess(); - - return new ResultData(); - } - } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxUserStructureController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxUserStructureController.java index d917c6d62..cdfdcdfca 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxUserStructureController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxUserStructureController.java @@ -101,13 +101,17 @@ public class WxUserStructureController extends BaseController { WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); dto.setTenantId(getTenantId()); dto.setStartTime(startTime); + dto.setEndTime(endTime); if (endTime != null) { Calendar c = Calendar.getInstance(); c.setTime(endTime); c.add(Calendar.DAY_OF_YEAR, 1); endTime = c.getTime(); } - long allCount = wxCUserService.findCount(dto);//总量 + //微信用户数据 + long wxallCount = wxCUserService.findCount(dto);//总量 + //会员数据 + Map member=getMemberData(dto); Calendar c = Calendar.getInstance(); c.set(Calendar.HOUR_OF_DAY, 0); @@ -116,8 +120,8 @@ public class WxUserStructureController extends BaseController { Date today = c.getTime(); dto.setStartTime(today); dto.setEndTime(null); - long todayCount = wxCUserService.findCount(dto);//今天新增 - List newCountVos = new ArrayList<>();//每日新增会员数 + long wxtodayCount = wxCUserService.findCount(dto);//今天新增 + List wxnewCountVos = new ArrayList<>();//每日新增会员数 int j = 1; for (int i = 29; i >= 0; i--) { c.clear(); @@ -132,6 +136,64 @@ public class WxUserStructureController extends BaseController { j++; vo.setName(new SimpleDateFormat("MM-dd").format(dto.getStartTime())); vo.setCount(count); + wxnewCountVos.add(vo); + } + List wxallCountVos = new ArrayList<>();//累计会员数 + c.clear(); + c.setTime(today); + c.add(Calendar.DAY_OF_YEAR, -30); + dto.setEndTime(c.getTime()); + dto.setStartTime(null); + long firstDay = wxCUserService.findCount(dto);//统计的第一天总数 + int i = 0; + long sumCount = 0; + for (UserStructureVo v : wxnewCountVos) { + UserStructureVo vo = new UserStructureVo(); + sumCount += v.getCount(); + vo.setCount(firstDay + sumCount); + vo.setName(v.getName()); + vo.setSortNum(i + 1); + wxallCountVos.add(vo); + i++; + } + + + Map map = new HashMap<>(); + map.put("wxallCount", wxallCount);//累计会员总数 + map.put("wxtodayCount", wxtodayCount);//今日新增会员数 + map.put("wxallCountVos", wxallCountVos);//累计会员列表( 日期和数量list) + map.put("wxnewCountVos", wxnewCountVos);//新增会员列表(日期和数量list) + map.putAll(member); + return new ResultData(map); + } + + private Map getMemberData(WxCUserBasicInfoDto dto) { + + long allCount = wxCUserBasicInfoService.findCount(dto);//总量 + + Calendar c = Calendar.getInstance(); + c.set(Calendar.HOUR_OF_DAY, 0); + c.set(Calendar.MINUTE, 0); + c.set(Calendar.SECOND, 0); + Date today = c.getTime(); + dto.setStartTime(today); + dto.setEndTime(null); + long todayCount = wxCUserBasicInfoService.findCount(dto);//今天新增 + List newCountVos = new ArrayList<>();//每日新增会员数 + int j = 1; + for (int i = 29; i >= 0; i--) { + c.clear(); + c.setTime(today); + c.add(Calendar.DAY_OF_YEAR, -i); + dto.setStartTime(c.getTime()); + c.add(Calendar.DAY_OF_YEAR, 1); + dto.setEndTime(c.getTime()); + long count = wxCUserBasicInfoService.findCount(dto); + UserStructureVo vo = new UserStructureVo(); + vo.setSortNum(j); + j++; + vo.setName(new SimpleDateFormat("MM-dd").format(dto.getStartTime())); + vo.setCount(count); newCountVos.add(vo); } List allCountVos = new ArrayList<>();//累计会员数 @@ -140,7 +202,7 @@ public class WxUserStructureController extends BaseController { c.add(Calendar.DAY_OF_YEAR, -30); dto.setEndTime(c.getTime()); dto.setStartTime(null); - long firstDay = wxCUserService.findCount(dto);//统计的第一天总数 + long firstDay = wxCUserBasicInfoService.findCount(dto);//统计的第一天总数 int i = 0; long sumCount = 0; for (UserStructureVo v : newCountVos) { @@ -152,12 +214,15 @@ public class WxUserStructureController extends BaseController { allCountVos.add(vo); i++; } + Map map = new HashMap<>(); map.put("allCount", allCount);//累计会员总数 map.put("todayCount", todayCount);//今日新增会员数 map.put("allCountVos", allCountVos);//累计会员列表( 日期和数量list) map.put("newCountVos", newCountVos);//新增会员列表(日期和数量list) - return new ResultData(map); + + return map; + } @ApiOperation("拓客分析") diff --git a/mallinkAdmin/src/main/java/com/simple/schedule/OrderExpiringSchedule.java b/mallinkAdmin/src/main/java/com/simple/schedule/OrderExpiringSchedule.java index 09b842666..cb3a7d6c9 100644 --- a/mallinkAdmin/src/main/java/com/simple/schedule/OrderExpiringSchedule.java +++ b/mallinkAdmin/src/main/java/com/simple/schedule/OrderExpiringSchedule.java @@ -3,6 +3,7 @@ package com.simple.schedule; import com.simple.domain.po.WxOrder; import com.simple.enums.EnumOrderStatus; import com.simple.mapper.WxOrderMapper; +import com.simple.service.WxOrderService; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; @@ -25,7 +26,10 @@ public class OrderExpiringSchedule { @Autowired WxOrderMapper wxOrderMapper; - @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + @Autowired + WxOrderService wxOrderService; + + @Scheduled(cron = "0 */5 * * * *?") // 每5分钟检查一次 //@Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 public void orderExpireSchedule() { @@ -38,13 +42,21 @@ public class OrderExpiringSchedule { List wxOrderList = wxOrderMapper.findListOfUnpaidOrderByDate(dateMap); for(WxOrder wxOrder: wxOrderList){ - wxOrder.setUpdateDate(new Date()); - wxOrder.setOrderStatus(EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()); - wxOrderMapper.updateByPrimaryKeySelective(wxOrder); - - logger.info("\nFound " + wxOrder.getId() + "\n" - + " create at " + wxOrder.getCreateDate() +"\n" - + " expired at " + new Date()); + orderExpired(wxOrder); } } + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public void orderExpired(WxOrder order) { + order.setUpdateDate(new Date()); + order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()); + wxOrderMapper.updateByPrimaryKeySelective(order); + + // 微信 关单 + wxOrderService.orderClose(order); + + logger.info("\nFound " + order.getId() + "\n" + + " create at " + order.getCreateDate() +"\n" + + " expired at " + new Date()); + } } \ No newline at end of file diff --git a/mallinkAdmin/src/main/resources/application.yml b/mallinkAdmin/src/main/resources/application.yml index 7eeac4c96..55c3070c1 100644 --- a/mallinkAdmin/src/main/resources/application.yml +++ b/mallinkAdmin/src/main/resources/application.yml @@ -51,3 +51,4 @@ jasypt: encryptor: password: oRqdnDbK5pj3eMmB +version: @project.version@ \ No newline at end of file diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java index 22ae3324a..11b8ae2e6 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java @@ -147,6 +147,15 @@ public class WxCouponOrderController extends BaseController { } } + // 核销发模板消息 + if (couponOrder != null) { + try { + wxCouponOrderService.sendVerifyMsg(couponOrder, getUser()); + } catch (Exception e) { + logger.error(e.getMessage()); + } + } + return new ResultData(couponOrder); } diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxMallController.java b/mallinkBApi/src/main/java/com/simple/controller/WxMallController.java index a60032b66..7c91e8a94 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxMallController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/WxMallController.java @@ -14,6 +14,7 @@ import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -32,6 +33,9 @@ import java.util.Map; public class WxMallController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); + @Value("${version}") + private String version; + @Autowired private WxMallService wxMallService; @@ -73,7 +77,12 @@ public class WxMallController extends BaseController { return new ResultData(Result.SUCCESS, "查询成功", mall); } - + @AuthIgnore + @ApiOperation("获取后端版本号") + @GetMapping("/version") + public ResultData version() { + return new ResultData(version); + } /** * 微信消息服务验证 * @param response diff --git a/mallinkBApi/src/main/resources/application.yml b/mallinkBApi/src/main/resources/application.yml index e4092a2d9..a38f7eb9b 100644 --- a/mallinkBApi/src/main/resources/application.yml +++ b/mallinkBApi/src/main/resources/application.yml @@ -43,4 +43,6 @@ pay: jasypt: encryptor: - password: oRqdnDbK5pj3eMmB \ No newline at end of file + password: oRqdnDbK5pj3eMmB + +version: @project.version@ \ No newline at end of file diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxMallController.java b/mallinkCApi/src/main/java/com/simple/controller/WxMallController.java index c09ce7b34..0095f78cf 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxMallController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxMallController.java @@ -14,6 +14,7 @@ import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -27,6 +28,9 @@ import java.util.Map; public class WxMallController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); + @Value("${version}") + private String version; + @Autowired private WxMallService wxMallService; @@ -68,5 +72,12 @@ public class WxMallController extends BaseController { return new ResultData(Result.SUCCESS, "查询成功", mall); } + @AuthIgnore + @ApiOperation("获取后端版本号") + @GetMapping("/version") + public ResultData version() { + return new ResultData(version); + } + } diff --git a/mallinkCApi/src/main/resources/application.yml b/mallinkCApi/src/main/resources/application.yml index c12fd23de..a54678211 100644 --- a/mallinkCApi/src/main/resources/application.yml +++ b/mallinkCApi/src/main/resources/application.yml @@ -43,4 +43,6 @@ pay: jasypt: encryptor: - password: oRqdnDbK5pj3eMmB \ No newline at end of file + password: oRqdnDbK5pj3eMmB + +version: @project.version@ \ No newline at end of file diff --git a/mallinkService/src/main/java/com/simple/common/ErrorCode.java b/mallinkService/src/main/java/com/simple/common/ErrorCode.java index c7d0cf2be..eab36ba7b 100644 --- a/mallinkService/src/main/java/com/simple/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/simple/common/ErrorCode.java @@ -56,6 +56,8 @@ public enum ErrorCode{ BUSER_NOT_IN_APP(2005, "用户不是此app用户"), KAPCHA_NOT_VALID(2006, "验证码已失效"), KAPCHA_NOT_EQUAL(2007, "验证码不正确"), + USER_NAME_IS_FOUND(2008,"用户名已存在"), + USER_PHONE_IS_FOUND(2009,"手机号已存在"), /** * 商场/商户 @@ -69,11 +71,19 @@ public enum ErrorCode{ /** * 券 */ - COUPON_IS_EMPTY(2020, "券不存在"), - COUPON_IS_NOT_FREE(2021, "券不免费"), + COUPON_IS_EMPTY(2020, "此券不存在"), + COUPON_IS_NOT_FREE(2021, "此券不免费"), COUPON_IS_TAKE_OFF(2022, "此券已下架"), + COUPON_IS_EXPIRED(2023, "此券已过期"), + COUPON_IS_SELL_OUT(2024, "此券已售罄"), + + COUPON_TYPE_IS_NOT_ACTIVE(2025, "此券不能用于主动领取"), + COUPON_TYPE_IS_NOT_PASSIVE(2026, "此券不能用于定向投放"), + + COUPON_CHANNEL_IS_EXISTED(2027, "此券已投放过"), + + COUPON_SEND_IS_EXISTED(2028, "此券已经添加到该渠道"), - COUPON_CHANNEL_IS_EXISTED(2023, "券已投放过"), /** * 车流 2040 */ diff --git a/mallinkService/src/main/java/com/simple/domain/po/MallUserInfo.java b/mallinkService/src/main/java/com/simple/domain/po/MallUserInfo.java index dd3d26f4d..b19483670 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/MallUserInfo.java +++ b/mallinkService/src/main/java/com/simple/domain/po/MallUserInfo.java @@ -67,7 +67,10 @@ public class MallUserInfo implements Serializable { private Integer isAdmin; @io.swagger.annotations.ApiModelProperty(value="昵称",name="nickName") private String nickName; - + + @io.swagger.annotations.ApiModelProperty(value="手机",name="phone") + private String phone; + @Transient private Long roleId; @@ -82,6 +85,9 @@ public class MallUserInfo implements Serializable { //拥有的菜单权限 @Transient private String menus; + + @Transient + private String captcha; public String getMenus() { return menus; @@ -179,9 +185,21 @@ public class MallUserInfo implements Serializable { this.roleId = roleId; } + public String getCaptcha() { + return captcha; + } + public void setCaptcha(String captcha) { + this.captcha = captcha; + } + public String getPhone() { + return phone; + } + public void setPhone(String phone) { + this.phone = phone; + } public static enum Field { diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxTemplateMsg.java b/mallinkService/src/main/java/com/simple/domain/po/WxTemplateMsg.java index 97bf68b21..18ea79629 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxTemplateMsg.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxTemplateMsg.java @@ -41,20 +41,19 @@ public class WxTemplateMsg implements Serializable { } - - /*租户ID**/ + /**租户ID**/ @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; - /*模板ID**/ + /**模板ID**/ @io.swagger.annotations.ApiModelProperty(value="模板ID",name="templateId") private String templateId; - /*模板类型1:支付成功消息2:退款申请成功消息**/ - @io.swagger.annotations.ApiModelProperty(value="模板类型1:支付成功消息2:退款申请成功消息",name="type") + /**模板类型1:核销成功消息, 2:核销失败消息**/ + @io.swagger.annotations.ApiModelProperty(value="模板类型1:核销成功消息,2:核销失败消息",name="type") private Integer type; - /*创建时间**/ + /**创建时间**/ @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") private Date createDate; - /*更新时间**/ + /**更新时间**/ @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private Date updateDate; public String getTenantId() { @@ -93,11 +92,11 @@ public class WxTemplateMsg implements Serializable { public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") - ,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC") - ,TemplateId_ASC("`templateId` ASC"),TemplateId_DESC("`templateId` DESC") + ,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC") + ,TemplateId_ASC("`template_id` ASC"),TemplateId_DESC("`template_id` DESC") ,Type_ASC("`type` ASC"),Type_DESC("`type` DESC") - ,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC") - ,UpdateDate_ASC("`updateDate` ASC"),UpdateDate_DESC("`updateDate` DESC") + ,CreateDate_ASC("`create_date` ASC"),CreateDate_DESC("`create_date` DESC") + ,UpdateDate_ASC("`update_date` ASC"),UpdateDate_DESC("`update_date` DESC") ; private String value; Field(String value){ @@ -130,6 +129,8 @@ public class WxTemplateMsg implements Serializable { sb.append(","); sb.append(fields[k].toString()); } + + this.sortColumns = sb.toString(); } diff --git a/mallinkService/src/main/java/com/simple/enums/EnumCouponInjectSendType.java b/mallinkService/src/main/java/com/simple/enums/EnumCouponInjectSendType.java new file mode 100644 index 000000000..28f5bd0f9 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/enums/EnumCouponInjectSendType.java @@ -0,0 +1,37 @@ +package com.simple.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumCouponInjectSendType { + + // 0:立即发送 1:定时发送 + IMMEDIATE(0, "立即发送"), + TIMING(1, "定时发送") + ; + + public static EnumCouponInjectSendType getEnum(Integer code) { + for (EnumCouponInjectSendType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumCouponInjectSendType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/simple/enums/EnumCouponSendSendType.java b/mallinkService/src/main/java/com/simple/enums/EnumCouponSendSendType.java new file mode 100644 index 000000000..2e6c13e14 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/enums/EnumCouponSendSendType.java @@ -0,0 +1,37 @@ +package com.simple.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumCouponSendSendType { + + // 2:停车发券 3:核销发券 + CAR_STOP(2, "停车发券"), + COUPON_VERIFY(3, "核销发券") + ; + + public static EnumCouponSendSendType getEnum(Integer code) { + for (EnumCouponSendSendType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumCouponSendSendType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/simple/enums/EnumCouponSendStatus.java b/mallinkService/src/main/java/com/simple/enums/EnumCouponSendStatus.java new file mode 100644 index 000000000..b45237b59 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/enums/EnumCouponSendStatus.java @@ -0,0 +1,37 @@ +package com.simple.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumCouponSendStatus { + + // 0:有效 1:无效 + VALID(0,"有效"), + INVALID(1, "无效") + ; + + public static EnumCouponSendStatus getEnum(Integer code) { + for (EnumCouponSendStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumCouponSendStatus(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/simple/enums/EnumCouponSendType.java b/mallinkService/src/main/java/com/simple/enums/EnumCouponSendType.java index 4cca85f76..54f498f06 100644 --- a/mallinkService/src/main/java/com/simple/enums/EnumCouponSendType.java +++ b/mallinkService/src/main/java/com/simple/enums/EnumCouponSendType.java @@ -5,9 +5,9 @@ package com.simple.enums; */ public enum EnumCouponSendType { - // 2:停车发券 3:核销发券 - CAR_STOP(2, "停车发券"), - COUPON_VERIFY(3, "核销发券") + // 1:主动领取 2:定向投放 + ACTIVE(1,"主动领取"), + PASSIVE(2, "定向投放") ; public static EnumCouponSendType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/simple/enums/EnumCouponValidType.java b/mallinkService/src/main/java/com/simple/enums/EnumCouponValidType.java new file mode 100644 index 000000000..f5bc26ada --- /dev/null +++ b/mallinkService/src/main/java/com/simple/enums/EnumCouponValidType.java @@ -0,0 +1,38 @@ +package com.simple.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumCouponValidType { + + // 1-时间范围 ;2-领取后时长; + + BETWEEN_TWO_TIME(1, "时间范围"), + DAYS_AFTER_RECEIVING(2, "领取后天数"), + ; + + public static EnumCouponValidType getEnum(Integer code) { + for (EnumCouponValidType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumCouponValidType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/simple/enums/EnumTemplateType.java b/mallinkService/src/main/java/com/simple/enums/EnumTemplateType.java index 5a83bc972..628dba395 100644 --- a/mallinkService/src/main/java/com/simple/enums/EnumTemplateType.java +++ b/mallinkService/src/main/java/com/simple/enums/EnumTemplateType.java @@ -5,11 +5,10 @@ package com.simple.enums; */ public enum EnumTemplateType { - // 1-支付成功消息, 2-支付失败消息 3-退款消息 + // 1-核销成功消息, 2-核销失败消息 - PAY_SUCCESS(1, "订单支付成功通知"), - PAY_FAIL(2, "支付失败通知"), - REFUND(3, "退款通知") + VERIFY_SUCCESS(1, "核销成功消息"), + VERIFY_FAIL(2, "核销失败消息") ; public static EnumTemplateType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/simple/mapper/MallUserInfoMapper.java b/mallinkService/src/main/java/com/simple/mapper/MallUserInfoMapper.java index 07340c82f..11a1b6cda 100644 --- a/mallinkService/src/main/java/com/simple/mapper/MallUserInfoMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/MallUserInfoMapper.java @@ -5,6 +5,7 @@ import com.simple.domain.po.MallUserInfo; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; public interface MallUserInfoMapper extends CommonMapper { @@ -14,6 +15,8 @@ public interface MallUserInfoMapper extends CommonMapper { Integer hasButtonPermission(@Param("userId") Long userId, @Param("permission") String permission); - - + + + long cntByUserName(Map params); + } diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCUserBasicInfoMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCUserBasicInfoMapper.java index 4705fc127..5b732730d 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxCUserBasicInfoMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/WxCUserBasicInfoMapper.java @@ -6,7 +6,6 @@ import com.simple.domain.po.WxCUserBasicInfo; import com.simple.domain.vo.CUserBaseVo; import java.util.List; -import java.util.Map; public interface WxCUserBasicInfoMapper extends CommonMapper { @@ -20,4 +19,6 @@ public interface WxCUserBasicInfoMapper extends CommonMapper tagids = new ArrayList<>(); @@ -99,7 +107,7 @@ public class CouponInjectServiceImpl implements CouponInjectService { } int inventory = wxCoupon.getRemainInventory();//库存数量 if(cUsers.size()>inventory){ - return new ResultData(Result.ERROR,"库存不足"); + return new ResultData(ErrorCode.COUPON_IS_SELL_OUT); } record.setCouponName(wxCoupon.getTitle()); record.setSendAmount(cUsers.size()); @@ -131,7 +139,7 @@ public class CouponInjectServiceImpl implements CouponInjectService { wxCouponOrder.setCUserId(tempCUser.getId()); wxCouponOrder.setCouponPrice(0); wxCouponOrder.setCreateDate(new Date()); - if (wxCoupon.getValidType() == 1) { //时间范围区间 + if (wxCoupon.getValidType() == EnumCouponValidType.BETWEEN_TWO_TIME.getCode()) { //时间范围区间 wxCouponOrder.setExpiredTime(wxCoupon.getValidEndDate()); } else { Date date = DateUtils.addDays(new Date(), wxCoupon.getValidDays()); diff --git a/mallinkService/src/main/java/com/simple/service/impl/DataTowerServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/DataTowerServiceImpl.java index b6738057a..b870e057a 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/DataTowerServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/DataTowerServiceImpl.java @@ -1,7 +1,6 @@ package com.simple.service.impl; import com.alibaba.fastjson.JSONObject; -import com.google.gson.JsonObject; import com.simple.domain.po.WxMall; import com.simple.domain.po.WxMerchant; import com.simple.domain.po.WxMerchantTradeDaily; @@ -13,12 +12,10 @@ import com.simple.utils.DateUtils; import com.simple.utils.HashUtil; import com.simple.utils.HttpUtil; import org.apache.log4j.Logger; -import org.apache.poi.ss.usermodel.DateUtil; import org.apache.shiro.codec.Base64; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -269,11 +266,13 @@ public class DataTowerServiceImpl implements DataTowerService { Map params=new HashMap<>(); params.put("username",username); params.put("authVal",authVal); - String token = HttpUtil.doPost(wxMall.getWiwideUrl(), params); + String wiwideUrl = wxMall.getWiwideUrl(); + String token = HttpUtil.doPost(wiwideUrl+"/login/auth", params); Map datamap = new HashMap<>(); datamap.put("token",JSONObject.parseObject(token).get("data")); + datamap.put("url",wiwideUrl); return datamap; } diff --git a/mallinkService/src/main/java/com/simple/service/impl/MallUserInfoServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/MallUserInfoServiceImpl.java index 70295f00c..3515748f5 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/MallUserInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/MallUserInfoServiceImpl.java @@ -12,6 +12,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.HashMap; +import java.util.Map; + @Service public class MallUserInfoServiceImpl implements MallUserInfoService { @@ -79,7 +82,21 @@ public class MallUserInfoServiceImpl implements MallUserInfoService { public boolean hasButtonPermission(Long userId, String permission) { return mallUserInfoMapper.hasButtonPermission(userId, permission) == null ? false : true; } - - - + + @Override + public boolean cntByUserName(String username, Long id) { + Map params=new HashMap<>(); + params.put("username",username); + params.put("id",id); + return mallUserInfoMapper.cntByUserName(params)>0?true:false; + } + + @Override + public boolean cntByUserPhone(String phone, Long id) { + Map params=new HashMap<>(); + params.put("phone",phone); + params.put("id",id); + return mallUserInfoMapper.cntByUserName(params)>0?true:false; + } + } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java index 6b556183b..d758028a3 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java @@ -336,5 +336,10 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { return new ResultData(Result.SUCCESS, "导入成功"); } + @Override + public long findCount(WxCUserBasicInfoDto dto) { + return wxCUserBasicInfoMapper.findCount(dto); + } + } 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 3c85f2a92..904b709f7 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java @@ -3,8 +3,11 @@ package com.simple.service.impl; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import cn.binarywang.wx.miniapp.api.WxMaService; +import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.google.common.collect.Lists; import com.simple.common.ErrorCode; import com.simple.common.IdWorker; import com.simple.common.ResultData; @@ -13,15 +16,13 @@ import com.simple.domain.vo.CUserDateAmountVo; import com.simple.domain.vo.WxCouponOrderBVo; import com.simple.domain.vo.WxCouponOrderCVo; import com.simple.domain.vo.WxCouponOrderCarCVo; -import com.simple.enums.EnumCouponOrderStatus; -import com.simple.enums.EnumCouponSendType; -import com.simple.enums.EnumPayShare; -import com.simple.enums.EnumPayStatus; +import com.simple.enums.*; import com.simple.exception.MallinkException; import com.simple.mapper.*; import com.simple.service.*; -import com.simple.utils.DataUtil; import com.simple.utils.DateUtils; +import com.simple.utils.MaUtil; +import me.chanjar.weixin.common.error.WxErrorException; import org.apache.log4j.Logger; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; @@ -40,7 +41,7 @@ import java.util.*; public class WxCouponOrderServiceImpl implements WxCouponOrderService { private Logger logger = Logger.getLogger(WxCouponOrderServiceImpl.class); - @Autowired + @Autowired WxCouponOrderMapper wxCouponOrderMapper; @Autowired @@ -70,6 +71,15 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Autowired WxMallMapper wxMallMapper; + @Autowired + WxTemplateMsgMapper wxTemplateMsgMapper; + + @Autowired + WxCouponMapper wxCouponMapper; + + @Autowired + WxAppinfoService wxAppinfoService; + @Override public PageInfo listAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { @@ -86,7 +96,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { if (record.getId() == null) { //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); final IdWorker idWorker = IdWorker.get(); - record.setId(idWorker.nextId()); + record.setId(idWorker.nextId()); wxCouponOrderMapper.insertSelective(record); } else { wxCouponOrderMapper.updateByPrimaryKeySelective(record); @@ -135,8 +145,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } catch (ParseException e) { return new ResultData(ErrorCode.SYS_PARAMETER_CAST_ERROR); } - } - else { + } else { try { startDate = fmt.parse(date); } catch (ParseException e) { @@ -144,7 +153,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } Calendar cal = Calendar.getInstance(); cal.setTime(startDate); - cal.add(Calendar.DATE,1); + cal.add(Calendar.DATE, 1); endDate = cal.getTime(); } @@ -157,7 +166,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { if (pageIndex == null || pageSize == null) { List list; - if(isVerified) + if (isVerified) list = wxCouponOrderMapper.findListOfVerifiedByDate(dateMap); else list = wxCouponOrderMapper.findListOfOrderedByDate(dateMap); @@ -167,8 +176,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { total_price = total_price + couponOrder.getCouponPrice(); } resultMap.put("amount", total_price); - } - else { + } else { if (isVerified) resultMap.put("list", PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findListOfVerifiedByDateForBUser(dateMap))); else @@ -196,8 +204,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Override public ResultData detailCUserVo(Long cUserId, String couponOrderId) { WxCUser wxCuser = wxCUserMapper.selectByPrimaryKey(cUserId); - if(wxCuser == null){ - logger.error("用户不存在:"+ cUserId); + if (wxCuser == null) { + logger.error("用户不存在:" + cUserId); throw new MallinkException(ErrorCode.USER_IS_EMPTY); } @@ -215,8 +223,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Override public ResultData detailBUserVo(Long bUserId, String couponOrderId) { WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId); - if(wxMerchantBUser == null){ - logger.error("用户不存在:"+ bUserId); + if (wxMerchantBUser == null) { + logger.error("用户不存在:" + bUserId); throw new MallinkException(ErrorCode.USER_IS_EMPTY); } @@ -250,21 +258,21 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { WxMall wxMall = new WxMall(); wxMall.setTenantId(tenantId); wxMall = wxMallMapper.findList(wxMall).get(0); - String filepath="./uploads/"; + String filepath = "./uploads/"; File savefile = new File(filepath); if (!savefile.exists()) { savefile.mkdirs(); } - Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("","",ExcelType.XSSF), WxCouponOrderBVo.class, list); + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("", "", ExcelType.XSSF), WxCouponOrderBVo.class, list); FileOutputStream fos = null; try { - String filename=wxMall.getName()+ DateUtils.getSystemTime("yyyyMMDDHHmmss") +".xlsx"; - filepath=filepath+filename; + String filename = wxMall.getName() + DateUtils.getSystemTime("yyyyMMDDHHmmss") + ".xlsx"; + filepath = filepath + filename; fos = new FileOutputStream(filepath); workbook.write(fos); fos.close(); - downFile(filepath,filename,response,request); + downFile(filepath, filename, response, request); } catch (Exception e) { e.printStackTrace(); } @@ -273,8 +281,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } - public void downFile(String filePath,String filename, HttpServletResponse response, - HttpServletRequest req) throws IOException { + public void downFile(String filePath, String filename, HttpServletResponse response, + HttpServletRequest req) throws IOException { try { response.reset(); response.setContentType("bin"); @@ -308,21 +316,21 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { public WxCouponOrder verify(Long couponOrderId, Long bUserId) { WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(couponOrderId); - if(wxCouponOrder == null){ - logger.error("券ID不存在:"+ couponOrderId); + if (wxCouponOrder == null) { + logger.error("券ID不存在:" + couponOrderId); throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); } - WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId.longValue()); - if(wxMerchantBUser == null){ - logger.error("核销员ID不存在:"+ bUserId); + 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()); + if (!wxOrder.getMerchantId().equals(wxMerchantBUser.getMerchantId())) { + logger.error("券: couponMerchantId-" + wxOrder.getMerchantId() + "核销: couponMerchantId-" + wxMerchantBUser.getMerchantId()); throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); } if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode()) { @@ -374,23 +382,155 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(couponOrder.getOrderId()); if (wxOrder != null) { try { - wxCouponSendService.sendCouponToUser(bUser.getTenantId(), wxOrder.getCUserId(), EnumCouponSendType.COUPON_VERIFY); + wxCouponSendService.sendCouponToUser(bUser.getTenantId(), wxOrder.getCUserId(), EnumCouponSendSendType.COUPON_VERIFY); } catch (Exception e) { logger.error("核销发券: " + e.getMessage()); } } } + /** + * 微信模板消息 + * + * @param couponOrder, bUser + */ + @Override + public void sendVerifyMsg(WxCouponOrder couponOrder, WxMerchantBUser bUser) { + // 1. get order info + WxOrder order = wxOrderMapper.selectByPrimaryKey(couponOrder.getOrderId()); + if (order == null) { + logger.error("找不到订单信息"); + throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); + } + // 2. get coupon info + WxCoupon coupon = wxCouponMapper.selectByPrimaryKey(couponOrder.getCouponId()); + if (coupon == null) { + logger.error("找不到券信息"); + throw new MallinkException(ErrorCode.COUPON_IS_EMPTY); + } + // 3. merchant info + WxMerchant merchant = wxMerchantMapper.selectByPrimaryKey(bUser.getMerchantId()); + if (merchant == null) { + logger.error("找不到商户信息"); + throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND); + } + // 4. get user info + WxCUser user = wxCUserMapper.selectByPrimaryKey(order.getCUserId()); + if (user == null) { + logger.error("找不到C端用户"); + throw new MallinkException(ErrorCode.USER_IS_EMPTY); + } + + // 5. get app info + WxAppinfo appInfo = wxAppinfoService.getByAppId(user.getAppId()); + + // 6. get payOrder info + WxPayOrder payOrder = null; + WxPayOrder payOrderQ = new WxPayOrder(); + payOrderQ.setTenantId(couponOrder.getTenantId()); + payOrderQ.setOrderId(order.getId()); + payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode()); + List payList = wxPayOrderMapper.select(payOrderQ); + if (payList.size() > 0) { + payOrder = payList.get(0); + } + + WxMaService wxMaService = MaUtil.getWeappService(appInfo); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String couponDetail = ""; + if (coupon.getType() == EnumCouponType.COUPON_MANJIAN.getCode()) { + couponDetail = "满" + coupon.getUsePriceStr() + "减" + coupon.getPriceStr(); + } - @Override - public List queryPriceTotalGroup(String tenantId, Date startTime, Date endTime) { - return wxCouponOrderMapper.queryPriceTotalGroup(tenantId, startTime, endTime); - } + WxTemplateMsg msg = null; + WxMaTemplateMessage templateMessage = null; + if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()) { + WxTemplateMsg msgQ = new WxTemplateMsg(); + msgQ.setTenantId(couponOrder.getTenantId()); + msgQ.setType(EnumTemplateType.VERIFY_SUCCESS.getCode()); + List list = wxTemplateMsgMapper.select(msgQ); + if (list.size() > 0) { + msg = list.get(0); + } + if (msg == null) { + logger.error("找不到模板Id"); + throw new MallinkException(ErrorCode.TEMPLATE_NOT_FOUND); + } + /** + * 核销成功 + * 核销金额 {{keyword1.DATA}} + * 商家名称 {{keyword2.DATA}} + * 商品 {{keyword3.DATA}} + * 核销时间 {{keyword4.DATA}} + * 商品描述 {{keyword5.DATA}} + */ + templateMessage = WxMaTemplateMessage.builder() + .toUser(user.getOpenId()) + .formId(payOrder.getPrepayId()) // 微信支付的formId是prepayId + .page("pages/index/index") + .data(Lists.newArrayList( + new WxMaTemplateMessage.Data("keyword1", String.valueOf(coupon.getPrice() * 1.0 / 100) + "元", "#173177"), + new WxMaTemplateMessage.Data("keyword2", merchant.getName(), "#173177"), + new WxMaTemplateMessage.Data("keyword3", coupon.getTitle(), "#173177"), + new WxMaTemplateMessage.Data("keyword4", dateFormat.format(new Date()), "#173177"), + new WxMaTemplateMessage.Data("keyword5", couponDetail, "#173177")) + ) + .templateId(msg.getTemplateId()) + .emphasisKeyword("keyword1.DATA") + .build(); + } else { + WxTemplateMsg msgQ = new WxTemplateMsg(); + msgQ.setTenantId(couponOrder.getTenantId()); + msgQ.setType(EnumTemplateType.VERIFY_FAIL.getCode()); + List list = wxTemplateMsgMapper.select(msgQ); + if (list.size() > 0) { + msg = list.get(0); + } + if (msg == null) { + logger.error("找不到模板Id"); + throw new MallinkException(ErrorCode.TEMPLATE_NOT_FOUND); + } + /** + * 核销失败 + * 商品名称 {{keyword1.DATA}} + * 核销时间 {{keyword2.DATA}} + * 失败原因 {{keyword3.DATA}} + * 备注 {{keyword4.DATA}} + */ + templateMessage = WxMaTemplateMessage.builder() + .toUser(user.getOpenId()) + .formId(payOrder.getPrepayId()) // 微信支付的formId是prepayId + .page("pages/index/index") + .data(Lists.newArrayList( + new WxMaTemplateMessage.Data("keyword1", coupon.getTitle(), "#173177"), + new WxMaTemplateMessage.Data("keyword2", dateFormat.format(new Date()), "#173177"), + new WxMaTemplateMessage.Data("keyword3", "未知"), + new WxMaTemplateMessage.Data("keyword4", couponDetail)) + ) + .templateId(msg.getTemplateId()) + .emphasisKeyword("keyword1.DATA") + .build(); + } - @Override - public int queryPriceTotal(String tenantId, Date startTime, Date endTime) { - return wxCouponOrderMapper.queryPriceTotal(tenantId, startTime, endTime); - } + //templateMessage.addData( new WxMaTemplateMessage.Data("keyword1", "339208499", "#173177")); + try { + wxMaService.getMsgService().sendTemplateMsg(templateMessage); + } catch (WxErrorException e) { + logger.error("支付通知发送失败: " + e.getMessage()); + throw new MallinkException(ErrorCode.TEMPLATE_SEND_FAILED); + } + } + + + @Override + public List queryPriceTotalGroup(String tenantId, Date startTime, Date endTime) { + return wxCouponOrderMapper.queryPriceTotalGroup(tenantId, startTime, endTime); + } + + @Override + public int queryPriceTotal(String tenantId, Date startTime, Date endTime) { + return wxCouponOrderMapper.queryPriceTotal(tenantId, startTime, endTime); + } } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCouponSendServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCouponSendServiceImpl.java index 8c546e64f..06e6f1559 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponSendServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponSendServiceImpl.java @@ -8,12 +8,10 @@ import com.simple.enums.*; import com.simple.mapper.WxCouponOrderMapper; import com.simple.mapper.WxCouponSendMapper; import com.simple.service.*; -import org.apache.commons.lang.time.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; import java.util.List; @Service @@ -66,22 +64,22 @@ public class WxCouponSendServiceImpl implements WxCouponSendService { @Override @Transactional - public void sendCouponToUser(String tenantId, Long cUserId, EnumCouponSendType type) { + public void sendCouponToUser(String tenantId, Long cUserId, EnumCouponSendSendType type) { //查询开关是否打开 //查询停车或者核销的券 stopCarCouponSwitch verifyConponSwitch WxCouponSend wxCouponSendQuery = new WxCouponSend(); wxCouponSendQuery.setTenantId(tenantId); int actionLogType = 0; String configKey = ""; - if (type == EnumCouponSendType.CAR_STOP) { + if (type == EnumCouponSendSendType.CAR_STOP) { //停车 - wxCouponSendQuery.setSendType(EnumCouponSendType.CAR_STOP.getCode()); + wxCouponSendQuery.setSendType(EnumCouponSendSendType.CAR_STOP.getCode()); actionLogType = EnumCouponActionChannelType.CAR.getCode(); configKey = "stopCarCouponSwitch"; } - if (type == EnumCouponSendType.COUPON_VERIFY) { + if (type == EnumCouponSendSendType.COUPON_VERIFY) { //核销 - wxCouponSendQuery.setSendType(EnumCouponSendType.COUPON_VERIFY.getCode()); + wxCouponSendQuery.setSendType(EnumCouponSendSendType.COUPON_VERIFY.getCode()); actionLogType = EnumCouponActionChannelType.VERIFY.getCode(); configKey = "verifyConponSwitch"; } else { 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 435146565..4b77d8a65 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java @@ -4,16 +4,15 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.simple.common.ErrorCode; import com.simple.common.IdWorker; -import com.simple.domain.po.WxCUser; -import com.simple.domain.po.WxCoupon; -import com.simple.domain.po.WxCouponOrder; -import com.simple.domain.po.WxOrder; +import com.simple.common.ResultData; +import com.simple.domain.po.*; import com.simple.domain.vo.WxOrderCVo; import com.simple.enums.*; import com.simple.exception.MallinkException; import com.simple.mapper.*; import com.simple.service.WxCUserService; import com.simple.service.WxOrderService; +import com.simple.service.WxPayOrderService; import com.simple.utils.RedisLock; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -60,6 +59,12 @@ public class WxOrderServiceImpl implements WxOrderService { @Autowired WxCUserService wxCUserService; + @Autowired + WxPayOrderMapper wxPayOrderMapper; + + @Autowired + WxPayOrderService wxPayOrderService; + @Override public PageInfo listAsPage(WxOrder record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.findList(record)); @@ -539,6 +544,37 @@ public class WxOrderServiceImpl implements WxOrderService { return ret; } + /** + * 微信关闭订单 + */ + @Override + public ResultData orderClose(WxOrder order) { + // 1. get c appid + WxAppinfo appInfo = null; + WxAppinfo appinfoQ = new WxAppinfo(); + appinfoQ.setTenantId(order.getTenantId()); + appinfoQ.setType(EnumAppType.C.getCode()); + List appList = wxAppinfoMapper.select(appinfoQ); + if (appList.size() > 0) { + appInfo = appList.get(0); + } + // 2. get pay order + WxPayOrder payOrderQ = new WxPayOrder(); + payOrderQ.setTenantId(order.getTenantId()); + payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_WAY_WAIT.getCode()); + List payOrders = wxPayOrderMapper.select(payOrderQ); + + for(WxPayOrder payOrder: payOrders) { + // 3. wx pay order close + try { + ResultData payclose = wxPayOrderService.payOrderClose(appInfo, payOrder); + } catch (Exception e) { + logger.error("微信关单失败:" + e.getMessage()); + } + } + return new ResultData(); + } + @Override public WxOrder getById(Long id) { return wxOrderMapper.selectByPrimaryKey(id); 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 ee0cccdc9..db827f389 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -493,8 +493,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } } } + /** - * 微信关闭订单 + * 微信关闭支付订单 */ @Override public ResultData payOrderClose(WxAppinfo appInfo, WxPayOrder record) { @@ -519,12 +520,18 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { Map returnMap = WxPayment.xmlToMap(response); String result_code = returnMap.get("result_code"); if ("SUCCESS".equals(result_code)) { - record.setPayOrderStatus(EnumPayStatus.PAY_WAY_FAIL.getCode()); + record.setPayOrderStatus(EnumPayStatus.PAY_WAY_CANCEL.getCode()); handlePayOrderStatusUpdate(record); return new ResultData(Result.SUCCESS, "订单关闭成功", returnMap); } else { + String errMsg = ""; JSONObject errObj = errorMapClose.getJSONObject(result_code); - record.setFailReason(errObj.toJSONString()); + if (errObj != null) { + errMsg = errObj.toJSONString(); + } else { + errMsg = returnMap.get("return_msg"); + } + record.setFailReason(errMsg); record.setUpdateTime(new Date()); try { wxPayOrderMapper.updateByPrimaryKeySelective(record); @@ -561,12 +568,18 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { Map returnMap = WxPayment.xmlToMap(response); String result_code = returnMap.get("result_code"); if ("SUCCESS".equals(result_code)) { - record.setPayOrderStatus(EnumPayStatus.PAY_WAY_FAIL.getCode()); + record.setPayOrderStatus(EnumPayStatus.PAY_WAY_CANCEL.getCode()); handlePayOrderStatusUpdate(record); return new ResultData(Result.SUCCESS, "订单关闭成功", returnMap); } else { + String errMsg = ""; JSONObject errObj = errorMapClose.getJSONObject(result_code); - record.setFailReason(errObj.toJSONString()); + if (errObj != null) { + errMsg = errObj.toJSONString(); + } else { + errMsg = returnMap.get("return_msg"); + } + record.setFailReason(errMsg); record.setUpdateTime(new Date()); try { wxPayOrderMapper.updateByPrimaryKeySelective(record); @@ -574,7 +587,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.error("pay order update error: " + record.toString()); throw new MallinkException(ErrorCode.DB_FAIL); } - return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), errObj.toJSONString(), returnMap); + return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), errMsg, returnMap); } } catch (RuntimeException e) { throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); @@ -755,24 +768,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "订单数据库更新失败: " + e.getMessage()); } - // 微信模板通知用户 - /* - try { - WxAppinfo appinfoQ = new WxAppinfo(); - appinfoQ.setTenantId(order.getTenantId()); - appinfoQ.setType(EnumAppType.C.getCode()); - List appinfoList = wxAppinfoMapper.select(appinfoQ); - if (appinfoList.size() >0) { - WxAppinfo appinfo = appinfoList.get(0); - sendPaySuccessMsg(appinfo, order, updateOrder); - } - } catch (Exception e) { - logger.error("微信模板通知error: " + e.getMessage()); - // throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "订单数据库更新失败: " + e.getMessage()); - } - */ - // End of 微信模板通知用户 - /* Map msgMap = new HashMap<>(); try { @@ -825,6 +820,28 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.error(e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL); } + + if (record.getPayOrderStatus() == EnumPayStatus.PAY_WAY_CANCEL.getCode()) { + // 支付订单取消 + if (record.getPayAmount() > 0) { + // 1. get appinfo + WxAppinfo appInfo = null; + WxAppinfo appinfoQ = new WxAppinfo(); + appinfoQ.setTenantId(order.getTenantId()); + appinfoQ.setType(EnumAppType.C.getCode()); + List appList = wxAppinfoMapper.select(appinfoQ); + if (appList.size() > 0) { + appInfo = appList.get(0); + } + WxPayOrder payOrderQ = new WxPayOrder(); + payOrderQ.setTenantId(order.getTenantId()); + payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_WAY_WAIT.getCode()); + List payOrders = wxPayOrderMapper.select(payOrderQ); + for(WxPayOrder payOrder: payOrders) { + payOrderClose(appInfo, payOrder); + } + } + } } // 修改订单状态 @@ -901,100 +918,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { wxPayOrderMapper.deleteByPrimaryKey(id); } - @Override - public void sendPaySuccess() { - /* - WxAppinfo appinfoQ = new WxAppinfo(); - appinfoQ.setTenantId("234"); - appinfoQ.setType(EnumAppType.C.getCode()); - List appinfoList= wxAppinfoMapper.select(appinfoQ); - WxAppinfo appinfo = appinfoList.get(0); - - String payOrderIdStr = "196936823522459648"; - Long payOrderId = Long.valueOf(payOrderIdStr); - WxPayOrder updateOrder = wxPayOrderMapper.selectByPrimaryKey(payOrderId); - WxOrder order = wxOrderMapper.selectByPrimaryKey(updateOrder.getOrderId()); - sendPaySuccessMsg(appinfo, order, updateOrder); - */ - } - - /** - * 微信模板通知用户 - * @param updateOrder - * 支付时间 {{keyword1.DATA}} - * 支付方式 {{keyword2.DATA}} - * 支付金额 {{keyword3.DATA}} - * 商品名称 {{keyword4.DATA}} - * 商家名称 {{keyword5.DATA}} - * 订单状态 {{keyword6.DATA}} - */ - private void sendPaySuccessMsg(WxAppinfo appInfo, WxOrder order, WxPayOrder updateOrder) { - // 1. get template id - WxTemplateMsg msgQ = new WxTemplateMsg(); - msgQ.setTenantId(order.getTenantId()); - msgQ.setType(EnumTemplateType.PAY_SUCCESS.getCode()); - WxTemplateMsg msg = null; - List list= wxTemplateMsgMapper.select(msgQ); - if (list.size() > 0) { - msg = list.get(0); - } - if (msg == null) { - logger.error("找不到模板Id"); - throw new MallinkException(ErrorCode.TEMPLATE_NOT_FOUND); - } - // 2. get coupon info - WxCoupon coupon = wxCouponMapper.selectByPrimaryKey(order.getCouponId()); - if (coupon == null) { - logger.error("找不到券信息"); - throw new MallinkException(ErrorCode.COUPON_IS_EMPTY); - } - // 3. merchant info - WxMerchant merchant = wxMerchantMapper.selectByPrimaryKey(order.getMerchantId()); - if (merchant == null) { - logger.error("找不到商户信息"); - throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND); - } - // 3. get user info - WxCUser user = wxCUserMapper.selectByPrimaryKey(order.getCUserId()); - if (user == null) { - logger.error("找不到C端用户"); - throw new MallinkException(ErrorCode.USER_IS_EMPTY); - } - - if (StringUtils.isBlank(updateOrder.getPrepayId())) { - logger.error("prepayId为空"); - throw new MallinkException(ErrorCode.PREPAY_ID_IS_EMPTY); - } - - WxMaService wxMaService = MaUtil.getWeappService(appInfo); - - - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); - WxMaTemplateMessage templateMessage = WxMaTemplateMessage.builder() - .toUser(user.getOpenId()) - .formId(updateOrder.getPrepayId()) // 微信支付的formId是prepayId - .page("pages/index/index") - .data(Lists.newArrayList( - new WxMaTemplateMessage.Data("keyword1", dateFormat.format(new Date()), "#173177"), - new WxMaTemplateMessage.Data("keyword2", "微信支付", "#173177"), - new WxMaTemplateMessage.Data("keyword3", String.valueOf(updateOrder.getPayAmount()*1.0/100) + "元", "#173177"), - new WxMaTemplateMessage.Data("keyword4", coupon.getTitle(), "#173177"), - new WxMaTemplateMessage.Data("keyword5", merchant.getName(), "#173177"), - new WxMaTemplateMessage.Data("keyword6", EnumOrderStatus.getEnum(order.getOrderStatus()).getMessage(), "#173177"))) - .templateId(msg.getTemplateId()) - .emphasisKeyword("keyword1.DATA") - .build(); - //templateMessage.addData( new WxMaTemplateMessage.Data("keyword1", "339208499", "#173177")); - try { - wxMaService.getMsgService().sendTemplateMsg(templateMessage); - } catch (WxErrorException e) { - logger.error("支付通知发送失败: " + e.getMessage()); - throw new MallinkException(ErrorCode.TEMPLATE_SEND_FAILED); - } - } - public static void main(String [] args) { - Integer v = 500; + Integer v = 50; Integer rate = 6; Double dChargeFee = Math.ceil(v*1.0D*6/1000); Integer share_amount = v - dChargeFee.intValue(); diff --git a/mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml b/mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml index b1664b6ac..45929a3d3 100644 --- a/mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml @@ -12,10 +12,12 @@ + + - `id`,`tenant_id`,`username`,`name`,`password`,`create_time`,`last_login_time`,`status`,`is_admin`,`nick_name` + `id`,`tenant_id`,`username`,`name`,`password`,`create_time`,`last_login_time`,`status`,`is_admin`,`nick_name`,`phone` @@ -69,7 +71,10 @@ and `is_admin` = #{isAdmin} - + + + and `phone` = #{phone} + and id in @@ -98,5 +103,17 @@ AND p.permission = #{permission} + diff --git a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml index 779cf9770..f3795a712 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml @@ -136,5 +136,21 @@ and birthdate <= #{birthEndTime} - + + + diff --git a/mallinkService/src/main/resources/mapper/WxMallMapper.xml b/mallinkService/src/main/resources/mapper/WxMallMapper.xml index 251779e4e..dde72fb97 100644 --- a/mallinkService/src/main/resources/mapper/WxMallMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMallMapper.xml @@ -36,7 +36,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId}