diff --git a/.gitignore b/.gitignore index 67fd788d1..7749eb1dc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .idea/** */target/** logs/** +logPath_IS_UNDEFINED/** uploads/** /.project /.gitignore diff --git a/mallinkAdmin/src/main/java/com/iformall/config/RedisConfig.java b/mallinkAdmin/src/main/java/com/iformall/config/RedisConfig.java index 3b02c7c73..db0c20110 100644 --- a/mallinkAdmin/src/main/java/com/iformall/config/RedisConfig.java +++ b/mallinkAdmin/src/main/java/com/iformall/config/RedisConfig.java @@ -1,6 +1,7 @@ package com.iformall.config; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; @@ -15,6 +16,9 @@ import redis.clients.jedis.JedisPoolConfig; @Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + @Value("${spring.redis.host}") private String host; @@ -35,8 +39,8 @@ public class RedisConfig extends CachingConfigurerSupport { @Bean public JedisPool redisPoolFactory() { - Logger.getLogger(getClass()).info("JedisPool注入成功!!"); - Logger.getLogger(getClass()).info("redis地址:" + host + ":" + port); + logger.info("JedisPool注入成功!!"); + logger.info("redis地址:" + host + ":" + port); JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(maxIdle); jedisPoolConfig.setMaxWaitMillis(maxWaitMillis); diff --git a/mallinkAdmin/src/main/java/com/iformall/config/ShiroConfig.java b/mallinkAdmin/src/main/java/com/iformall/config/ShiroConfig.java index be13a5ce2..c2cc8c3fa 100644 --- a/mallinkAdmin/src/main/java/com/iformall/config/ShiroConfig.java +++ b/mallinkAdmin/src/main/java/com/iformall/config/ShiroConfig.java @@ -83,7 +83,7 @@ public class ShiroConfig { filters.put("corsFilter", new RestFilter()); shiroFilterFactoryBean.setFilters(filters); // 如果不设置默认会自动寻找Web工程根目录下的"/login.jsp"页面 -// shiroFilterFactoryBean.setLoginUrl("/login"); + shiroFilterFactoryBean.setLoginUrl("/#/"); // 登录成功后要跳转的链接 shiroFilterFactoryBean.setSuccessUrl("/usersPage"); @@ -208,7 +208,7 @@ public class ShiroConfig { RedisManager redisManager = new RedisManager(); redisManager.setHost(host); redisManager.setPort(port); - redisManager.setExpire(expire);// 配置缓存过期时间 + //redisManager.setExpire(expire);// 配置缓存过期时间 redisManager.setTimeout(timeout); redisManager.setPassword(password); return redisManager; @@ -243,6 +243,11 @@ public class ShiroConfig { @Bean public DefaultWebSessionManager sessionManager() { DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); + //设置session过期时间为1小时(单位:毫秒),默认为30分钟 + sessionManager.setGlobalSessionTimeout(60 * 60 * 1000); + sessionManager.setSessionValidationSchedulerEnabled(true); + sessionManager.setSessionIdUrlRewritingEnabled(false); + sessionManager.setSessionDAO(redisSessionDAO()); sessionManager.setSessionIdCookie(simpleCookie()); return sessionManager; diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/CouponInjectController.java b/mallinkAdmin/src/main/java/com/iformall/controller/CouponInjectController.java index b8143d028..a4e14d74d 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/CouponInjectController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/CouponInjectController.java @@ -5,9 +5,12 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.CouponInject; +import com.iformall.domain.po.WxMsg; +import com.iformall.domain.po.WxMsgModel; import com.iformall.enums.EnumCouponInjectSendType; import com.iformall.service.CouponInjectService; import com.iformall.service.WxCUserTagsService; +import com.iformall.service.WxMsgModelService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -31,6 +34,8 @@ public class CouponInjectController extends BaseController { private CouponInjectService couponInjectService; @Autowired private WxCUserTagsService wxCUserTagsService; + @Autowired + private WxMsgModelService wxMsgModelService; @ApiOperation("分页列表接口") @GetMapping("list") @@ -43,7 +48,7 @@ public class CouponInjectController extends BaseController { couponInject.setStatus(null); } couponInject.setTenantId(getTenantId()); - couponInject.setSortColumns(CouponInject.Field.CouponId_DESC); + couponInject.setSortColumns(CouponInject.Field.Id_DESC); final PageInfo page = couponInjectService.listAsPage(couponInject, pageNum, pageSize); return new ResultData(page); } @@ -54,11 +59,7 @@ public class CouponInjectController extends BaseController { couponInject.setTenantId(getUser().getTenantId()); couponInject.setMUserId(getUser().getId()); - if (couponInject.getSendType() == EnumCouponInjectSendType.IMMEDIATE.getCode()) { - couponInject.setSendTime(new Date()); - } - //Assert.notNull(couponInject.getName(), "角色名不能为空"); - //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); + return couponInjectService.add(couponInject); } @@ -94,6 +95,8 @@ public class CouponInjectController extends BaseController { if (!tagids.isEmpty()) { couponInject.setWxChooseTagVo(wxCUserTagsService.findChooseTag(getTenantId(), tagids)); } + + couponInject.setMsgModel(wxMsgModelService.getById(couponInject.getModelId())); } return new ResultData(Result.SUCCESS, "查询成功", couponInject); } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/MallRoleController.java b/mallinkAdmin/src/main/java/com/iformall/controller/MallRoleController.java index 2c0a9af4d..3b62e99bf 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/MallRoleController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/MallRoleController.java @@ -1,12 +1,16 @@ package com.iformall.controller; import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.MallRole; import com.iformall.domain.po.MallRolePermission; +import com.iformall.domain.po.MallUserInfo; +import com.iformall.enums.EnumUserAdmin; import com.iformall.service.MallRolePermissionService; import com.iformall.service.MallRoleService; +import com.iformall.service.MallUserInfoService; import io.swagger.annotations.Api; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -32,6 +36,9 @@ public class MallRoleController extends BaseController { @Autowired private MallRolePermissionService sysRolePermissionService; + @Autowired + private MallUserInfoService mallUserInfoService; + @GetMapping("list") public ResultData list(MallRole sysRole, Integer pageNum, Integer pageSize) { String tenantId = getTenantId(); @@ -57,9 +64,13 @@ public class MallRoleController extends BaseController { @PostMapping("saveOrUpdate") public ResultData saveOrUpdate(@RequestBody MallRole sysRole) { - String tenantId = getTenantId(); - int count = sysRoleService.countByName(sysRole.getName(), sysRole.getId()); - if (count > 0) { + MallUserInfo currentUser = getUser(); + if(currentUser.getIsAdmin().equals(EnumUserAdmin.Normal.getCode())) { + return new ResultData(ErrorCode.USER_NOT_ADMIN.getCode(), "只有超级管理员才能保存角色"); + } + String tenantId = currentUser.getTenantId(); + int count = checkUnique(sysRole.getName(), tenantId); + if (sysRole.getId() == null && count > 0) { return new ResultData(ResultData.ERROR, "角色名已存在"); } sysRole.setTenantId(tenantId); @@ -71,7 +82,6 @@ public class MallRoleController extends BaseController { mIds.add(Long.valueOf(mId)); } sysRolePermissionService.savePermissions(tenantId, sysRole.getId(), mIds.toArray(new Long[]{})); - ; } return new ResultData(); } @@ -79,17 +89,24 @@ public class MallRoleController extends BaseController { @PostMapping("add") public ResultData add(MallRole sysRole) { + MallUserInfo currentUser = getUser(); + if(currentUser.getIsAdmin().equals(EnumUserAdmin.Normal.getCode())) { + return new ResultData(ErrorCode.USER_NOT_ADMIN.getCode(), "只有超级管理员才能添加角色"); + } Assert.notNull(sysRole.getName(), "角色名不能为空"); - Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); + Assert.isTrue(checkUnique(sysRole.getName(), currentUser.getTenantId())>0, "重复的角色名"); sysRoleService.saveOrUpdate(sysRole); return new ResultData(); } @PostMapping("update") public ResultData update(MallRole sysRole) { + MallUserInfo currentUser = getUser(); + if(currentUser.getIsAdmin().equals(EnumUserAdmin.Normal.getCode())) { + return new ResultData(ErrorCode.USER_NOT_ADMIN.getCode(), "只有超级管理员才能更新角色"); + } if (sysRole.getName() != null) { - System.out.println(checkUnique(sysRole.getName(), sysRole.getId())); - Assert.isTrue(!checkUnique(sysRole.getName(), sysRole.getId()), "角色名已存在"); + Assert.isTrue(checkUnique(sysRole.getName(), currentUser.getTenantId())>1, "角色名已存在"); } sysRoleService.saveOrUpdate(sysRole); // Assert.notNull(sysRole.getName(), "角色名不能为空"); @@ -99,23 +116,28 @@ public class MallRoleController extends BaseController { @PostMapping("/del") public ResultData delete(@RequestBody MallRole sysRole) { + MallUserInfo currentUser = getUser(); + if(currentUser.getIsAdmin().equals(EnumUserAdmin.Normal.getCode())) { + return new ResultData(ErrorCode.USER_NOT_ADMIN.getCode(), "只有超级管理员才能删除角色"); + } + MallUserInfo record = new MallUserInfo(); + record.setTenantId(currentUser.getTenantId()); + record.setRoleId(sysRole.getId()); + record.setIsAdmin(EnumUserAdmin.Normal.getCode()); + int count = mallUserInfoService.cntUserList(record); + if (count > 0) { + return new ResultData(ErrorCode.USER_USE_ROLE.getCode(), "有用户使用此角色,请先删除相应的用户!!"); + } sysRoleService.deleteById(sysRole.getId()); sysRolePermissionService.deleteByRoleId(sysRole.getId()); return new ResultData(Result.SUCCESS, "删除成功", null); } - @GetMapping("setPermission") - public ResultData setPermission(Long roleId, String perId) { - Assert.notNull(perId, "请选择权限"); - /*String[] perIds = perId.split(","); - SysRolePermissionService.savePermissions(roleId, perIds);*/ - //TODO - return new ResultData(Result.SUCCESS, "设置角色权限成功", null); - - } - - private boolean checkUnique(String name, Long id) { - return sysRoleService.countByName(name, id) > 0 ? true : false; + private int checkUnique(String name, String tenantId) { + MallRole role = new MallRole(); + role.setName(name); + role.setTenantId(tenantId); + return sysRoleService.countList(role); } } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/MallUserInfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/MallUserInfoController.java index 6c8c52a98..a6a49a651 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/MallUserInfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/MallUserInfoController.java @@ -6,6 +6,7 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.enums.EnumMallUserStatus; +import com.iformall.enums.EnumUserAdmin; import com.iformall.service.*; import com.iformall.shiro.PasswordHelper; import com.iformall.shiro.UserSession; @@ -88,17 +89,23 @@ public class MallUserInfoController extends BaseController { @ApiOperation(value = "创建用户接口", response = String.class) @PostMapping("add") public ResultData createUser(@RequestBody MallUserInfo userInfo) { + MallUserInfo currentUser = getUser(); + if(currentUser.getIsAdmin().equals(EnumUserAdmin.Normal.getCode())) { + return new ResultData(ErrorCode.USER_NOT_ADMIN.getCode(), "只有超级管理员才能添加用户"); + } - if(checkUniqueName(userInfo.getUsername(), null)){ - return new ResultData(ErrorCode.USER_NAME_IS_FOUND,"用户名已存在"); + if(checkUniqueName(userInfo.getUsername(), currentUser.getTenantId()) > 0){ + return new ResultData(ErrorCode.USER_NAME_IS_FOUND.getCode(),"用户名已存在"); } - if(checkUniquePhone(userInfo.getPhone(), null)){ - return new ResultData(ErrorCode.USER_PHONE_IS_FOUND,"手机号已存在"); + if(checkUniquePhone(userInfo.getPhone(), currentUser.getTenantId()) > 0){ + return new ResultData(ErrorCode.USER_PHONE_IS_FOUND.getCode(),"手机号已存在"); } Assert.notNull(userInfo.getPassword(), "密码不能为空"); PasswordHelper passwordHelper = new PasswordHelper(); passwordHelper.encryptPassword(userInfo); userInfo.setTenantId(getTenantId()); + // 无法创建超管 + userInfo.setIsAdmin(EnumUserAdmin.Normal.getCode()); userInfoService.saveOrUpdate(userInfo); if (userInfo.getRoleId() != null) { MallUserRole r = new MallUserRole(); @@ -106,37 +113,77 @@ public class MallUserInfoController extends BaseController { r.setUid(userInfo.getId()); userRoleService.saveOrUpdate(r); } - return new ResultData(); + return new ResultData(userInfo); } @ApiOperation(value = "修改用户接口", response = String.class) @PostMapping("update") public ResultData updateUser(@RequestBody MallUserInfo userInfo) { - //Assert.notNull(userInfo.getUsername(), "用户名不能为空"); - if(checkUniqueName(userInfo.getUsername(), userInfo.getId())){ - return new ResultData(ErrorCode.USER_NAME_IS_FOUND,"用户名已存在"); + MallUserInfo currentUser = getUser(); + // 只有超管和自己能更新信息 + if (!(currentUser.getId().equals(userInfo.getId()) || + currentUser.getIsAdmin().equals(EnumUserAdmin.ADMIN.getCode()))) { + return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(), "超级管理员和自己才能修改信息"); } - if(checkUniquePhone(userInfo.getPhone(), userInfo.getId())){ - return new ResultData(ErrorCode.USER_PHONE_IS_FOUND,"手机号已存在"); + MallUserInfo oldUser = userInfoService.getById(userInfo.getId()); + if (!oldUser.getUsername().equals(userInfo.getUsername())) { + if(checkUniqueName(userInfo.getUsername(), currentUser.getTenantId()) > 0){ + return new ResultData(ErrorCode.USER_NAME_IS_FOUND.getCode(),"用户名已存在"); + } } -// Assert.notNull(userInfo.getPassword(), "密码不能为空"); - PasswordHelper passwordHelper = new PasswordHelper(); - passwordHelper.encryptPassword(userInfo); + if (!oldUser.getPhone().equals(userInfo.getPhone())) { + if(checkUniquePhone(userInfo.getPhone(), currentUser.getTenantId()) > 0){ + return new ResultData(ErrorCode.USER_PHONE_IS_FOUND.getCode(),"手机号已存在"); + } + } + userInfo.setTenantId(getTenantId()); - userInfoService.saveOrUpdate(userInfo); - if (userInfo.getRoleId() != null) { - userRoleService.deleteByUserId(userInfo.getId()); - MallUserRole r = new MallUserRole(); - r.setRoleId(userInfo.getRoleId()); - r.setUid(userInfo.getId()); - userRoleService.saveOrUpdate(r); + if (StringUtils.isNotBlank(userInfo.getPassword()) && userInfo.getPassword().length() > 0) { + PasswordHelper passwordHelper = new PasswordHelper(); + passwordHelper.encryptPassword(userInfo); } + userInfo.setIsAdmin(null); + + if (currentUser.getIsAdmin().equals(EnumUserAdmin.ADMIN.getCode()) && + currentUser.getId().equals(userInfo.getId())) { + // 超管 + boolean bModify = false; + MallUserInfo adminUser = new MallUserInfo(); + adminUser.setId(userInfo.getId()); + if (StringUtils.isNotBlank(userInfo.getPassword()) && userInfo.getPassword().length() > 0) { + adminUser.setPassword(userInfo.getPassword()); + bModify = true; + } + if (StringUtils.isNotBlank(userInfo.getUsername())) { + adminUser.setUsername(userInfo.getUsername()); + } + if (bModify) { + userInfoService.saveOrUpdate(adminUser); + } + } else { + userInfoService.saveOrUpdate(userInfo); + if (userInfo.getRoleId() != null) { + userRoleService.deleteByUserId(userInfo.getId()); + MallUserRole r = new MallUserRole(); + r.setRoleId(userInfo.getRoleId()); + r.setUid(userInfo.getId()); + userRoleService.saveOrUpdate(r); + } + } + return new ResultData(); } @ApiOperation(value = "删除用户接口", response = String.class) @PostMapping("/del") public ResultData deleteUser(@RequestBody MallUserInfo userInfo) { + MallUserInfo currentUser = getUser(); + if (currentUser.getIsAdmin().equals(EnumUserAdmin.Normal.getCode())) { + return new ResultData(ErrorCode.USER_NOT_ADMIN.getCode(), "只有超级管理员才能删除用户"); + } + if (currentUser.getId().equals(userInfo.getId())) { + return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(), "用户不能删除自己"); + } userInfoService.deleteById(userInfo.getId()); return new ResultData(); @@ -152,6 +199,10 @@ public class MallUserInfoController extends BaseController { @ApiOperation(value = "起停用户接口", response = String.class) @GetMapping("status") public ResultData modifyStatus(Long userId, Integer status) { + MallUserInfo currentUser = getUser(); + if (currentUser.getIsAdmin().equals(EnumUserAdmin.Normal.getCode())) { + return new ResultData(ErrorCode.USER_NOT_ADMIN.getCode(), "只有超级管理员才能删除用户"); + } MallUserInfo userInfo = userInfoService.getById(userId); userInfo.setStatus(status); userInfo.setTenantId(getTenantId()); @@ -159,36 +210,28 @@ public class MallUserInfoController extends BaseController { return new ResultData(userInfo); } - @ApiOperation(value = "用户添加角色接口", response = String.class) - @PostMapping("setRoles") - public ResultData setRoles(Long userId, String roleIds) { - /*String[] roIds = roleIds.split(","); - List u2rs = new ArrayList<>(roIds.length); - for (String roleId : roIds) { - MallUserRole userRole = new MallUserRole(); - userRole.setRoleId(roleId); - userRole.setUid(userId); - u2rs.add(userRole); - } - userRoleService.batchInsert(u2rs);*/ - return new ResultData(); - } - - private boolean checkUniqueName(String username, Long id) { - return userInfoService.cntByUserName(username,id); + private int checkUniqueName(String userName, String tenantId) { + MallUserInfo userQ = new MallUserInfo(); + userQ.setUsername(userName); + userQ.setTenantId(tenantId); + return userInfoService.cntUserList(userQ); } - private boolean checkUniquePhone(String phone, Long id) { - return userInfoService.cntByUserPhone(phone,id); + private int checkUniquePhone(String phone, String tenantId) { + MallUserInfo userQ = new MallUserInfo(); + userQ.setPhone(phone); + userQ.setTenantId(tenantId); + return userInfoService.cntUserList(userQ); } @GetMapping("hasButtonPermission") public ResultData hasButtonPermission(String permissions) { + MallUserInfo info = getUser(); + info.setPassword("保密"); Map map = new HashMap<>(); for (String name : permissions.split(",")) { - Long userId = (Long) - SecurityUtils.getSubject().getSession().getAttribute(UserSession.userId); + Long userId = (Long)SecurityUtils.getSubject().getSession().getAttribute(UserSession.userId); boolean has = userInfoService.hasButtonPermission(userId, name); map.put(name, has); } @@ -204,9 +247,9 @@ public class MallUserInfoController extends BaseController { @GetMapping("getUser") public ResultData getUserInfo() { - MallUserInfo info = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute(UserSession.userInfo); + MallUserInfo info = getUser(); info.setPassword("保密"); - if (info.getIsAdmin() == 1) { // isAdmin + if (info.getIsAdmin().equals(EnumUserAdmin.ADMIN.getCode())) { // isAdmin MallPermission q = new MallPermission(); PageInfo list = mallPermissionService.listAsPage(q, 1, 100); String menus = ""; diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/PushLimitController.java b/mallinkAdmin/src/main/java/com/iformall/controller/PushLimitController.java index 9f240d19a..2a6d4ba15 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/PushLimitController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/PushLimitController.java @@ -1,12 +1,9 @@ package com.iformall.controller; -import com.github.pagehelper.PageInfo; -import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.PushLimit; import com.iformall.service.PushLimitService; import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,16 +19,13 @@ public class PushLimitController extends BaseController { @Autowired private PushLimitService pushLimitService; - @ApiOperation("分页列表接口") - @GetMapping("list") - public ResultData list(@ModelAttribute PushLimit pushLimit) { - if (null == pushLimit) pushLimit = new PushLimit(); - pushLimit.setTenantId(getTenantId()); - final PageInfo page = pushLimitService.listAsPage(pushLimit, 1, 10); - return new ResultData(page); + @ApiOperation("疲劳度配置") + @GetMapping("setting") + public ResultData list() { + PushLimit pushLimit = pushLimitService.getPushLimit(getTenantId()); + return new ResultData(pushLimit); } - @ApiOperation("根据id更新接口") @PostMapping("update") public ResultData update(@RequestBody PushLimit pushLimit) { @@ -40,29 +34,4 @@ public class PushLimitController extends BaseController { return new ResultData(); } - @ApiOperation("根据id删除接口") - @GetMapping("/del") - @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) - public ResultData delete(Long id) { - pushLimitService.deleteById(id); - return new ResultData(Result.SUCCESS, "删除成功", null); - } - - @ApiOperation("根据id查询接口") - @GetMapping("/findById") - @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) - public ResultData findById(Long id) { - return new ResultData(Result.SUCCESS, "查询成功", pushLimitService.getById(id)); - } - - - @ApiOperation("默认数据接口") - @GetMapping("/getDefaultData") - public ResultData getDefaultData() { - - PushLimit pushLimit=pushLimitService.getDefaultData(getTenantId()); - return new ResultData(pushLimit); - } - - } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java index 0642188b2..f0b754b2b 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java @@ -3,6 +3,7 @@ package com.iformall.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; @@ -98,14 +99,27 @@ public class WxCUserBasicInfoController extends BaseController { // return new ResultData(); // } + private int checkUniquePhone(String phone, String tenantId) { + WxCUserBasicInfo baseInfoQ = new WxCUserBasicInfo(); + baseInfoQ.setPhone(phone); + baseInfoQ.setTenantId(tenantId); + return wxCUserBasicInfoService.cntUserList(baseInfoQ); + } + @ApiOperation("根据id更新接口") @PostMapping("update") public ResultData update(@RequestBody WxCUserBasicInfo wxCUserBasicInfo) { - WxCUserBasicInfo info = wxCUserBasicInfoService.getById(wxCUserBasicInfo.getId()); + MallUserInfo currentUser = getUser(); + WxCUserBasicInfo oldInfo = wxCUserBasicInfoService.getById(wxCUserBasicInfo.getId()); + if (!oldInfo.getPhone().equals(wxCUserBasicInfo.getPhone())) { + if(checkUniquePhone(wxCUserBasicInfo.getPhone(), currentUser.getTenantId()) > 0){ + return new ResultData(ErrorCode.USER_PHONE_IS_FOUND.getCode(),"手机号已存在"); + } + } wxCUserBasicInfo.setTenantId(getTenantId()); if (StringUtils.isNotBlank(wxCUserBasicInfo.getTagIds())) { WxCUserTags record = new WxCUserTags(); - record.setUserId(info.getId()); + record.setUserId(oldInfo.getId()); record.setTenantId(getTenantId()); PageInfo page = wxCUserTagsService.listAsPage(record, 1, 1); if (page.getSize() > 0) { diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCampaignController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCampaignController.java index 8bbc3f5b9..040d43ca8 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCampaignController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCampaignController.java @@ -24,8 +24,6 @@ import org.springframework.web.bind.annotation.*; import java.util.List; -import static com.iformall.domain.po.WxCampaign.Field.SortNum_ASC; - @RestController @RequestMapping("wxCampaign") @Api(description = "促销和banner接口") @@ -52,7 +50,7 @@ public class WxCampaignController extends BaseController { wxCampaign.setStatus(null); } wxCampaign.setTenantId(getTenantId()); - wxCampaign.setSortColumns(SortNum_ASC); + wxCampaign.setSortColumns(WxCampaign.Field.Id_DESC); final PageInfo page = wxCampaignService.listAsPage(wxCampaign, pageNum, pageSize); return new ResultData(page); } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponChannelController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponChannelController.java index 949b18516..bbf87cc2b 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponChannelController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponChannelController.java @@ -2,13 +2,18 @@ package com.iformall.controller; import com.alibaba.fastjson.JSON; import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.dto.WxCouponChannelDto; import com.iformall.domain.po.MallUserInfo; +import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponChannel; import com.iformall.domain.vo.WxCouponChannelVo; +import com.iformall.enums.EnumCouponChannelStatus; +import com.iformall.enums.EnumCouponStatus; import com.iformall.service.WxCouponChannelService; +import com.iformall.service.WxCouponService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -31,6 +36,9 @@ public class WxCouponChannelController extends BaseController { @Autowired private WxCouponChannelService wxCouponChannelService; + @Autowired + private WxCouponService wxCouponService; + @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ @@ -54,20 +62,26 @@ public class WxCouponChannelController extends BaseController { wxCouponChannel.setTenantId(getUser().getTenantId()); if (wxCouponChannel.getCouponId() != null && wxCouponChannel.getStatus() != null) { WxCouponChannel orignal = wxCouponChannelService.getById(wxCouponChannel.getId()); - if (orignal.getStatus().equals(1) && wxCouponChannel.getStatus().equals(0)) { + if (orignal.getStatus().equals(EnumCouponChannelStatus.STATUS_TAKE_OFFF.getCode()) + && wxCouponChannel.getStatus().equals(EnumCouponChannelStatus.STATUS_THROW_IN.getCode())) { + + WxCoupon wxCoupon = wxCouponService.getById(orignal.getCouponId()); + if (wxCoupon == null) + return new ResultData(ErrorCode.COUPON_IS_EMPTY); + if (wxCoupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF)) + return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); + //查找是否该券 在该频道有其他上架 WxCouponChannel query = new WxCouponChannel(); query.setTenantId(orignal.getTenantId()); query.setCouponId(orignal.getCouponId()); - query.setStatus(0);//已上架 + query.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode());//已上架 query.setTargetAd(orignal.getTargetAd()); List list = wxCouponChannelService.listAsPage(query, 1, 1).getList(); if (list != null && list.size() > 0) { - //不能修改 - return new ResultData(Result.ERROR, "不允许同一个券,多个投放"); + return new ResultData(ErrorCode.COUPON_CHANNEL_IS_EXISTED); } } - } wxCouponChannelService.saveOrUpdate(wxCouponChannel); return new ResultData(); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponController.java index 7d19c34f3..c232b149e 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponController.java @@ -8,6 +8,7 @@ import com.iformall.domain.dto.WxCounponDto; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponChannel; import com.iformall.domain.po.WxMerchant; +import com.iformall.enums.EnumCouponStatus; import com.iformall.service.WxCouponChannelService; import com.iformall.service.WxCouponService; import com.iformall.service.WxMerchantService; @@ -161,7 +162,7 @@ public class WxCouponController extends BaseController { public ResultData sendList(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize) { if (null == wxCoupon) wxCoupon = new WxCoupon(); wxCoupon.setTenantId(getTenantId()); - wxCoupon.setStatus(0); + wxCoupon.setStatus(EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode()); return new ResultData(wxCouponService.listAsPage(wxCoupon, pageNum, pageSize)); } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponOrderController.java index 5a407b388..f52f04a52 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -53,7 +53,8 @@ public class WxCouponOrderController extends BaseController { if (wxCouponOrder == null) wxCouponOrder = new WxCouponOrder(); wxCouponOrder.setTenantId(getTenantId()); wxCouponOrder.setSortColumns(WxCouponOrder.Field.Id_DESC); - return wxCouponOrderService.listAdminAsPage(wxCouponOrder, pageNum, pageSize); + ResultData rd = wxCouponOrderService.listAdminAsPage(wxCouponOrder, pageNum, pageSize); + return rd; } @RequestMapping("/exportData") diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponSendController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponSendController.java index b144f5e90..676b5fc13 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponSendController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCouponSendController.java @@ -6,8 +6,10 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponSend; +import com.iformall.enums.EnumCouponSendStatus; import com.iformall.enums.EnumCouponSendType; import com.iformall.enums.EnumCouponStatus; +import com.iformall.service.WxCouponActionLogService; import com.iformall.service.WxCouponSendService; import com.iformall.service.WxCouponService; import io.swagger.annotations.ApiImplicitParam; @@ -18,6 +20,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.Date; import java.util.List; @RestController @@ -29,6 +32,8 @@ public class WxCouponSendController extends BaseController { private WxCouponSendService wxCouponSendService; @Autowired private WxCouponService wxCouponService; + @Autowired + private WxCouponActionLogService wxCouponActionLogService; @ApiOperation("分页列表接口") @GetMapping("list") @@ -38,7 +43,13 @@ public class WxCouponSendController extends BaseController { public ResultData list(@ModelAttribute WxCouponSend wxCouponSend, Integer pageNum, Integer pageSize) { if (null == wxCouponSend) wxCouponSend = new WxCouponSend(); wxCouponSend.setTenantId(getTenantId()); + wxCouponSend.setStatus(EnumCouponSendStatus.VALID.getCode()); + wxCouponSend.setSortColumns(WxCouponSend.Field.CreateDate_DESC); final PageInfo page = wxCouponSendService.listAsPage(wxCouponSend, pageNum, pageSize); + + for (WxCouponSend cs:page.getList()) + cs.setSendCount(wxCouponActionLogService.getCountByChannelId(getTenantId(), cs.getSendType(), cs.getId())); + return new ResultData(page); } @@ -49,7 +60,7 @@ public class WxCouponSendController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); } wxCouponSend.setTenantId(getTenantId()); - wxCouponSend.setStatus(0); + wxCouponSend.setStatus(EnumCouponSendStatus.VALID.getCode()); List wxCouponSendList = wxCouponSendService.listAsPage(wxCouponSend, 1, 1).getList(); if (wxCouponSendList != null && wxCouponSendList.size() > 0) { return new ResultData(ErrorCode.COUPON_SEND_IS_EXISTED); @@ -68,9 +79,9 @@ public class WxCouponSendController extends BaseController { wxCouponSend.setType(wxCoupon.getType()); wxCouponSend.setTenantId(wxCoupon.getTenantId()); wxCouponSend.setTitle(wxCoupon.getTitle()); + wxCouponSend.setCreateDate(new Date()); + wxCouponSend.setUpdateDate(new Date()); - //Assert.notNull(wxCouponSend.getName(), "角色名不能为空"); - //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); wxCouponSendService.saveOrUpdate(wxCouponSend); return new ResultData(); } @@ -87,8 +98,15 @@ public class WxCouponSendController extends BaseController { @GetMapping("/del") @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) public ResultData delete(Long id) { - wxCouponSendService.deleteById(id); - return new ResultData(Result.SUCCESS, "删除成功", null); + //wxCouponSendService.deleteById(id); + //return new ResultData(Result.SUCCESS, "删除成功", null); + WxCouponSend wxCouponSend = wxCouponSendService.getById(id); + if (wxCouponSend == null) + return new ResultData(ErrorCode.COUPON_SEND_IS_INVALID); + wxCouponSend.setStatus(EnumCouponSendStatus.INVALID.getCode()); + wxCouponSend.setUpdateDate(new Date()); + wxCouponSendService.saveOrUpdate(wxCouponSend); + return new ResultData(); } @ApiOperation("根据id查询接口") diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxLevelConfigController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxLevelConfigController.java index 05227028a..a1ec54ef0 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxLevelConfigController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxLevelConfigController.java @@ -38,6 +38,8 @@ public class WxLevelConfigController extends BaseController { @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) public ResultData list(@ModelAttribute WxLevelConfig wxLevelConfig,Integer pageNum, Integer pageSize) { if (null == wxLevelConfig) wxLevelConfig = new WxLevelConfig(); + wxLevelConfig.setTenantId(getTenantId()); + wxLevelConfig.setSortColumns(WxLevelConfig.Field.Points_ASC); final PageInfo page = wxLevelConfigService.listAsPage(wxLevelConfig, pageNum, pageSize); return new ResultData(page); } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxMsgCallbackController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxMsgCallbackController.java index c354c7591..ba900e678 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxMsgCallbackController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxMsgCallbackController.java @@ -73,9 +73,7 @@ public class WxMsgCallbackController extends BaseController { public void receivemsg(@PathVariable String tenantId, @RequestParam Map param) { logger.info(param.toString()); //解析param数据插入数据库中 - String item = param.get("item"); - String sign = param.get("sign"); - wxMsgCallbackService.saveOrUpdate(tenantId, item, sign); + wxMsgCallbackService.saveOrUpdate(tenantId,param); } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxMsgController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxMsgController.java index e60920aa9..2522d4c7a 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxMsgController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxMsgController.java @@ -36,6 +36,7 @@ public class WxMsgController extends BaseController { public ResultData list(@ModelAttribute WxMsg wxMsg, Integer pageNum, Integer pageSize) { if (null == wxMsg) wxMsg = new WxMsg(); wxMsg.setTenantId(getTenantId()); + //wxMsg.setWay(EnumSendWay.TAG.getCode()); wxMsg.setSortColumns(WxMsg.Field.Createtime_DESC); final PageInfo page = wxMsgService.listAsPage(wxMsg, pageNum, pageSize); return new ResultData(page); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxMsgSignatureController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxMsgSignatureController.java index e2c45253b..61c96cea5 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxMsgSignatureController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxMsgSignatureController.java @@ -8,18 +8,19 @@ import com.iformall.service.WxMsgSignatureService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("wxMsgSignature") public class WxMsgSignatureController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + @Autowired private WxMsgSignatureService wxMsgSignatureService; - private Logger logger = Logger.getLogger(WxMsgSignatureController.class); - @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxScoreRulesController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxScoreRulesController.java index 784ed16e2..1ac7d64ed 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxScoreRulesController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxScoreRulesController.java @@ -23,50 +23,18 @@ public class WxScoreRulesController extends BaseController { @Autowired private WxScoreRulesService wxScoreRulesService; - @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 WxScoreRules wxScoreRules, Integer pageNum, Integer pageSize) { - if (null == wxScoreRules) wxScoreRules = new WxScoreRules(); - wxScoreRules.setTenantId(getTenantId()); - final PageInfo page = wxScoreRulesService.listAsPage(wxScoreRules, pageNum, pageSize); - return new ResultData(page); + @ApiOperation("成长值配置") + @GetMapping("setting") + public ResultData list() { + WxScoreRules scoreRules = wxScoreRulesService.getScoreRules(getTenantId()); + return new ResultData(scoreRules); } @ApiOperation("新增接口") @PostMapping("add") public ResultData add(@RequestBody WxScoreRules wxScoreRules) { - //Assert.notNull(wxScoreRules.getName(), "角色名不能为空"); - //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); - wxScoreRules.setTenantId(getTenantId()); - wxScoreRulesService.saveOrUpdate(wxScoreRules); - return new ResultData(); - } - - @ApiOperation("根据id更新接口") - @PostMapping("update") - public ResultData update(@RequestBody WxScoreRules wxScoreRules) { wxScoreRules.setTenantId(getTenantId()); wxScoreRulesService.saveOrUpdate(wxScoreRules); return new ResultData(); } - - @ApiOperation("根据id删除接口") - @GetMapping("/del") - @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) - public ResultData delete(Long id) { - wxScoreRulesService.deleteById(id); - return new ResultData(Result.SUCCESS, "删除成功", null); - } - - @ApiOperation("根据id查询接口") - @GetMapping("/findById") - @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) - public ResultData findById(Long id) { - return new ResultData(Result.SUCCESS, "查询成功", wxScoreRulesService.getById(id)); - } - - } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxUserStructureController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxUserStructureController.java index 20615e30a..23aaacdaf 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxUserStructureController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxUserStructureController.java @@ -47,12 +47,12 @@ public class WxUserStructureController extends BaseController { WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); dto.setTenantId(getTenantId()); dto.setStartTime(startTime); - if (endTime != null) { - Calendar c = Calendar.getInstance(); - c.setTime(endTime); - c.add(Calendar.DAY_OF_YEAR, 1); - endTime = c.getTime(); - } +// if (endTime != null) { +// Calendar c = Calendar.getInstance(); +// c.setTime(endTime); +// c.add(Calendar.DAY_OF_YEAR, 1); +// endTime = c.getTime(); +// } //保密 dto.setSex(0); long secrecy = wxCUserBasicInfoService.findCountBySex(dto); @@ -74,12 +74,12 @@ public class WxUserStructureController extends BaseController { WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); dto.setTenantId(getTenantId()); dto.setStartTime(startTime); - if (endTime != null) { - Calendar c = Calendar.getInstance(); - c.setTime(endTime); - c.add(Calendar.DAY_OF_YEAR, 1); - endTime = c.getTime(); - } +// if (endTime != null) { +// Calendar c = Calendar.getInstance(); +// c.setTime(endTime); +// c.add(Calendar.DAY_OF_YEAR, 1); +// endTime = c.getTime(); +// } dto.setEndTime(endTime); long all = wxCUserBasicInfoService.findCount(dto); List vos = new ArrayList<>(); diff --git a/mallinkAdmin/src/main/java/com/iformall/schedule/CouponExpiringSchedule.java b/mallinkAdmin/src/main/java/com/iformall/schedule/CouponExpiringSchedule.java index 675792210..a0af0f569 100644 --- a/mallinkAdmin/src/main/java/com/iformall/schedule/CouponExpiringSchedule.java +++ b/mallinkAdmin/src/main/java/com/iformall/schedule/CouponExpiringSchedule.java @@ -1,7 +1,8 @@ package com.iformall.schedule; import com.iformall.mapper.*; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -11,14 +12,12 @@ import org.springframework.transaction.annotation.Transactional; @Component public class CouponExpiringSchedule { - private final Logger logger = Logger.getLogger(CouponExpiringSchedule.class); + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private WxCouponChannelMapper wxCouponChannelMapper; - - @Scheduled(cron = "0 5 0 * * ?") // 每天凌晨00:05 //@Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) diff --git a/mallinkAdmin/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java b/mallinkAdmin/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java index b87032507..850ba0cd3 100644 --- a/mallinkAdmin/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java +++ b/mallinkAdmin/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java @@ -7,7 +7,8 @@ import com.iformall.enums.EnumRefundWay; import com.iformall.mapper.*; import com.iformall.service.WxPayOrderService; import com.iformall.service.WxRefundOrderService; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -18,8 +19,7 @@ import java.util.List; @Component public class CouponOrderExpiringSchedule { - - private final Logger logger = Logger.getLogger(CouponOrderExpiringSchedule.class); + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired diff --git a/mallinkAdmin/src/main/java/com/iformall/schedule/DaliyAmountSchedule.java b/mallinkAdmin/src/main/java/com/iformall/schedule/DaliyAmountSchedule.java index b567a3a07..ffdcbee70 100644 --- a/mallinkAdmin/src/main/java/com/iformall/schedule/DaliyAmountSchedule.java +++ b/mallinkAdmin/src/main/java/com/iformall/schedule/DaliyAmountSchedule.java @@ -8,7 +8,8 @@ import com.iformall.domain.po.WxMerchant; import com.iformall.enums.EnumDateAmtType; import com.iformall.mapper.*; import com.iformall.service.WxDateAmountRecordService; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -21,8 +22,7 @@ import java.util.*; @Component public class DaliyAmountSchedule { - - private final Logger logger = Logger.getLogger(DaliyAmountSchedule.class); + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired diff --git a/mallinkAdmin/src/main/java/com/iformall/schedule/MsgSendingSchedule.java b/mallinkAdmin/src/main/java/com/iformall/schedule/MsgSendingSchedule.java index 2ad56daac..4ddf08bb6 100644 --- a/mallinkAdmin/src/main/java/com/iformall/schedule/MsgSendingSchedule.java +++ b/mallinkAdmin/src/main/java/com/iformall/schedule/MsgSendingSchedule.java @@ -1,12 +1,16 @@ package com.iformall.schedule; import com.alibaba.fastjson.JSONObject; +import com.iformall.common.ErrorCode; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxCUser; import com.iformall.domain.po.WxMsg; import com.iformall.domain.po.WxMsgConfig; import com.iformall.mapper.WxMsgConfigMapper; import com.iformall.mapper.WxMsgMapper; import com.iformall.utils.*; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -16,7 +20,7 @@ import java.util.*; @Component public class MsgSendingSchedule { - private final Logger logger = Logger.getLogger(MsgSendingSchedule.class); + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private WxMsgMapper wxMsgMapper; @@ -44,6 +48,9 @@ public class MsgSendingSchedule { } public void sendmsg(WxMsg wxMsg){ + + + //从短信配置中查询密钥 bid 等信息 WxMsgConfig wxMsgConfig = new WxMsgConfig(); wxMsgConfig.setTenantId(wxMsg.getTenantId()); @@ -51,6 +58,17 @@ public class MsgSendingSchedule { if (wxMsgConfigs.size() == 0) return; wxMsgConfig = wxMsgConfigs.get(0); + if(wxMsgConfig.getRemains()==0){ + logger.info("短信数量为0"); + return; + } + + if(wxMsgConfig.getRemains() levelList = wxLevelConfigService.getByTenantId(user.getTenantId()); + for(WxLevelConfig levelConfig: levelList) { + if (userVo.getScore() > levelConfig.getPoints()) { + userVo.setLevelName(levelConfig.getLevel()); + } + } + } + return new ResultData(Result.SUCCESS,"查询成功", userVo); } @ApiOperation("当前用户名下是否有车") diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index 877eb750f..2045c6bf5 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -48,7 +48,12 @@ public enum ErrorCode{ /** * 用户2000-2099 */ + USER_PHONE_IS_NOT_FOUND(1990,"手机号不存在"), + USER_DEL_SELF(1991,"用户删除自己"), + USER_NOT_ADMIN(1992,"用户非超管"), + USER_NO_PERMISSION(1993,"用户无此权限"), + USER_USE_ROLE(1994,"用户使用此角色"), USER_IS_EMPTY(2000, "用户不存在"), PASSWORD_ERROR(2001, "密码错误"), LOGIN_USER_OR_PWD_ERROR(2002, "用户名或密码错误"), @@ -81,11 +86,12 @@ public enum ErrorCode{ COUPON_TYPE_IS_NOT_ACTIVE(2025, "此券不能用于主动领取"), COUPON_TYPE_IS_NOT_PASSIVE(2026, "此券不能用于定向投放"), - COUPON_CHANNEL_IS_EXISTED(2027, "此券已投放过"), - COUPON_SEND_IS_EXISTED(2028, "此券已经添加到该渠道"), - + COUPON_SEND_IS_INVALID(2029, "此发券渠道不存在"), + PUSH_LIMIT_UP_TO_1DAYLIMIT(2030, "此用户一天内发券到达疲劳度限制"), + PUSH_LIMIT_UP_TO_COUPONLIMIT(2031, "此用户发此券到达疲劳度限制"), + PUSH_LIMIT_NOT_INRANG(2032, "不在疲劳度允许的时间段"), /** * 车流 2040 */ @@ -206,7 +212,10 @@ public enum ErrorCode{ MSG_SEND_ERROR(12107,"发送短信失败"), MSG_METHOD_REQUEST_ERROR(12108,"接口请求错误"), MSG_PHONE_NOT_FOUND(12109,"请输入手机号"), - + MSG_SEND_WAY_CHOOSE_ERROR(12110,"请确定发送的方式"), + MSG_SUM_ZERO(12111,"短信数量为0"), + MSG_SUM_INSUFFICENT(12112,"短信数量不足"), + MSG_NO_VALID_PHONE(12113,"没有可以发送的手机号"), /** * 会员 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/CouponInject.java b/mallinkService/src/main/java/com/iformall/domain/po/CouponInject.java index 81e9ffb58..93aa71349 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/CouponInject.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/CouponInject.java @@ -2,12 +2,12 @@ package com.iformall.domain.po; import com.iformall.domain.vo.WxChooseTagVo; -import javax.persistence.*; -import java.util.*; -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 = "coupon_inject") public class CouponInject implements Serializable { @@ -23,6 +23,17 @@ public class CouponInject implements Serializable { @Transient protected WxChooseTagVo wxChooseTagVo; + public WxMsgModel getMsgModel() { + return msgModel; + } + + public void setMsgModel(WxMsgModel msgModel) { + this.msgModel = msgModel; + } + + @Transient + protected WxMsgModel msgModel; + @Transient protected Date sendTimeStart; @@ -84,8 +95,7 @@ public class CouponInject implements Serializable { /*发送人群标签**/ @io.swagger.annotations.ApiModelProperty(value="发送人群标签",name="tags") private String tags; - /*短信模板id**/ - @io.swagger.annotations.ApiModelProperty(value="短信模板id",name="modelId") + @io.swagger.annotations.ApiModelProperty(value="",name="modelId") private Long modelId; /*创建时间**/ @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime") @@ -93,6 +103,10 @@ public class CouponInject implements Serializable { /*修改时间**/ @io.swagger.annotations.ApiModelProperty(value="修改时间",name="updateTime") private Date updateTime; + + @io.swagger.annotations.ApiModelProperty(value="短信id",name="msgId") + private Long msgId; + public String getTenantId() { return tenantId; } @@ -200,7 +214,21 @@ public class CouponInject implements Serializable { this.sendTimeEnd = sendTimeEnd; } + public Long getmUserId() { + return mUserId; + } + public void setmUserId(Long mUserId) { + this.mUserId = mUserId; + } + + public Long getMsgId() { + return msgId; + } + + public void setMsgId(Long msgId) { + this.msgId = msgId; + } public static enum Field { diff --git a/mallinkService/src/main/java/com/iformall/domain/po/PushLimit.java b/mallinkService/src/main/java/com/iformall/domain/po/PushLimit.java index 353923078..ddbe681f6 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/PushLimit.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/PushLimit.java @@ -41,24 +41,24 @@ public class PushLimit implements Serializable { - /***/ + /**租户ID*/ @io.swagger.annotations.ApiModelProperty(value="",name="tenantId") private String tenantId; - /*每人每天可接收短信数**/ + /**每人每天可接收短信数**/ @io.swagger.annotations.ApiModelProperty(value="每人每天可接收短信数",name="msgAmount") private Integer msgAmount; - /*每人每周可接收发券数**/ + /**每人每周可接收发券数**/ @io.swagger.annotations.ApiModelProperty(value="每人每周可接收发券数",name="couponAmount") private Integer couponAmount; - /*每人几天内,不会收到同一个券**/ + /**(每人几天内,不会收到同一个券**/ @io.swagger.annotations.ApiModelProperty(value="每人几天内,不会收到同一个券",name="couponDay") private Integer couponDay; - /*禁止发券,发短信开始时间**/ - @io.swagger.annotations.ApiModelProperty(value="禁止发券,发短信开始时间",name="refuseTimeStart") - private String refuseTimeStart; - /*禁止发券,发短信结束时间**/ - @io.swagger.annotations.ApiModelProperty(value="禁止发券,发短信结束时间",name="refuseTimeEnd") - private String refuseTimeEnd; + /**发券,发短信开始时间**/ + @io.swagger.annotations.ApiModelProperty(value="发券,发短信开始时间",name="timeStart") + private String timeStart; + /**发券,发短信结束时间**/ + @io.swagger.annotations.ApiModelProperty(value="发券,发短信结束时间",name="timeEnd") + private String timeEnd; /***/ @io.swagger.annotations.ApiModelProperty(value="",name="createTime") private Date createTime; @@ -89,18 +89,23 @@ public class PushLimit implements Serializable { public void setCouponDay(Integer _couponDay) { couponDay = _couponDay; } - public String getRefuseTimeStart() { - return refuseTimeStart; + + public String getTimeStart() { + return timeStart; } - public void setRefuseTimeStart(String _refuseTimeStart) { - refuseTimeStart = _refuseTimeStart; + + public void setTimeStart(String timeStart) { + this.timeStart = timeStart; } - public String getRefuseTimeEnd() { - return refuseTimeEnd; + + public String getTimeEnd() { + return timeEnd; } - public void setRefuseTimeEnd(String _refuseTimeEnd) { - refuseTimeEnd = _refuseTimeEnd; + + public void setTimeEnd(String timeEnd) { + this.timeEnd = timeEnd; } + public Date getCreateTime() { return createTime; } @@ -119,14 +124,14 @@ public class PushLimit implements Serializable { public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") - ,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC") - ,MsgAmount_ASC("`msgAmount` ASC"),MsgAmount_DESC("`msgAmount` DESC") - ,CouponAmount_ASC("`couponAmount` ASC"),CouponAmount_DESC("`couponAmount` DESC") - ,CouponDay_ASC("`couponDay` ASC"),CouponDay_DESC("`couponDay` DESC") - ,RefuseTimeStart_ASC("`refuseTimeStart` ASC"),RefuseTimeStart_DESC("`refuseTimeStart` DESC") - ,RefuseTimeEnd_ASC("`refuseTimeEnd` ASC"),RefuseTimeEnd_DESC("`refuseTimeEnd` DESC") - ,CreateTime_ASC("`createTime` ASC"),CreateTime_DESC("`createTime` DESC") - ,UpdateTime_ASC("`updateTime` ASC"),UpdateTime_DESC("`updateTime` DESC") + ,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC") + ,MsgAmount_ASC("`msg_amount` ASC"),MsgAmount_DESC("`msg_amount` DESC") + ,CouponAmount_ASC("`coupon_amount` ASC"),CouponAmount_DESC("`coupon_amount` DESC") + ,CouponDay_ASC("`coupon_day` ASC"),CouponDay_DESC("`coupon_day` DESC") + ,TimeStart_ASC("`time_start` ASC"),TimeStart_DESC("`time_start` DESC") + ,TimeEnd_ASC("`time_end` ASC"),TimeEnd_DESC("`time_end` DESC") + ,CreateTime_ASC("`create_time` ASC"),CreateTime_DESC("`create_time` DESC") + ,UpdateTime_ASC("`update_time` ASC"),UpdateTime_DESC("`update_time` DESC") ; private String value; Field(String value){ @@ -159,7 +164,7 @@ public class PushLimit implements Serializable { sb.append(","); sb.append(fields[k].toString()); } - + this.sortColumns = sb.toString(); } public void setSortColumns(String sortColumns) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java index 4471f3482..a5bf31114 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java @@ -133,7 +133,7 @@ public class WxCUser implements Serializable { //渠道描述 @Transient protected String sceneDescription; - + public String getChannelName() { return channelName; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java index 14cffb78b..47c18a6ff 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java @@ -1,12 +1,12 @@ package com.iformall.domain.po; -import javax.persistence.*; -import java.text.DecimalFormat; -import java.util.*; -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.text.DecimalFormat; +import java.util.Date; +import java.util.List; @Table(name = "wx_coupon") public class WxCoupon implements Serializable { @@ -53,6 +53,12 @@ public class WxCoupon implements Serializable { @Transient private String priceStr; + @Transient + private Date startdate; + + @Transient + private Date enddate; + /*租户ID**/ @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; @@ -322,6 +328,21 @@ public class WxCoupon implements Serializable { this.channels = channels; } + public Date getStartdate() { + return startdate; + } + + public void setStartdate(Date startdate) { + this.startdate = startdate; + } + + public Date getEnddate() { + return enddate; + } + + public void setEnddate(Date enddate) { + this.enddate = enddate; + } public static enum Field { diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponActionLog.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponActionLog.java index cadc3664d..8f90dbb4f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponActionLog.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponActionLog.java @@ -79,8 +79,8 @@ public class WxCouponActionLog implements Serializable { @io.swagger.annotations.ApiModelProperty(value="",name="channelId") private Long channelId; /***/ - @io.swagger.annotations.ApiModelProperty(value="",name="createtime") - private Date createtime; + @io.swagger.annotations.ApiModelProperty(value="",name="createTime") + private Date createTime; public String getTenantId() { return tenantId; } @@ -111,24 +111,24 @@ public class WxCouponActionLog implements Serializable { public void setChannelId(Long _channelId) { channelId = _channelId; } - public Date getCreatetime() { - return createtime; - } - public void setCreatetime(Date _createtime) { - createtime = _createtime; - } + public Date getCreateTime() { + return createTime; + } + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") - ,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC") - ,CouponId_ASC("`couponId` ASC"),CouponId_DESC("`couponId` DESC") - ,CouponOrderId_ASC("`couponOrderId` ASC"),CouponOrderId_DESC("`couponOrderId` DESC") - ,ChannelType_ASC("`channelType` ASC"),ChannelType_DESC("`channelType` DESC") - ,ChannelId_ASC("`channelId` ASC"),ChannelId_DESC("`channelId` DESC") - ,Createtime_ASC("`createtime` ASC"),Createtime_DESC("`createtime` DESC") + ,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC") + ,CouponId_ASC("`coupon_id` ASC"),CouponId_DESC("`coupon_id` DESC") + ,CouponOrderId_ASC("`coupon_order_id` ASC"),CouponOrderId_DESC("`coupon_order_id` DESC") + ,ChannelType_ASC("`channel_type` ASC"),ChannelType_DESC("`channel_type` DESC") + ,ChannelId_ASC("`channel_id` ASC"),ChannelId_DESC("`channel_id` DESC") + ,CreateTime_ASC("`create_time` ASC"),CreateTime_DESC("`create_time` DESC") ; private String value; Field(String value){ @@ -161,6 +161,7 @@ public class WxCouponActionLog implements Serializable { sb.append(","); sb.append(fields[k].toString()); } + this.sortColumns = sb.toString(); } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponSend.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponSend.java index a094be30f..95957d9ec 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponSend.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponSend.java @@ -74,6 +74,12 @@ public class WxCouponSend implements Serializable { /*更新时间**/ @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private Date updateDate; + + /*场景发券计数**/ + @Transient + protected int sendCount; + + public String getTenantId() { return tenantId; } @@ -141,22 +147,28 @@ public class WxCouponSend implements Serializable { updateDate = _updateDate; } + public int getSendCount() { + return sendCount; + } + public void setSendCount(int sendCount) { + this.sendCount = sendCount; + } public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") - ,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC") - ,MerchantId_ASC("`merchantId` ASC"),MerchantId_DESC("`merchantId` DESC") - ,CouponId_ASC("`couponId` ASC"),CouponId_DESC("`couponId` DESC") + ,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC") + ,MerchantId_ASC("`merchant_id` ASC"),MerchantId_DESC("`merchant_id` DESC") + ,CouponId_ASC("`coupon_id` ASC"),CouponId_DESC("`coupon_id` DESC") ,Type_ASC("`type` ASC"),Type_DESC("`type` DESC") ,Title_ASC("`title` ASC"),Title_DESC("`title` DESC") - ,SendType_ASC("`sendType` ASC"),SendType_DESC("`sendType` DESC") + ,SendType_ASC("`send_type` ASC"),SendType_DESC("`send_type` DESC") ,Status_ASC("`status` ASC"),Status_DESC("`status` DESC") - ,SendStartTime_ASC("`sendStartTime` ASC"),SendStartTime_DESC("`sendStartTime` DESC") - ,SendEndTime_ASC("`sendEndTime` ASC"),SendEndTime_DESC("`sendEndTime` DESC") - ,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC") - ,UpdateDate_ASC("`updateDate` ASC"),UpdateDate_DESC("`updateDate` DESC") + ,SendStartTime_ASC("`send_start_time` ASC"),SendStartTime_DESC("`send_start_time` DESC") + ,SendEndTime_ASC("`send_end_time` ASC"),SendEndTime_DESC("`send_end_time` 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){ @@ -190,6 +202,8 @@ public class WxCouponSend implements Serializable { sb.append(fields[k].toString()); } + this.sortColumns = sb.toString(); + } public void setSortColumns(String sortColumns) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxLevelConfig.java b/mallinkService/src/main/java/com/iformall/domain/po/WxLevelConfig.java index 01e43eaea..2a10a1b97 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxLevelConfig.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxLevelConfig.java @@ -92,11 +92,11 @@ public class WxLevelConfig implements Serializable { public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") + ,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC") ,Points_ASC("`points` ASC"),Points_DESC("`points` DESC") ,Level_ASC("`level` ASC"),Level_DESC("`level` DESC") ,Description_ASC("`description` ASC"),Description_DESC("`description` DESC") - ,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC") - ,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC") + ,CreateDate_ASC("`create_date` ASC"),CreateDate_DESC("`create_date` DESC") ; private String value; Field(String value){ @@ -129,6 +129,8 @@ public class WxLevelConfig implements Serializable { sb.append(","); sb.append(fields[k].toString()); } + + this.sortColumns = sb.toString(); } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMsg.java index 95b5adf29..ecb8aeec4 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMsg.java @@ -57,13 +57,13 @@ public class WxMsg implements Serializable { private Date createtime; /*预计发送数量**/ @io.swagger.annotations.ApiModelProperty(value="预计发送数量",name="expectSendNumber") - private String expectSendNumber; + private Integer expectSendNumber; /*成功数量**/ @io.swagger.annotations.ApiModelProperty(value="成功数量",name="successNumber") - private String successNumber; + private Integer successNumber; /*错误数量**/ @io.swagger.annotations.ApiModelProperty(value="错误数量",name="errorNumber") - private String errorNumber; + private Integer errorNumber; /***/ @io.swagger.annotations.ApiModelProperty(value="",name="returnResult") private String returnResult; @@ -92,6 +92,9 @@ public class WxMsg implements Serializable { @io.swagger.annotations.ApiModelProperty(value="状态0未发送 1已发送 2草稿箱",name="status") private Integer status; + @io.swagger.annotations.ApiModelProperty(value="1标签短信2精准投放",name="way") + private Integer way; + public String getTenantId() { return tenantId; } @@ -122,22 +125,22 @@ public class WxMsg implements Serializable { public void setCreatetime(Date _createtime) { createtime = _createtime; } - public String getExpectSendNumber() { + public Integer getExpectSendNumber() { return expectSendNumber; } - public void setExpectSendNumber(String _expectSendNumber) { + public void setExpectSendNumber(Integer _expectSendNumber) { expectSendNumber = _expectSendNumber; } - public String getSuccessNumber() { + public Integer getSuccessNumber() { return successNumber; } - public void setSuccessNumber(String _successNumber) { + public void setSuccessNumber(Integer _successNumber) { successNumber = _successNumber; } - public String getErrorNumber() { + public Integer getErrorNumber() { return errorNumber; } - public void setErrorNumber(String _errorNumber) { + public void setErrorNumber(Integer _errorNumber) { errorNumber = _errorNumber; } public String getReturnResult() { @@ -201,6 +204,14 @@ public class WxMsg implements Serializable { this.status = status; } + public Integer getWay() { + return way; + } + + public void setWay(Integer way) { + this.way = way; + } + public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMsgCallback.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMsgCallback.java index d7da743a9..6a19f52ba 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMsgCallback.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMsgCallback.java @@ -1,11 +1,11 @@ package com.iformall.domain.po; -import javax.persistence.*; -import java.util.*; -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_callback") public class WxMsgCallback implements Serializable { @@ -37,9 +37,11 @@ public class WxMsgCallback implements Serializable { public void setIds(List ids) { this.ids = ids; } - - - + + + @io.swagger.annotations.ApiModelProperty(value="回调ID",name="callbackId") + private Long callbackId; + /*租户id**/ @io.swagger.annotations.ApiModelProperty(value="租户id",name="tenantId") private String tenantId; @@ -67,6 +69,23 @@ public class WxMsgCallback implements Serializable { /*创建时间**/ @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createtime") private Date createtime; + + /*更新时间**/ + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updatetime") + private Date updatetime; + + /*msgId**/ + @io.swagger.annotations.ApiModelProperty(value="msgId",name="msgId") + private Long msgId; + + public Long getCallbackId() { + return callbackId; + } + + public void setCallbackId(Long callbackId) { + this.callbackId = callbackId; + } + public String getTenantId() { return tenantId; } @@ -123,6 +142,21 @@ public class WxMsgCallback implements Serializable { } + public Date getUpdatetime() { + return updatetime; + } + + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + public Long getMsgId() { + return msgId; + } + + public void setMsgId(Long msgId) { + this.msgId = msgId; + } public static enum Field { diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxScoreHistory.java b/mallinkService/src/main/java/com/iformall/domain/po/WxScoreHistory.java index 35fe58efb..f4dcd6bd7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxScoreHistory.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxScoreHistory.java @@ -41,28 +41,31 @@ public class WxScoreHistory implements Serializable { - /*租户ID**/ + /**租户ID**/ @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; - /*会员ID**/ + /**会员ID**/ @io.swagger.annotations.ApiModelProperty(value="会员ID",name="cUserId") private Long cUserId; - /*创建日期**/ + /**创建日期**/ @io.swagger.annotations.ApiModelProperty(value="创建日期",name="createDate") private Date createDate; - /*有效日期**/ + /**成长值类型(1:每日登录, 2:消费,3:绑车牌,4:连接wifi,5:微信昵称授权,6:微信手机授权)**/ + @io.swagger.annotations.ApiModelProperty(value="成长值类型",name="scoreType") + private Integer scoreType; + /**有效日期**/ @io.swagger.annotations.ApiModelProperty(value="有效日期",name="validDate") private Date validDate; - /*单据号**/ + /**单据号**/ @io.swagger.annotations.ApiModelProperty(value="单据号",name="orderId") private Long orderId; - /*支付方式**/ + /**支付方式**/ @io.swagger.annotations.ApiModelProperty(value="支付方式",name="payType") private Integer payType; - /*支付金额**/ + /**支付金额**/ @io.swagger.annotations.ApiModelProperty(value="支付金额",name="payAmount") - private BigDecimal payAmount; - /*积分**/ + private Integer payAmount; + /**积分**/ @io.swagger.annotations.ApiModelProperty(value="积分",name="scoreAmount") private Integer scoreAmount; public String getTenantId() { @@ -83,6 +86,15 @@ public class WxScoreHistory implements Serializable { public void setCreateDate(Date _createDate) { createDate = _createDate; } + + public Integer getScoreType() { + return scoreType; + } + + public void setScoreType(Integer scoreType) { + this.scoreType = scoreType; + } + public Date getValidDate() { return validDate; } @@ -101,10 +113,10 @@ public class WxScoreHistory implements Serializable { public void setPayType(Integer _payType) { payType = _payType; } - public BigDecimal getPayAmount() { + public Integer getPayAmount() { return payAmount; } - public void setPayAmount(BigDecimal _payAmount) { + public void setPayAmount(Integer _payAmount) { payAmount = _payAmount; } public Integer getScoreAmount() { @@ -119,14 +131,15 @@ public class WxScoreHistory implements Serializable { public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") - ,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC") - ,CUserId_ASC("`cUserId` ASC"),CUserId_DESC("`cUserId` DESC") - ,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC") - ,ValidDate_ASC("`validDate` ASC"),ValidDate_DESC("`validDate` DESC") - ,OrderId_ASC("`orderId` ASC"),OrderId_DESC("`orderId` DESC") - ,PayType_ASC("`payType` ASC"),PayType_DESC("`payType` DESC") - ,PayAmount_ASC("`payAmount` ASC"),PayAmount_DESC("`payAmount` DESC") - ,ScoreAmount_ASC("`scoreAmount` ASC"),ScoreAmount_DESC("`scoreAmount` DESC") + ,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC") + ,CUserId_ASC("`c_user_id` ASC"),CUserId_DESC("`c_user_id` DESC") + ,CreateDate_ASC("`create_date` ASC"),CreateDate_DESC("`create_date` DESC") + ,ScoreType_ASC("`score_type` ASC"),ScoreType_DESC("`score_type` DESC") + ,ValidDate_ASC("`valid_date` ASC"),ValidDate_DESC("`valid_date` DESC") + ,OrderId_ASC("`order_id` ASC"),OrderId_DESC("`order_id` DESC") + ,PayType_ASC("`pay_type` ASC"),PayType_DESC("`pay_type` DESC") + ,PayAmount_ASC("`pay_amount` ASC"),PayAmount_DESC("`pay_amount` DESC") + ,ScoreAmount_ASC("`score_amount` ASC"),ScoreAmount_DESC("`score_amount` DESC") ; private String value; Field(String value){ @@ -159,7 +172,7 @@ public class WxScoreHistory implements Serializable { sb.append(","); sb.append(fields[k].toString()); } - + this.sortColumns = sb.toString(); } public void setSortColumns(String sortColumns) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxScoreRules.java b/mallinkService/src/main/java/com/iformall/domain/po/WxScoreRules.java index 57a50450e..f7328dc40 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxScoreRules.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxScoreRules.java @@ -7,6 +7,15 @@ import java.util.List; import javax.persistence.Id; import java.io.Serializable; +/** + * 1. 每天登录首次给成长值 + * 2. 消费金额为0时,不给成长值。 + * 3. 消费金额除以1元,四舍五入给成长值 + * 4. 绑车牌获得成长值 + * 5. 微信昵称授权获取成长值 + * 6. 微信手机授权获取成长值 + */ + @Table(name = "wx_score_rules") public class WxScoreRules implements Serializable { private static final long serialVersionUID = 1L; @@ -39,8 +48,6 @@ public class WxScoreRules implements Serializable { this.ids = ids; } - - /**租户ID**/ @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; @@ -63,16 +70,16 @@ public class WxScoreRules implements Serializable { @io.swagger.annotations.ApiModelProperty(value="绑车牌获取积分",name="bindCarScoreNumber") private Integer bindCarScoreNumber; /**连接wifi次数**/ - @io.swagger.annotations.ApiModelProperty(value="绑车牌",name="wifiNumber") + @io.swagger.annotations.ApiModelProperty(value="连接wifi次数",name="wifiNumber") private Integer wifiNumber; /**连接wifi获取积分**/ - @io.swagger.annotations.ApiModelProperty(value="绑车牌获取积分",name="wifiScoreNumber") + @io.swagger.annotations.ApiModelProperty(value="连接wifi获取积分",name="wifiScoreNumber") private Integer wifiScoreNumber; /**个人信息获取积分**/ - @io.swagger.annotations.ApiModelProperty(value="绑车牌获取积分",name="personScoreNumber") + @io.swagger.annotations.ApiModelProperty(value="个人信息获取积分",name="personScoreNumber") private Integer personScoreNumber; /**手机授权获取积分**/ - @io.swagger.annotations.ApiModelProperty(value="绑车牌获取积分",name="phoneScoreNumber") + @io.swagger.annotations.ApiModelProperty(value="手机授权获取积分",name="phoneScoreNumber") private Integer phoneScoreNumber; /**创建时间**/ diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataVo.java index 655ae269e..71e851d68 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataVo.java @@ -6,44 +6,48 @@ package com.iformall.domain.vo; * 场景营销数据VO */ public class MarkingSceneDataVo { - private int carCount; //进车数量 - private int sendCount; //发券数 - private int verifyCount; //核销数 - private String verifyPercent; //核销比 + private int triggerCount; //某日进车数量/某日核销数量 + private int sendCount; //场景营销发券数 + private int verifiedCount; //场景营销券核销数 + private String verifiedPercent; //场景营销核销比 private String xTime; //时间 - public int getCarCount() { - return carCount; + public int getVerifiedCount() { + + return verifiedCount; } - public void setCarCount(int carCount) { - this.carCount = carCount; + public void setVerifiedCount(int verifiedCount) { + this.verifiedCount = verifiedCount; } - public int getSendCount() { - return sendCount; + public String getVerifiedPercent() { + return verifiedPercent; } - public void setSendCount(int sendCount) { - this.sendCount = sendCount; + public void setVerifiedPercent(String verifiedPercent) { + this.verifiedPercent = verifiedPercent; } - public int getVerifyCount() { - return verifyCount; + public int getTriggerCount() { + + return triggerCount; } - public void setVerifyCount(int verifyCount) { - this.verifyCount = verifyCount; + public void setTriggerCount(int triggerCount) { + this.triggerCount = triggerCount; } - public String getVerifyPercent() { - return verifyPercent; + public int getSendCount() { + return sendCount; } - public void setVerifyPercent(String verifyPercent) { - this.verifyPercent = verifyPercent; + public void setSendCount(int sendCount) { + this.sendCount = sendCount; } + + public String getxTime() { return xTime; } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCUserVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCUserVo.java new file mode 100644 index 000000000..ccd165016 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCUserVo.java @@ -0,0 +1,21 @@ +package com.iformall.domain.vo; + + +import com.iformall.domain.po.WxCUser; + +/** + * Created by syf on 2018/8/30. + */ +public class WxCUserVo extends WxCUser { + + // 等级名称 + private String levelName; + + public String getLevelName() { + return levelName; + } + + public void setLevelName(String levelName) { + this.levelName = levelName; + } +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java index 8ccbef1eb..a9734b8ac 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderBVo.java @@ -97,12 +97,17 @@ public class WxCouponOrderBVo extends WxCouponOrder{ @io.swagger.annotations.ApiModelProperty(value="面额",name="price") private Integer price; - - /*b端用户姓名**/ + /**商户名**/ + @io.swagger.annotations.ApiModelProperty(value="商户名",name="merchantName") + private String merchantName; + /**b端用户姓名**/ @io.swagger.annotations.ApiModelProperty(value="b端用户姓名",name="bUserName") private String bUserName; + /**b端用户手机号**/ + @io.swagger.annotations.ApiModelProperty(value="b端用户手机号",name="bUserPhone") + private String bUserPhone; - /*c用户绑定的手机号**/ + /**c用户绑定的手机号**/ @Excel(name="手机号",width = 20,orderNum = "1") @io.swagger.annotations.ApiModelProperty(value="用户绑定的手机号",name="cUserPhone") private String cUserPhone; @@ -208,6 +213,14 @@ public class WxCouponOrderBVo extends WxCouponOrder{ price = _price; } + public String getMerchantName() { + return merchantName; + } + + public void setMerchantName(String merchantName) { + this.merchantName = merchantName; + } + public String getbUserName() { return bUserName; } @@ -216,6 +229,14 @@ public class WxCouponOrderBVo extends WxCouponOrder{ this.bUserName = bUserName; } + public String getbUserPhone() { + return bUserPhone; + } + + public void setbUserPhone(String bUserPhone) { + this.bUserPhone = bUserPhone; + } + public String getcUserPhone() { return cUserPhone; } @@ -249,27 +270,18 @@ public class WxCouponOrderBVo extends WxCouponOrder{ } public static enum Field { - Id_ASC("`id` ASC"), Id_DESC("`id` DESC"), - TenantId_ASC("`tenant_id` ASC"), - TenantId_DESC("`tenant_id` DESC"), - CouponId_ASC("`coupon_id` ASC"), - CouponId_DESC("`coupon_id` DESC"), - CUserId_ASC("`c_user_id` ASC"), - CUserId_DESC("`c_user_id` DESC"), - BUserId_ASC("`b_user_id` ASC"), - BUserId_DESC("`b_user_id` DESC"), - OrderId_ASC("`order_id` ASC"), - OrderId_DESC("`order_id` DESC"), - ExpiredTime_ASC("`expired_time` ASC"), - ExpiredTime_DESC("`expired_time` DESC"), - CouponOrderStatus_ASC("`coupon_order_status` ASC"), - CouponOrderStatus_DESC("`coupon_order_status` DESC"), - CreateDate_ASC("`create_date` ASC"), - CreateDate_DESC("`create_date` DESC"), - UpdateDate_ASC("`update_date` ASC"), - UpdateDate_DESC("`update_date` DESC"), - CouponPrice_ASC("`coupon_price` ASC"), - CouponPrice_DESC("`coupon_price` DESC"); + Id_ASC("`id` ASC"), Id_DESC("`id` DESC") + ,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC") + ,CouponId_ASC("`coupon_id` ASC"),CouponId_DESC("`coupon_id` DESC") + ,CUserId_ASC("`c_user_id` ASC"), CUserId_DESC("`c_user_id` DESC") + ,BUserId_ASC("`b_user_id` ASC"), BUserId_DESC("`b_user_id` DESC") + ,OrderId_ASC("`order_id` ASC"), OrderId_DESC("`order_id` DESC") + ,ExpiredTime_ASC("`expired_time` ASC"), ExpiredTime_DESC("`expired_time` DESC") + ,CouponOrderStatus_ASC("`coupon_order_status` ASC"), CouponOrderStatus_DESC("`coupon_order_status` DESC") + ,CreateDate_ASC("`create_date` ASC"), CreateDate_DESC("`create_date` DESC") + ,UpdateDate_ASC("`update_date` ASC"), UpdateDate_DESC("`update_date` DESC") + ,CouponPrice_ASC("`coupon_price` ASC"), CouponPrice_DESC("`coupon_price` DESC") + ; private String value; Field(String value) { diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java index d56bb0fa1..32e9fe06d 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponChannelType.java @@ -7,7 +7,7 @@ public enum EnumCouponChannelType { COUPON_CHANNEL_ID_LIST(1, "列表"), COUPON_CHANNEL_ID_TIMED(2, "限时抢购"), - COUPON_CHANNEL_ID_CAMPAIN(3, "幻灯片"), + COUPON_CHANNEL_ID_CAMPAIN(3, "幻灯片") // banner图, 宣传页,轮播图,走马灯 ; ; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponInjectStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponInjectStatus.java index 1655ab7dc..f36b620ef 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponInjectStatus.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponInjectStatus.java @@ -9,8 +9,7 @@ public enum EnumCouponInjectStatus { PENDING(0, "待发送"), SENDING(1, "发送中"), HAS_SENT(2, "已发送"), - SEND_FAILED(3, "发送失败"), - INVALID(4, "已作废") + SEND_FAILED(3, "发送失败") ; public static EnumCouponInjectStatus getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponSendSendType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponSendSendType.java index ecb1146a6..0fa1a5032 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponSendSendType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponSendSendType.java @@ -6,8 +6,12 @@ package com.iformall.enums; public enum EnumCouponSendSendType { // 2:停车发券 3:核销发券 + UNKNOWN(-1, "未知"), + INJECT(0, "精准发券"), + ACTIVE(1, "主动(保留)"), CAR_STOP(2, "停车发券"), - COUPON_VERIFY(3, "核销发券") + COUPON_VERIFY(3, "核销发券"), + ; public static EnumCouponSendSendType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumMsgModelStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumMsgModelStatus.java new file mode 100644 index 000000000..bd6b99352 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMsgModelStatus.java @@ -0,0 +1,41 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumMsgModelStatus { + SUCCESS(1, "创建模板成功"), + FAIL(0, "创建模板失败"), + REPEAT(-6, "模板已存在"), + NOT_FOUND(-5, "短信模板不存在"), + SINATURE_CONTENT_ERROR(-4, "短信签名或内容错误"), + PARAMETERS_ERROR(-3, "参数错误"), + MSG_SEND_FAIL(-2, "发送短信失败"), + INTERFACE_ERROR(-2, "接口请求错误") + ; + + public static EnumMsgModelStatus getEnum(Integer code) { + for (EnumMsgModelStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumMsgModelStatus(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/iformall/enums/EnumCouponActionChannelType.java b/mallinkService/src/main/java/com/iformall/enums/EnumMsgSend.java similarity index 51% rename from mallinkService/src/main/java/com/iformall/enums/EnumCouponActionChannelType.java rename to mallinkService/src/main/java/com/iformall/enums/EnumMsgSend.java index bc8777648..f3f443731 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponActionChannelType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMsgSend.java @@ -3,18 +3,14 @@ package com.iformall.enums; /** * Created by Stormeye on 2018/08/09. */ -public enum EnumCouponActionChannelType { +public enum EnumMsgSend { + MSG_SEND_IMMEDIATELY(1, "立即发送"), + MSG_SEND_NOT_IMMEDIATELY(0, "不立即发送") - // 0:精准 1:主动领取 2:用户购买 3:停车 4:核销 - PRECISE(0, "精准"), - RECEIVE(1, "主动领取"), - BUY(2, "用户购买"), - CAR(3, "停车"), - VERIFY(4, "核销") ; - public static EnumCouponActionChannelType getEnum(Integer code) { - for (EnumCouponActionChannelType value : values()) { + public static EnumMsgSend getEnum(Integer code) { + for (EnumMsgSend value : values()) { if (value.getCode().equals(code)) { return value; } @@ -25,7 +21,7 @@ public enum EnumCouponActionChannelType { private Integer code; private String message; - EnumCouponActionChannelType(Integer code, String message) { + EnumMsgSend(Integer code, String message) { this.code = code; this.message = message; } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumMsgSendSetTime.java b/mallinkService/src/main/java/com/iformall/enums/EnumMsgSendSetTime.java new file mode 100644 index 000000000..36c3eb10a --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMsgSendSetTime.java @@ -0,0 +1,34 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumMsgSendSetTime { + MSG_SEND_STATUS_SET_TIME(0, "定时") + ; + + public static EnumMsgSendSetTime getEnum(Integer code) { + for (EnumMsgSendSetTime value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumMsgSendSetTime(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/iformall/enums/EnumMsgSendStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumMsgSendStatus.java new file mode 100644 index 000000000..5008a1c88 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMsgSendStatus.java @@ -0,0 +1,35 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumMsgSendStatus { + MSG_SEND_SUCCESS(1,"发送成功"), + MSG_SEND_FAIL(0,"发送失败") + ; + + public static EnumMsgSendStatus getEnum(Integer code) { + for (EnumMsgSendStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumMsgSendStatus(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/iformall/enums/EnumMsgStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumMsgStatus.java index d0ff9d18e..a6b0d941e 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumMsgStatus.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMsgStatus.java @@ -6,12 +6,7 @@ package com.iformall.enums; public enum EnumMsgStatus { MSG_STATUS_DRAFT(2, "草稿"), MSG_STATUS_NOT_SEND(0, "未发送"), - MSG_STATUS_SENDED(1, "已发送"), - MSG_SEND_STATUS_SET_TIME(0, "定时"), - MSG_SEND_IMMEDIATELY(1, "立即发送"), - MSG_SEND_NOT_IMMEDIATELY(0, "不立即发送"), - MSG_SEND_SUCCESS(1,"发送成功"), - MSG_SEND_FAIL(0,"发送失败") + MSG_STATUS_SENDED(1, "已发送") ; public static EnumMsgStatus getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java b/mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java new file mode 100644 index 000000000..44b4f3f8a --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java @@ -0,0 +1,39 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumScoreType { + + LOGIN(1, "每日登录"), + CONSUMPTION(2, "消费"), + BINDCAR(3, "绑车牌"), + WIFI_CONNECTION(4, "连接WIFI"), + WECHAT_PERSION(5, "微信用户昵称授权"), + WECHAT_PHONE(6, "微信用户手机授权"); + + public static EnumScoreType getEnum(Integer code) { + for (EnumScoreType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumScoreType(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/iformall/enums/EnumSendWay.java b/mallinkService/src/main/java/com/iformall/enums/EnumSendWay.java new file mode 100644 index 000000000..793f7033d --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumSendWay.java @@ -0,0 +1,37 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumSendWay { + + // 1、标签短信 2:精准发券 + TAG(1,"标签短信"), + COUPON(2, "精准发券") + ; + + public static EnumSendWay getEnum(Integer code) { + for (EnumSendWay value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumSendWay(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/iformall/enums/EnumUserAdmin.java b/mallinkService/src/main/java/com/iformall/enums/EnumUserAdmin.java new file mode 100644 index 000000000..e55dfabe6 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumUserAdmin.java @@ -0,0 +1,38 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumUserAdmin { + + // 0-不是超管 1是超管 + + Normal(0, "不是超管"), + ADMIN(1, "超管") + ; + + public static EnumUserAdmin getEnum(Integer code) { + for (EnumUserAdmin value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumUserAdmin(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/iformall/mapper/MallUserInfoMapper.java b/mallinkService/src/main/java/com/iformall/mapper/MallUserInfoMapper.java index 40262472b..8048a158b 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/MallUserInfoMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/MallUserInfoMapper.java @@ -11,12 +11,8 @@ public interface MallUserInfoMapper extends CommonMapper { List findList(MallUserInfo mallUserInfo); - - - Integer hasButtonPermission(@Param("userId") Long userId, @Param("permission") String permission); - long cntByUserName(Map params); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponActionLogMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponActionLogMapper.java index bb267a4ba..f64f1c0f1 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponActionLogMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponActionLogMapper.java @@ -25,10 +25,22 @@ public interface WxCouponActionLogMapper extends CommonMapper sceneDataList(HashMap params); List sceneDataJoinCouponOrderList(HashMap params); - - - - - + + int getCountByChannelId(@Param("tenantId")String tenantId,@Param("channelType") int channelType,@Param("channelId")Long channelId); + + /** + * 每人每天最多可接收多少张券 + * @param params + * @return + */ + int getCountByUser(Map params); + + /** + * 每人多少天不会重复收到一张券 + * @param params + * @return + */ + int getCountByUserAndCoupon(Map params); + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java index 50b8d2a82..1ab47eadd 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java @@ -14,6 +14,7 @@ public interface WxCouponOrderMapper extends CommonMapper { List findList(WxCouponOrder wxCouponOrder); Integer countList(WxCouponOrder wxCouponOrder); + Integer dayCountCarList(Map params); List findListOfOrderedByDate(Map dateMap); List findListOfVerifiedByDate(Map dateMap); @@ -67,4 +68,7 @@ public interface WxCouponOrderMapper extends CommonMapper { void offExpiredCouponOrderByValidDate(); List findExpiredCouponOrderByValidDate(); + + + List queryForSceneRepotyHistoryVerified(HashMap params); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxMsgCallbackMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxMsgCallbackMapper.java index e3f7cdbdd..24b8791e5 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxMsgCallbackMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxMsgCallbackMapper.java @@ -1,16 +1,18 @@ package com.iformall.mapper; -import java.util.*; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxMsgCallback; +import java.util.List; +import java.util.Map; + public interface WxMsgCallbackMapper extends CommonMapper { List findList(WxMsgCallback wxMsgCallback); - - - - - + + WxMsgCallback queryCallbackByBatchNoAndPhone(WxMsgCallback wxMsgCallback); + + int queryMsgSendTotal(Map params); + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java index 89c9cc980..3285cb1ee 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java @@ -11,6 +11,8 @@ public interface WxOrderMapper extends CommonMapper { Integer countList(WxOrder wxOrder); + Integer dayCountList(WxOrder wxOrder); + List findListOfUnpaidOrderByDate(Map dateMap); List findListOfCUser(WxOrder wxOrder); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxUserVisitMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxUserVisitMapper.java index 80e777c33..0a3abc983 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxUserVisitMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxUserVisitMapper.java @@ -1,19 +1,19 @@ package com.iformall.mapper; -import java.util.*; import com.iformall.common.CommonMapper; -import com.iformall.domain.vo.TouchUsersReportVo; import com.iformall.domain.po.WxUserVisit; +import com.iformall.domain.vo.TouchUsersReportVo; + +import java.util.HashMap; +import java.util.List; public interface WxUserVisitMapper extends CommonMapper { List findList(WxUserVisit wxUserVisit); List touchUsersReportList(HashMap params); - - - - - + + List touchUsersReportData(HashMap params); + } diff --git a/mallinkService/src/main/java/com/iformall/service/MallRoleService.java b/mallinkService/src/main/java/com/iformall/service/MallRoleService.java index eb347e6d8..0e68f795a 100644 --- a/mallinkService/src/main/java/com/iformall/service/MallRoleService.java +++ b/mallinkService/src/main/java/com/iformall/service/MallRoleService.java @@ -11,11 +11,18 @@ public interface MallRoleService { * 根据实体查询分页列表 * * @param record - * @param offset - * @param limit + * @param pageIndex + * @param pageSize * @return */ PageInfo listAsPage(MallRole record, Integer pageIndex, Integer pageSize); + + /** + * 根据实体查询count + * @param record + * @return + */ + int countList(MallRole record); /** * 根据Id获得实体 diff --git a/mallinkService/src/main/java/com/iformall/service/MallUserInfoService.java b/mallinkService/src/main/java/com/iformall/service/MallUserInfoService.java index 16ca1984d..c4d7fc416 100644 --- a/mallinkService/src/main/java/com/iformall/service/MallUserInfoService.java +++ b/mallinkService/src/main/java/com/iformall/service/MallUserInfoService.java @@ -4,17 +4,26 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.MallUserInfo; +import java.util.List; + public interface MallUserInfoService { /** * 根据实体查询分页列表 * * @param record - * @param offset - * @param limit + * @param pageIndex + * @param pageSize * @return */ PageInfo listAsPage(MallUserInfo record, Integer pageIndex, Integer pageSize); + + /** + * 根据实体查询列表 + * @param record + * @return + */ + int cntUserList(MallUserInfo record); /** * 根据Id获得实体 @@ -37,11 +46,7 @@ public interface MallUserInfoService { * @param id */ void deleteById(Long id); - - - - /** * 查询用户名总数,用于校验用户名是否重复 * @param username diff --git a/mallinkService/src/main/java/com/iformall/service/PushLimitService.java b/mallinkService/src/main/java/com/iformall/service/PushLimitService.java index 70c97b716..bd8d1daba 100644 --- a/mallinkService/src/main/java/com/iformall/service/PushLimitService.java +++ b/mallinkService/src/main/java/com/iformall/service/PushLimitService.java @@ -2,32 +2,42 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.PushLimit; +import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.WxCoupon; public interface PushLimitService { - /** + /** * 根据实体查询分页列表 * * @param record - * @param offset - * @param limit + * @param pageIndex + * @param pageSize + * @return + */ + PageInfo listAsPage(PushLimit record, Integer pageIndex, Integer pageSize); + + /** + * 获取租户的PushLimit + * + * @param tenantId * @return */ - PageInfo listAsPage(PushLimit record, Integer pageIndex, Integer pageSize); - - /** + PushLimit getPushLimit(String tenantId); + + /** * 根据Id获得实体 * * @param id * @return */ PushLimit getById(Long id); - - /** + + /** * 保存或更新实体 * - * @param record - */ + * @param record + */ void saveOrUpdate(PushLimit record); /** @@ -37,6 +47,27 @@ public interface PushLimitService { */ void deleteById(Long id); + /** + * 检查发送时间 + * @param tenantId + * @return + */ + boolean checkSendTime(String tenantId); + + /** + * 发短信检查 + * @param tenantId + * @return + */ + boolean checkMsg(String tenantId); + + /** + * 主动发券检查 + * @param tenantId + * @param cUserId + * @param couponId + * @return + */ + boolean checkCoupon(String tenantId, Long cUserId, Long couponId); - PushLimit getDefaultData(String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java b/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java index da15a4028..31aaf3b9e 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java @@ -22,6 +22,13 @@ public interface WxCUserBasicInfoService { */ PageInfo listAsPage(WxCUserBasicInfo record, Integer pageIndex, Integer pageSize); + /** + * 根据实体查询列表 + * @param record + * @return + */ + int cntUserList(WxCUserBasicInfo record); + /** * 根据Id获得实体 * diff --git a/mallinkService/src/main/java/com/iformall/service/WxCUserService.java b/mallinkService/src/main/java/com/iformall/service/WxCUserService.java index 1a5dde0f5..a7342ec42 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCUserService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCUserService.java @@ -77,5 +77,5 @@ public interface WxCUserService { /** * 计算当前用户成长值 */ - void scoreCalculate(String tenantId, Long cUserId); + void scoreCalculate(WxCUser user, boolean isNew); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponActionLogService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponActionLogService.java index be6237dd8..6ef78390c 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponActionLogService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponActionLogService.java @@ -37,13 +37,11 @@ public interface WxCouponActionLogService { */ void deleteById(Long id); + void addOne(String tenantId,Long couponId,Long coupon_order_id,int channelType,Long channelId); - - - - - + + int getCountByChannelId(String tenantId, int channelType, Long channelId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxLevelConfigService.java b/mallinkService/src/main/java/com/iformall/service/WxLevelConfigService.java index a31d19a30..70e894f4a 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxLevelConfigService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxLevelConfigService.java @@ -3,17 +3,26 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxLevelConfig; +import java.util.List; + public interface WxLevelConfigService { /** * 根据实体查询分页列表 * * @param record - * @param offset - * @param limit + * @param pageIndex + * @param pageSize * @return */ PageInfo listAsPage(WxLevelConfig record, Integer pageIndex, Integer pageSize); + + /** + * getByTenantId + * @param tenantId + * @return + */ + List getByTenantId(String tenantId); /** * 根据Id获得实体 diff --git a/mallinkService/src/main/java/com/iformall/service/WxMsgCallbackService.java b/mallinkService/src/main/java/com/iformall/service/WxMsgCallbackService.java index 27f13d1b6..3c9f76ac4 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMsgCallbackService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMsgCallbackService.java @@ -39,7 +39,7 @@ public interface WxMsgCallbackService { void deleteById(Long id); - void saveOrUpdate(String bid, String item, String sign); + void saveOrUpdate(String bid, Map param); void receivemodel(String bid, Map param); diff --git a/mallinkService/src/main/java/com/iformall/service/WxMsgConfigService.java b/mallinkService/src/main/java/com/iformall/service/WxMsgConfigService.java index d21698837..42425a3db 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMsgConfigService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMsgConfigService.java @@ -3,6 +3,8 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxMsgConfig; +import java.util.List; + public interface WxMsgConfigService { /** @@ -36,12 +38,7 @@ public interface WxMsgConfigService { * @param id */ void deleteById(Long id); - - - - - - - + WxMsgConfig findObject(WxMsgConfig wxMsgConfig); + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxScoreRulesService.java b/mallinkService/src/main/java/com/iformall/service/WxScoreRulesService.java index 623b55d6c..28d00af44 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxScoreRulesService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxScoreRulesService.java @@ -1,6 +1,9 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.WxCUserCar; +import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxScoreRules; public interface WxScoreRulesService { @@ -9,11 +12,18 @@ public interface WxScoreRulesService { * 根据实体查询分页列表 * * @param record - * @param offset - * @param limit + * @param pageIndex + * @param pageSize * @return */ PageInfo listAsPage(WxScoreRules record, Integer pageIndex, Integer pageSize); + + /** + * 获取租户的ScoreRules + * @param tenantId + * @return + */ + WxScoreRules getScoreRules(String tenantId); /** * 根据Id获得实体 @@ -37,28 +47,45 @@ public interface WxScoreRulesService { */ void deleteById(Long id); /** - * 登录 调用增长积分 - * @param tenantId - * @param cUserId + * 登录获取成长值 + * @param user * @return 新增的积分值 */ - int loginAddScore(String tenantId,Long cUserId); + int loginAddScore(WxCUser user); /** - * - * @param tenantId - * @param cUserId - * @param payPrice 实际支付金额(分) + * 订单获取成长值 + * @param order + * @return 新增的积分值 + */ + int payAddScore(WxOrder order); + + /** + * 绑车牌获取成长值 + * @param userCar + * @return 新增的积分值 + */ + int bindCarAddScore(WxCUserCar userCar); + + /** + * wifi获取成长值 * @return */ - int payAddScore(String tenantId,Long cUserId,int payPrice); + int wifiAddScore(); - - - + /** + * 微信昵称授权获取成长值 + * @param user + * @return + */ + int personAddScore(WxCUser user); + + + /** + * 微信手机授权获取成长值 + * @param user + * @return + */ + int phoneAddScore(WxCUser user); - - - - } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/CouponInjectServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/CouponInjectServiceImpl.java index 9ec31ef1e..c2a05ebfd 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/CouponInjectServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/CouponInjectServiceImpl.java @@ -9,10 +9,12 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.enums.*; +import com.iformall.exception.MallinkException; import com.iformall.mapper.CouponInjectMapper; import com.iformall.service.*; -import org.apache.commons.lang3.time.DateUtils; -import org.apache.log4j.Logger; +import com.iformall.utils.DateUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -22,6 +24,7 @@ import java.util.List; @Service public class CouponInjectServiceImpl implements CouponInjectService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired CouponInjectMapper couponInjectMapper; @@ -33,7 +36,19 @@ public class CouponInjectServiceImpl implements CouponInjectService { WxCUserTagsService wxCUserTagsService; @Autowired WxCouponActionLogService wxCouponActionLogService; - private Logger logger = Logger.getLogger(getClass()); + @Autowired + WxMsgService wxMsgService; + @Autowired + WxMsgModelService wxMsgModelService; + + @Autowired + WxMsgConfigService wxMsgConfigService; + + @Autowired + PushLimitService pushLimitService; + + @Autowired + WxOrderService wxOrderService; @Override @@ -66,6 +81,13 @@ public class CouponInjectServiceImpl implements CouponInjectService { @Override public ResultData add(CouponInject record) { + try { + pushLimitService.checkSendTime(record.getTenantId()); + } catch (MallinkException e) { + logger.error(e.getMessage()); + return new ResultData(e.getErrorCode(),e.getMessage()); + } + WxCoupon wxCoupon = wxCouponService.getById(record.getCouponId()); if (wxCoupon.getValidType().equals(EnumCouponValidType.BETWEEN_TWO_TIME.getCode()) ) { //时间范围 if (new Date().after(wxCoupon.getValidEndDate())) { @@ -111,52 +133,116 @@ public class CouponInjectServiceImpl implements CouponInjectService { record.setSendAmount(cUsers.size()); couponInjectMapper.insertSelective(record); if(record.getSendType().equals(EnumCouponInjectSendType.IMMEDIATE.getCode())) { - sendNow(wxCoupon,cUsers,record.getId()); + + List sentUsers = sendCoupon(wxCoupon, cUsers, record); + if (sentUsers.size() > 0) { + record.setStatus(EnumCouponInjectStatus.HAS_SENT.getCode()); + ResultData msgSendRes = sendMsg(record, sentUsers); + if (msgSendRes.code == Result.SUCCESS) + record.setMsgId((Long)msgSendRes.data); + } else { + record.setStatus(EnumCouponInjectStatus.SEND_FAILED.getCode()); + } + record.setSendAmount(sentUsers.size()); + + couponInjectMapper.updateByPrimaryKeySelective(record); } + return new ResultData(); } - private void sendNow(WxCoupon wxCoupon,List cUsers,Long couponInjectId){ - //查询标签用户 + private ResultData sendMsg(CouponInject record, List cUsers) { + + //根据模板ID查询短信信息 + WxMsgModel model = wxMsgModelService.getById(record.getModelId()); + if(model==null){ + return new ResultData(ErrorCode.MSG_TEMPLATE_NOT_FOUND); + } + + WxMsg wxmsg=new WxMsg(); + wxmsg.setTenantId(record.getTenantId()); + WxMsgConfig wxMsgConfig = new WxMsgConfig(); + wxMsgConfig.setTenantId(wxmsg.getTenantId()); + wxMsgConfig = wxMsgConfigService.findObject(wxMsgConfig); + if (wxMsgConfig==null){ + return new ResultData(ErrorCode.MSG_SERVER_NOT_FIND); + } - int sendRealAmount=0; + if(wxMsgConfig.getRemains()==0){ + return new ResultData(ErrorCode.MSG_SUM_ZERO); + } + + wxmsg.setExpectSendNumber(cUsers.size());//预计发送数量 + if(wxMsgConfig.getRemains() sendCoupon(WxCoupon wxCoupon,List cUsers,CouponInject record){ + + //查询标签用户 + List sentUsers = new ArrayList(); for (WxCUser tempCUser : cUsers) { - int result = sendCouponToUser(tempCUser,wxCoupon,couponInjectId); - sendRealAmount=sendRealAmount+result; + boolean bResult = sendCouponToUser(tempCUser,wxCoupon,record.getId()); + if (bResult) { + sentUsers.add(tempCUser); + } } - //修改卡券存库 - wxCoupon.setRemainInventory(wxCoupon.getRemainInventory()-sendRealAmount); - wxCouponService.saveOrUpdate(wxCoupon); + return sentUsers; } - private int sendCouponToUser(WxCUser tempCUser,WxCoupon wxCoupon,Long couponInjectId) { - int injectResult = 0;//0注入不成功,1注入卡包成功 + + + private boolean sendCouponToUser(WxCUser tempCUser,WxCoupon wxCoupon,Long couponInjectId) { + boolean checkLimit = false; + // 检查疲劳度 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().equals(EnumCouponValidType.BETWEEN_TWO_TIME.getCode())) { //时间范围区间 - wxCouponOrder.setExpiredTime(wxCoupon.getValidEndDate()); - } else { - Date date = DateUtils.addDays(new Date(), wxCoupon.getValidDays()); - wxCouponOrder.setExpiredTime(date); - } - wxCouponOrder.setTenantId(wxCoupon.getTenantId()); - Long couponOrderId = wxCouponOrderService.insertOne(wxCouponOrder); - injectResult = 1; - wxCouponActionLogService.addOne(wxCoupon.getTenantId(), wxCoupon.getId(), couponOrderId, 0, couponInjectId); - return injectResult; - //短信通知 - } catch (Exception e) { - if(injectResult==0) { - logger.error("注入用户券包异常 :"+tempCUser.getId()+"|"+e.getMessage()); - return injectResult; - } - logger.error("调用短信接口异常 :"+tempCUser.getId()+"|"+e.getMessage()); - return injectResult; + checkLimit = pushLimitService.checkCoupon(tempCUser.getTenantId(), tempCUser.getId(), wxCoupon.getId()); + } catch (MallinkException e) { + logger.error(e.getMessage()); + } + if (!checkLimit) { + return false; + } + // 发放免费券 + WxCouponOrder couponOrder = null; + try { + couponOrder = wxOrderService.sendFreeCouponToUser(tempCUser.getId(), wxCoupon.getId()); + } catch (MallinkException e) { + logger.error(e.getMessage()); + } + if (couponOrder != null) { + wxCouponActionLogService.addOne(tempCUser.getTenantId(), wxCoupon.getId(), couponOrder.getId(), EnumCouponSendSendType.INJECT.getCode(), couponInjectId); } + return true; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/DataTowerServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/DataTowerServiceImpl.java index 714a8f575..1393979e2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/DataTowerServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/DataTowerServiceImpl.java @@ -12,8 +12,9 @@ import com.iformall.service.DataTowerService; import com.iformall.utils.DateUtils; import com.iformall.utils.HashUtil; import com.iformall.utils.HttpUtil; -import org.apache.log4j.Logger; import org.apache.shiro.codec.Base64; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -25,7 +26,7 @@ import java.util.stream.Collectors; @Service public class DataTowerServiceImpl implements DataTowerService { - private Logger logger = Logger.getLogger(getClass()); + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxShopMapper wxShopMapper; @@ -91,7 +92,7 @@ public class DataTowerServiceImpl implements DataTowerService { if(payinfo!=null){ BigDecimal receivepay = (BigDecimal) payinfo.get("receivepay"); BigDecimal pay = (BigDecimal) payinfo.get("pay"); - BigDecimal divide = receivepay.divide(pay,2, BigDecimal.ROUND_HALF_UP); + BigDecimal divide = pay.divide(receivepay,2, BigDecimal.ROUND_HALF_UP); double zjcjl = divide.multiply(new BigDecimal(100)).doubleValue(); datamap.put("ysje",receivepay); datamap.put("ssje",pay); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/MallPermissionServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/MallPermissionServiceImpl.java index 899de7612..e9a931811 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MallPermissionServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/MallPermissionServiceImpl.java @@ -6,6 +6,8 @@ import com.iformall.common.IdWorker; import com.iformall.domain.po.MallPermission; import com.iformall.mapper.MallPermissionMapper; import com.iformall.service.MallPermissionService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -13,6 +15,7 @@ import java.util.List; @Service public class MallPermissionServiceImpl implements MallPermissionService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired MallPermissionMapper mallPermissionMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/MallRolePermissionServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/MallRolePermissionServiceImpl.java index 661f181f2..a4f370b0c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MallRolePermissionServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/MallRolePermissionServiceImpl.java @@ -6,11 +6,15 @@ import com.iformall.common.IdWorker; import com.iformall.domain.po.MallRolePermission; import com.iformall.mapper.MallRolePermissionMapper; import com.iformall.service.MallRolePermissionService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class MallRolePermissionServiceImpl implements MallRolePermissionService { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired MallRolePermissionMapper mallUserRolePermissionMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/MallRoleServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/MallRoleServiceImpl.java index 57e31c4dd..fa4837c75 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MallRoleServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/MallRoleServiceImpl.java @@ -6,6 +6,8 @@ import com.iformall.common.IdWorker; import com.iformall.domain.po.MallRole; import com.iformall.mapper.MallRoleMapper; import com.iformall.service.MallRoleService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -15,6 +17,7 @@ import java.util.Map; @Service public class MallRoleServiceImpl implements MallRoleService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired MallRoleMapper mallRoleMapper; @@ -25,6 +28,11 @@ public class MallRoleServiceImpl implements MallRoleService { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> mallRoleMapper.findList(record)); } + @Override + public int countList(MallRole record) { + return mallRoleMapper.selectCount(record); + } + @Override public MallRole getById(Long id) { return mallRoleMapper.selectByPrimaryKey(id); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/MallUserInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/MallUserInfoServiceImpl.java index 99d42c010..a4a87b422 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MallUserInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/MallUserInfoServiceImpl.java @@ -45,6 +45,11 @@ public class MallUserInfoServiceImpl implements MallUserInfoService { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> mallUserInfoMapper.findList(record)); } + @Override + public int cntUserList(MallUserInfo record) { + return mallUserInfoMapper.selectCount(record); + } + @Override public MallUserInfo getById(Long id) { return mallUserInfoMapper.selectByPrimaryKey(id); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/MallUserRoleServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/MallUserRoleServiceImpl.java index 5a85d2621..8b3e9caa6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MallUserRoleServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/MallUserRoleServiceImpl.java @@ -6,6 +6,8 @@ import com.iformall.common.IdWorker; import com.iformall.domain.po.MallUserRole; import com.iformall.mapper.MallUserRoleMapper; import com.iformall.service.MallUserRoleService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -13,6 +15,7 @@ import java.util.List; @Service public class MallUserRoleServiceImpl implements MallUserRoleService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired MallUserRoleMapper mallUserRoleMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java index 90df9bb98..ea9aff9d8 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java @@ -8,9 +8,13 @@ import com.iformall.domain.vo.MarkingCouponDataReportVo; import com.iformall.domain.vo.MarkingSceneDataReportVo; import com.iformall.domain.vo.MarkingSceneDataVo; import com.iformall.domain.vo.TouchUsersReportVo; +import com.iformall.enums.EnumCarCmd; +import com.iformall.enums.EnumCouponSendSendType; import com.iformall.enums.EnumCouponType; import com.iformall.mapper.*; import com.iformall.service.MarkingDataReportService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -23,7 +27,7 @@ import java.util.stream.Collectors; */ @Service public class MarkingDataReportServiceImpl implements MarkingDataReportService { - + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private WxCouponOrderMapper wxCouponOrderMapper; @@ -161,7 +165,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { params1.put("tenantId", tenantId); params1.put("startTime", getFirstDayOfMonth()); params1.put("endTime", addDay(1)); - params1.put("channelType", 3);//停车 + params1.put("channelType", EnumCouponSendSendType.CAR_STOP);//停车 List list1 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params1); Map parkCountMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p -> p.getTempCount())); //核销发券被核销数 @@ -169,7 +173,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { params2.put("tenantId", tenantId); params2.put("startTime", getFirstDayOfMonth()); params2.put("endTime", addDay(1)); - params2.put("channelType", 4);//核销 + params2.put("channelType", EnumCouponSendSendType.COUPON_VERIFY);//核销 List list2 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params2); Map verifyCountMap = list2.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p -> p.getTempCount())); @@ -191,8 +195,10 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { public PageInfo getCouponDateList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto, Integer pageIndex, Integer pageSize) { HashMap params = new HashMap<>(); params.put("tenantId", tenantId); - params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); - params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); + if (markingCouponDataReportDto.getStartTime() != null) + params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); + if (markingCouponDataReportDto.getEndTime() != null) + params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); if(markingCouponDataReportDto.getCouponType()!=null){ params.put("couponType", markingCouponDataReportDto.getCouponType()); } @@ -223,8 +229,10 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { public PageInfo getSceneDataList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto, Integer pageIndex, Integer pageSize) { HashMap params = new HashMap<>(); params.put("tenantId", tenantId); - params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); - params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); + if (markingCouponDataReportDto.getStartTime() != null) + params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); + if (markingCouponDataReportDto.getEndTime() != null) + params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); //停车发券数 停车发券被核销数 核销发券数 核销发券被核销数 PageHelper.startPage(pageIndex, pageSize); List templist = wxCouponActionLogMapper.sceneDataList(params); @@ -233,7 +241,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { for (MarkingSceneDataReportVo temp: templist) { MarkingSceneDataVo vo = new MarkingSceneDataVo(); vo.setxTime(temp.getxTime()); - if(markingCouponDataReportDto.getType()==1) { + if(markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.CAR_STOP.getCode())) { vo.setSendCount(temp.getParkSendCount()); }else{ vo.setSendCount(temp.getVerifySendCount()); @@ -241,46 +249,66 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { list.add(vo); } - Map countMap = new HashMap<>(); - if(markingCouponDataReportDto.getType()==1){ //停车 + if(markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.CAR_STOP.getCode())){ //停车 //停车发券被核销数 - HashMap params1 = new HashMap<>(); - params1.put("tenantId", tenantId); - params1.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); - params1.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); - params1.put("channelType", 3);//停车 - List list1 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params1); + params.clear(); + params.put("tenantId", tenantId); + if (markingCouponDataReportDto.getStartTime() != null) + params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); + if (markingCouponDataReportDto.getEndTime() != null) + params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); + params.put("channelType", EnumCouponSendSendType.CAR_STOP.getCode()); + List list1 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params); countMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p -> p.getTempCount())); }else{ //核销发券被核销数 - HashMap params2 = new HashMap<>(); - params2.put("tenantId", tenantId); - params2.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); - params2.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); - params2.put("channelType", 4);//核销 - List list2 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params2); + params.clear(); + params.put("tenantId", tenantId); + if (markingCouponDataReportDto.getStartTime() != null) + params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); + if (markingCouponDataReportDto.getEndTime() != null) + params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); + params.put("channelType", EnumCouponSendSendType.COUPON_VERIFY.getCode()); + List list2 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params); countMap = list2.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p -> p.getTempCount())); } - //获取车辆进场数 - HashMap params3 = new HashMap<>(); - params3.put("tenantId", tenantId); - params3.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); - params3.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); - params3.put("cmdType", 601);//核销 - List markingSceneDataVos = wxCarCmdLogMapper.queryForSceneRepotyHistoryCar(params3); - Map carCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getCarCount())); + Map triggerCountMap = new HashMap<>(); + + if(markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.CAR_STOP.getCode())){ //停车 + //获取车辆进场数 + params.clear(); + params.put("tenantId", tenantId); + if (markingCouponDataReportDto.getStartTime() != null) + params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); + if (markingCouponDataReportDto.getEndTime() != null) + params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); + params.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); + List markingSceneDataVos = wxCarCmdLogMapper.queryForSceneRepotyHistoryCar(params); + triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getTriggerCount())); + }else { + //获取核销数 + params.clear(); + params.put("tenantId", tenantId); + if (markingCouponDataReportDto.getStartTime() != null) + params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); + if (markingCouponDataReportDto.getEndTime() != null) + params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); + List markingSceneDataVos = wxCouponOrderMapper.queryForSceneRepotyHistoryVerified(params); + triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getTriggerCount())); + } + NumberFormat nf = NumberFormat.getPercentInstance(); + nf.setMinimumFractionDigits(2); for (MarkingSceneDataVo vo : list) { - vo.setVerifyCount(countMap.get(vo.getxTime()) == null ? 0 : countMap.get(vo.getxTime())); - vo.setCarCount(carCountMap.get(vo.getxTime()) == null ? 0 : carCountMap.get(vo.getxTime())); - if(vo.getSendCount()==0||vo.getVerifyCount()==0){ - vo.setVerifyPercent(vo.getVerifyCount()+":"+vo.getSendCount()); + vo.setVerifiedCount(countMap.get(vo.getxTime()) == null ? 0 : countMap.get(vo.getxTime())); + vo.setTriggerCount(triggerCountMap.get(vo.getxTime()) == null ? 0 : triggerCountMap.get(vo.getxTime())); + if(vo.getSendCount()==0){ + vo.setVerifiedPercent("--"); }else { - int gcd = gcd(vo.getSendCount(), vo.getVerifyCount()); - vo.setVerifyPercent(vo.getVerifyCount() / gcd + "/" + vo.getSendCount() / gcd); + vo.setVerifiedPercent(nf.format(new Double(vo.getVerifiedCount()) / new Double(vo.getSendCount()))); } } return new PageInfo<>(list); @@ -294,16 +322,20 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { //核销量 HashMap params = new HashMap<>(); params.put("tenantId", tenantId); - params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); - params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); + if (markingCouponDataReportDto.getStartTime() != null) + params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); + if (markingCouponDataReportDto.getEndTime() != null) + params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); PageHelper.startPage(pageIndex, pageSize); List couponDatalist = wxCouponOrderMapper.touchUsersReportList(params); //查询UV PV HashMap params1 = new HashMap<>(); params1.put("tenantId", tenantId); - params1.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); - params1.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); + if (markingCouponDataReportDto.getStartTime() != null) + params1.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); + if (markingCouponDataReportDto.getEndTime() != null) + params1.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); List wxUserVisitList = wxUserVisitMapper.touchUsersReportList(params1); Map visitMap = wxUserVisitList.stream().collect(Collectors.toMap(TouchUsersReportVo::getxTime, p -> p)); for (TouchUsersReportVo temp:couponDatalist) { @@ -322,18 +354,10 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { params.put("tenantId", tenantId); params.put("startTime", getFirstDayOfMonth()); params.put("endTime", addDay(1)); - List wxUserVisitList = wxUserVisitMapper.touchUsersReportList(params); - return wxUserVisitList; - - } + List wxUserVisitList = wxUserVisitMapper.touchUsersReportData(params); + return wxUserVisitList; - //计算最大公约数 - public int gcd(int x, int y){ // 这个是运用辗转相除法求 两个数的 最大公约数 看不懂可以百度 // 下 - if(y == 0) - return x; - else - return gcd(y,x%y); } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/PushLimitServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/PushLimitServiceImpl.java index 57e92dd94..c71f7630b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/PushLimitServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/PushLimitServiceImpl.java @@ -2,27 +2,66 @@ package com.iformall.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.domain.po.PushLimit; +import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.WxCoupon; +import com.iformall.exception.MallinkException; import com.iformall.mapper.PushLimitMapper; +import com.iformall.mapper.WxCouponActionLogMapper; import com.iformall.service.PushLimitService; +import com.iformall.utils.DateUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Service public class PushLimitServiceImpl implements PushLimitService { - - @Autowired + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired PushLimitMapper pushLimitMapper; + @Autowired + WxCouponActionLogMapper wxCouponActionLogMapper; + @Override public PageInfo listAsPage(PushLimit record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> pushLimitMapper.findList(record)); } + @Override + public PushLimit getPushLimit(String tenantId) { + PushLimit pushLimit = new PushLimit(); + pushLimit.setTenantId(tenantId); + + List list = pushLimitMapper.findList(pushLimit); + if (list.size() > 0) { + return list.get(0); + } + // 如果疲劳度设置不存在,启用默认值 + final IdWorker idWorker = IdWorker.get(); + pushLimit.setId(idWorker.nextId()); + pushLimit.setMsgAmount(3); + pushLimit.setCouponAmount(10); + pushLimit.setCouponDay(10); + pushLimit.setTimeStart("8:00"); + pushLimit.setTimeEnd("23:00"); + Date curDate = new Date(); + pushLimit.setCreateTime(curDate); + pushLimit.setUpdateTime(curDate); + pushLimitMapper.insertSelective(pushLimit); + return pushLimit; + } + @Override public PushLimit getById(Long id) { return pushLimitMapper.selectByPrimaryKey(id); @@ -30,26 +69,7 @@ public class PushLimitServiceImpl implements PushLimitService { @Override public void saveOrUpdate(PushLimit record) { - PushLimit params=new PushLimit(); - params.setTenantId(record.getTenantId()); - List list = pushLimitMapper.findList(params); - if(list.size()>0){ - pushLimitMapper.updateByPrimaryKeySelective(record); - }else{ - final IdWorker idWorker = IdWorker.get(); - record.setId(idWorker.nextId()); - pushLimitMapper.insertSelective(record); - } -// if (record.getId() == null) { -// //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); -// final IdWorker idWorker = IdWorker.get(); -// record.setId(idWorker.nextId()); -// pushLimitMapper.insertSelective(record); -// return record.getId(); -// } else { -// pushLimitMapper.updateByPrimaryKeySelective(record); -// return record.getId(); -// } + pushLimitMapper.updateByPrimaryKeySelective(record); } @Override @@ -58,22 +78,64 @@ public class PushLimitServiceImpl implements PushLimitService { } @Override - public PushLimit getDefaultData(String tenantId) { - PushLimit record =new PushLimit(); - record.setTenantId(tenantId); - List list = pushLimitMapper.findList(record); - if(list.size()>0){ - record=list.get(0); - }else{ - record=new PushLimit(); - record.setMsgAmount(3); - record.setRefuseTimeStart("00:00"); - record.setRefuseTimeEnd("23:45"); - record.setCouponDay(10); - record.setCouponAmount(10); + public boolean checkSendTime(String tenantId) { + Date curDate = new Date(); + // 1. get tenant limit + PushLimit pushLimit = getPushLimit(tenantId); + // 2. check time + boolean isInDate = DateUtils.isInDate(curDate, pushLimit.getTimeStart(), pushLimit.getTimeEnd()); + if (!isInDate) { + logger.error("短信已达到每天上限"); + throw new MallinkException(ErrorCode.PUSH_LIMIT_NOT_INRANG); } - return record; + return isInDate; } + @Override + public boolean checkMsg(String tenantId) { + Date curDate = new Date(); + // 1. get tenant limit + PushLimit pushLimit = getPushLimit(tenantId); + // 2. check time + boolean isInDate = DateUtils.isInDate(curDate, pushLimit.getTimeStart(), pushLimit.getTimeEnd()); + if (!isInDate) { + logger.error("短信已达到每天上限"); + throw new MallinkException(ErrorCode.PUSH_LIMIT_NOT_INRANG); + } + // TODO 3. check phone had up to limit + return true; + } + + @Override + public boolean checkCoupon(String tenantId, Long cUserId, Long couponId) { + Date curDate = new Date(); + // 1. get tenant limit + PushLimit pushLimit = getPushLimit(tenantId); + // 2. check time 是否在给定的时间段内 + boolean isInDate = DateUtils.isInDate(curDate, pushLimit.getTimeStart(), pushLimit.getTimeEnd()); + if (!isInDate) { + throw new MallinkException(ErrorCode.PUSH_LIMIT_NOT_INRANG); + } + // 3. check 每人每天多少张券 + Map params = new HashMap(); + params.put("tenantId", tenantId); + params.put("cUserId", cUserId); + int countForUser = wxCouponActionLogMapper.getCountByUser(params); + if (countForUser >= pushLimit.getCouponAmount()) { + String errMsg = "每人每天领券已达到疲劳度上限: " + pushLimit.getCouponAmount(); + logger.error(errMsg); + throw new MallinkException(ErrorCode.PUSH_LIMIT_UP_TO_1DAYLIMIT.getCode(), errMsg); + } + // 4. check 每人多少天内不会重复收到一张券 + params.put("couponId", couponId); + params.put("dayNum", pushLimit.getCouponDay()); + int countForUserCoupon = wxCouponActionLogMapper.getCountByUserAndCoupon(params); + if (countForUserCoupon >= 1) { + String errMsg = "每人" + pushLimit.getCouponDay() + "天领一张券已到疲劳度上限"; + logger.error(errMsg); + throw new MallinkException(ErrorCode.PUSH_LIMIT_UP_TO_COUPONLIMIT.getCode(), errMsg); + } + return true; + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxAdminLogServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxAdminLogServiceImpl.java index ecaf9e143..8196f47ae 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxAdminLogServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxAdminLogServiceImpl.java @@ -6,12 +6,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxAdminLog; import com.iformall.mapper.WxAdminLogMapper; import com.iformall.service.WxAdminLogService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxAdminLogServiceImpl implements WxAdminLogService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxAdminLogMapper wxAdminLogMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxAppinfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxAppinfoServiceImpl.java index 185f8c641..020c2bc4b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxAppinfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxAppinfoServiceImpl.java @@ -5,12 +5,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxAppinfo; import com.iformall.mapper.WxAppinfoMapper; import com.iformall.service.WxAppinfoService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxAppinfoServiceImpl implements WxAppinfoService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxAppinfoMapper wxAppinfoMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBLogServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBLogServiceImpl.java index 4612c0f6a..13b84cefa 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBLogServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBLogServiceImpl.java @@ -5,12 +5,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxBLog; import com.iformall.mapper.WxBLogMapper; import com.iformall.service.WxBLogService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxBLogServiceImpl implements WxBLogService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxBLogMapper wxBLogMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java index 0b09ac357..af9fbb54b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java @@ -7,11 +7,14 @@ import com.iformall.common.IdWorker; import com.iformall.domain.po.WxBillRent; import com.iformall.mapper.WxBillRentMapper; import com.iformall.service.WxBillRentService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class WxBillRentServiceImpl implements WxBillRentService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxBillRentMapper wxBillRentMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBusinessServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBusinessServiceImpl.java index 461ba7b1d..45e1ad464 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBusinessServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBusinessServiceImpl.java @@ -5,12 +5,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxBusiness; import com.iformall.mapper.WxBusinessMapper; import com.iformall.service.WxBusinessService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxBusinessServiceImpl implements WxBusinessService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxBusinessMapper wxBusinessMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCLogServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCLogServiceImpl.java index d4ed05511..f871b18a6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCLogServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCLogServiceImpl.java @@ -5,12 +5,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxCLog; import com.iformall.mapper.WxCLogMapper; import com.iformall.service.WxCLogService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxCLogServiceImpl implements WxCLogService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCLogMapper wxCLogMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java index 99a2608f2..e593e9787 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java @@ -68,6 +68,11 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserBasicInfoMapper.findList(record)); } + @Override + public int cntUserList(WxCUserBasicInfo record) { + return wxCUserBasicInfoMapper.selectCount(record); + } + @Override public List findByPhone(String tenantId, String phone) { WxCUserBasicInfo basicQ = new WxCUserBasicInfo(); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserCarServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserCarServiceImpl.java index fa3835cb0..f4a1a68db 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserCarServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserCarServiceImpl.java @@ -6,12 +6,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxCUserCar; import com.iformall.mapper.WxCUserCarMapper; import com.iformall.service.WxCUserCarService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxCUserCarServiceImpl implements WxCUserCarService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCUserCarMapper wxCUserCarMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java index ffffb9819..abadc6e59 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java @@ -11,12 +11,17 @@ import com.iformall.mapper.WxCUserMapper; import com.iformall.mapper.WxCouponOrderMapper; import com.iformall.mapper.WxScoreRulesMapper; import com.iformall.service.WxCUserService; +import com.iformall.service.WxScoreRulesService; +import org.apache.commons.lang3.time.DateUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxCUserServiceImpl implements WxCUserService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCUserMapper wxCUserMapper; @@ -27,6 +32,9 @@ public class WxCUserServiceImpl implements WxCUserService { @Autowired WxScoreRulesMapper wxScoreRulesMapper; + @Autowired + WxScoreRulesService wxScoreRulesService; + @Override public PageInfo listAsPage(WxCUser record, Integer pageIndex, Integer pageSize) { @@ -84,41 +92,18 @@ public class WxCUserServiceImpl implements WxCUserService { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserMapper.listByChannel(sceneList, tenantId)); } - @Override - public void scoreCalculate(String tenantId, Long cUserId) { - - WxCUser user = wxCUserMapper.selectByPrimaryKey(cUserId); - if (user == null) { - return; - } - // 登录次数 - // login count - int login_count = user.getLoginCount(); - - // coupon order - WxCouponOrder couponOrder = new WxCouponOrder(); - couponOrder.setTenantId(tenantId); - couponOrder.setCUserId(cUserId); - int counponCount = wxCouponOrderMapper.selectCount(couponOrder); - - // score rule - WxScoreRules scoreRuleQ = new WxScoreRules(); - scoreRuleQ.setTenantId(tenantId); - WxScoreRules scoreRules = wxScoreRulesMapper.selectOne(scoreRuleQ); - if (scoreRules != null) { - Integer score = - (login_count / scoreRules.getLoginCount()) * scoreRules.getLoginScoreNumber() - + (counponCount / scoreRules.getConsumptionScoreNumber()) * scoreRules.getConsumptionAmount(); - if (user != null) { - user.setScore(score); - user.setUpdateDate(new Date()); - wxCUserMapper.updateByPrimaryKeySelective(user); + public void scoreCalculate(WxCUser user, boolean isNew) { + if (isNew) { + wxScoreRulesService.loginAddScore(user); + } else { + WxCUser oldUser = getById(user.getId()); + if (!DateUtils.isSameDay(user.getUpdateDate(), oldUser.getUpdateDate())) { + wxScoreRulesService.loginAddScore(user); } } - } - - - + + + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java index 6f5f61766..37ad69c6f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java @@ -6,6 +6,8 @@ import java.util.List; import com.alibaba.fastjson.JSON; import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.mapper.WxCUserBasicInfoMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -23,6 +25,7 @@ import com.iformall.service.WxCUserTagsService; @Service public class WxCUserTagsServiceImpl implements WxCUserTagsService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCUserTagsMapper wxCUserTagsMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCampaignServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCampaignServiceImpl.java index f63223967..974363b91 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCampaignServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCampaignServiceImpl.java @@ -17,6 +17,8 @@ import com.iformall.mapper.WxCouponChannelMapper; import com.iformall.service.WxCampaignService; import com.iformall.service.WxCouponChannelService; import com.iformall.service.WxCouponService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -27,6 +29,7 @@ import java.util.List; @Service public class WxCampaignServiceImpl implements WxCampaignService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCampaignMapper wxCampaignMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCarCmdLogServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCarCmdLogServiceImpl.java index 8b3e28747..3e8b35b03 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCarCmdLogServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCarCmdLogServiceImpl.java @@ -5,12 +5,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxCarCmdLog; import com.iformall.mapper.WxCarCmdLogMapper; import com.iformall.service.WxCarCmdLogService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxCarCmdLogServiceImpl implements WxCarCmdLogService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCarCmdLogMapper wxCarCmdLogMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxChannelServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxChannelServiceImpl.java index 65444fe1e..483ed57be 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxChannelServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxChannelServiceImpl.java @@ -5,12 +5,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxChannel; import com.iformall.mapper.WxChannelMapper; import com.iformall.service.WxChannelService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxChannelServiceImpl implements WxChannelService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxChannelMapper wxChannelMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponActionLogServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponActionLogServiceImpl.java index c6949f4d2..4f20aafe2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponActionLogServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponActionLogServiceImpl.java @@ -6,12 +6,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxCouponActionLog; import com.iformall.mapper.WxCouponActionLogMapper; import com.iformall.service.WxCouponActionLogService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxCouponActionLogServiceImpl implements WxCouponActionLogService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCouponActionLogMapper wxCouponActionLogMapper; @@ -52,9 +55,13 @@ public class WxCouponActionLogServiceImpl implements WxCouponActionLogService { actionLog.setChannelId(channelId); actionLog.setCouponOrderId(coupon_order_id); actionLog.setChannelType(channelType); - actionLog.setCreatetime(new Date()); + actionLog.setCreateTime(new Date()); saveOrUpdate(actionLog); } + @Override + public int getCountByChannelId(String tenantId, int channelType, Long channelId) { + return wxCouponActionLogMapper.getCountByChannelId(tenantId, channelType, channelId); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponCarServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponCarServiceImpl.java index af28e65b3..08184a71c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponCarServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponCarServiceImpl.java @@ -7,11 +7,14 @@ import com.iformall.domain.po.WxCouponCar; import com.iformall.domain.vo.WxCouponCarVo; import com.iformall.mapper.WxCouponCarMapper; import com.iformall.service.WxCouponCarService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class WxCouponCarServiceImpl implements WxCouponCarService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCouponCarMapper wxCouponCarMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java index 615c8e0b9..ef56578c6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponChannelServiceImpl.java @@ -16,13 +16,15 @@ import com.iformall.mapper.WxCouponChannelMapper; import com.iformall.mapper.WxMerchantMapper; import com.iformall.service.WxCouponChannelService; import com.iformall.service.WxCouponService; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxCouponChannelServiceImpl implements WxCouponChannelService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCouponChannelMapper wxCouponChannelMapper; @@ -31,8 +33,6 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { @Autowired WxMerchantMapper wxMerchantMapper; - private Logger logger = Logger.getLogger(getClass()); - /** * B端业务端 * @param record diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java index 770925565..6ecbdf9f4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -5,6 +5,7 @@ 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.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.google.common.collect.Lists; @@ -23,8 +24,9 @@ import com.iformall.service.*; import com.iformall.utils.DateUtils; import com.iformall.utils.MaUtil; import me.chanjar.weixin.common.error.WxErrorException; -import org.apache.log4j.Logger; import org.apache.poi.ss.usermodel.Workbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -39,7 +41,7 @@ import java.util.*; @Service public class WxCouponOrderServiceImpl implements WxCouponOrderService { - private Logger logger = Logger.getLogger(WxCouponOrderServiceImpl.class); + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCouponOrderMapper wxCouponOrderMapper; @@ -246,8 +248,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Override public ResultData listAdminAsPage(WxCouponOrder wxCouponOrder, Integer pageIndex, Integer pageSize) { - - return new ResultData(PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findListOfAdmin(wxCouponOrder))); + PageInfo pageInfo= PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findListOfAdmin(wxCouponOrder)); + return new ResultData(pageInfo); } @Override @@ -369,7 +371,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { wxPayOrder.setOrderId(couponOrder.getOrderId()); wxPayOrder.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode()); wxPayOrder = wxPayOrderMapper.selectOne(wxPayOrder); - if (wxPayOrder != null && wxPayOrder.getShare() == EnumPayShare.YES.getCode()) + if (wxPayOrder != null && wxPayOrder.getShare().equals(EnumPayShare.YES.getCode())) wxProfitSharingOrderService.createSharingOrder(wxPayOrder); } catch (Exception e) { logger.error("微信分账: " + e.getMessage()); @@ -434,6 +436,14 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { if (payList.size() > 0) { payOrder = payList.get(0); } + if (payOrder == null) { + logger.error("找不到payOrder信息"); + throw new MallinkException(ErrorCode.PAY_ORDER_NOT_FOUND); + } + if (payOrder.getPrepayId() == null) { + logger.error("payOrder信息中,prepay_id为空"); + throw new MallinkException(ErrorCode.PREPAY_ID_IS_EMPTY); + } WxMaService wxMaService = MaUtil.getWeappService(appInfo); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java index 6c5134be3..605601c25 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java @@ -5,9 +5,12 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; import com.iformall.domain.po.*; import com.iformall.enums.*; +import com.iformall.exception.MallinkException; import com.iformall.mapper.WxCouponOrderMapper; import com.iformall.mapper.WxCouponSendMapper; import com.iformall.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -16,6 +19,7 @@ import java.util.List; @Service public class WxCouponSendServiceImpl implements WxCouponSendService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCouponSendMapper wxCouponSendMapper; @@ -34,6 +38,9 @@ public class WxCouponSendServiceImpl implements WxCouponSendService { @Autowired WxCouponOrderMapper wxCouponOrderMapper; + @Autowired + PushLimitService pushLimitService; + @Override public PageInfo listAsPage(WxCouponSend record, Integer pageIndex, Integer pageSize) { @@ -69,18 +76,19 @@ public class WxCouponSendServiceImpl implements WxCouponSendService { //查询停车或者核销的券 stopCarCouponSwitch verifyConponSwitch WxCouponSend wxCouponSendQuery = new WxCouponSend(); wxCouponSendQuery.setTenantId(tenantId); - int actionLogType = 0; + wxCouponSendQuery.setStatus(EnumCouponSendStatus.VALID.getCode()); + int actionType = EnumCouponSendSendType.UNKNOWN.getCode(); String configKey = ""; if (type == EnumCouponSendSendType.CAR_STOP) { //停车 - wxCouponSendQuery.setSendType(EnumCouponSendSendType.CAR_STOP.getCode()); - actionLogType = EnumCouponActionChannelType.CAR.getCode(); + actionType = EnumCouponSendSendType.CAR_STOP.getCode(); + wxCouponSendQuery.setSendType(actionType); configKey = "stopCarCouponSwitch"; } if (type == EnumCouponSendSendType.COUPON_VERIFY) { //核销 - wxCouponSendQuery.setSendType(EnumCouponSendSendType.COUPON_VERIFY.getCode()); - actionLogType = EnumCouponActionChannelType.VERIFY.getCode(); + actionType = EnumCouponSendSendType.COUPON_VERIFY.getCode(); + wxCouponSendQuery.setSendType(actionType); configKey = "verifyConponSwitch"; } else { return; @@ -96,14 +104,34 @@ public class WxCouponSendServiceImpl implements WxCouponSendService { } } - List wxCouponSends = wxCouponSendMapper.findList(wxCouponSendQuery); - for (WxCouponSend send : wxCouponSends) { - // 发放免费券 - WxCouponOrder couponOrder = wxOrderService.sendFreeCouponToUser(cUserId, send.getCouponId()); - if (couponOrder != null) { - wxCouponActionLogService.addOne(tenantId, send.getCouponId(), couponOrder.getId(), actionLogType, send.getId()); + boolean checkTime = false; + try { + checkTime = pushLimitService.checkSendTime(tenantId); + } catch (MallinkException e) { + logger.error(e.getMessage()); + return; + } + + if (checkTime) { + List wxCouponSends = wxCouponSendMapper.findList(wxCouponSendQuery); + for (WxCouponSend send : wxCouponSends) { + boolean checkLimit = false; + // 检查疲劳度 + try { + checkLimit = pushLimitService.checkCoupon(tenantId, cUserId, send.getCouponId()); + } catch (MallinkException e) { + logger.error(e.getMessage()); + } + if (!checkLimit) { + continue; + } + // 发放免费券 + WxCouponOrder couponOrder = wxOrderService.sendFreeCouponToUser(cUserId, send.getCouponId()); + if (couponOrder != null) { + wxCouponActionLogService.addOne(tenantId, send.getCouponId(), couponOrder.getId(), actionType, send.getId()); + } + wxCouponService.reduceInventory(send.getCouponId(), 1); } - wxCouponService.reduceInventory(send.getCouponId(), 1); } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index 2855d2b7c..2615bf876 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -7,10 +7,15 @@ import com.iformall.common.ResultData; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponChannel; import com.iformall.domain.vo.WxCouponCVo; +import com.iformall.enums.EnumCouponChannelStatus; +import com.iformall.enums.EnumCouponSendStatus; +import com.iformall.enums.EnumCouponStatus; import com.iformall.mapper.WxCouponMapper; import com.iformall.service.WxCouponChannelService; import com.iformall.service.WxCouponSendService; import com.iformall.service.WxCouponService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @@ -18,6 +23,7 @@ import org.springframework.transaction.annotation.Transactional; @Service public class WxCouponServiceImpl implements WxCouponService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCouponMapper wxCouponMapper; @@ -76,10 +82,13 @@ public class WxCouponServiceImpl implements WxCouponService { public ResultData updateCoupon(WxCoupon wxCoupon) { WxCoupon query = wxCouponMapper.selectByPrimaryKey(wxCoupon.getId()); if (wxCoupon.getStatus() != null) { - if (query.getStatus() == 0 && wxCoupon.getStatus() == 1) { + if (query.getStatus().equals(EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode()) + && wxCoupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode())) { //作废所有投放频道 - wxCouponChannelService.updateStatusByCouponId(wxCoupon.getId(), query.getTenantId(), 1); - wxCouponSendService.updateStatusByCouponId(query.getId(), query.getTenantId(), 1); + wxCouponChannelService + .updateStatusByCouponId(wxCoupon.getId(), query.getTenantId(), EnumCouponChannelStatus.STATUS_TAKE_OFFF.getCode()); + wxCouponSendService + .updateStatusByCouponId(query.getId(), query.getTenantId(), EnumCouponSendStatus.INVALID.getCode()); } } return new ResultData(saveOrUpdate(wxCoupon)); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSpreadServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSpreadServiceImpl.java index cde1d402e..cf7df6c05 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSpreadServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponSpreadServiceImpl.java @@ -6,12 +6,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxCouponSpread; import com.iformall.mapper.WxCouponSpreadMapper; import com.iformall.service.WxCouponSpreadService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxCouponSpreadServiceImpl implements WxCouponSpreadService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCouponSpreadMapper wxCouponSpreadMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponTypeServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponTypeServiceImpl.java index 23d4f371f..289146c80 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponTypeServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponTypeServiceImpl.java @@ -5,12 +5,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxCouponType; import com.iformall.mapper.WxCouponTypeMapper; import com.iformall.service.WxCouponTypeService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxCouponTypeServiceImpl implements WxCouponTypeService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCouponTypeMapper wxCouponTypeMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxDateAmountRecordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxDateAmountRecordServiceImpl.java index fe79fa994..ad465ff99 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxDateAmountRecordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxDateAmountRecordServiceImpl.java @@ -6,12 +6,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxDateAmountRecord; import com.iformall.mapper.WxDateAmountRecordMapper; import com.iformall.service.WxDateAmountRecordService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxDateAmountRecordServiceImpl implements WxDateAmountRecordService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxDateAmountRecordMapper wxDateAmountRecordMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxGroupServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxGroupServiceImpl.java index 6501bfbad..bea48efa8 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxGroupServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxGroupServiceImpl.java @@ -6,11 +6,14 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxGroup; import com.iformall.mapper.WxGroupMapper; import com.iformall.service.WxGroupService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class WxGroupServiceImpl implements WxGroupService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxGroupMapper wxGroupMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java index 70c4d8c33..560155eb5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java @@ -5,12 +5,17 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxLevelConfig; import com.iformall.mapper.WxLevelConfigMapper; import com.iformall.service.WxLevelConfigService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; +import java.util.List; + @Service public class WxLevelConfigServiceImpl implements WxLevelConfigService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxLevelConfigMapper wxLevelConfigMapper; @@ -21,6 +26,14 @@ public class WxLevelConfigServiceImpl implements WxLevelConfigService { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxLevelConfigMapper.findList(record)); } + @Override + public List getByTenantId(String tenantId) { + WxLevelConfig wxLevelConfig = new WxLevelConfig(); + wxLevelConfig.setTenantId(tenantId); + wxLevelConfig.setSortColumns(WxLevelConfig.Field.Level_ASC); + return wxLevelConfigMapper.findList(wxLevelConfig); + } + @Override public WxLevelConfig getById(Long id) { return wxLevelConfigMapper.selectByPrimaryKey(id); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMallApplyServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMallApplyServiceImpl.java index e26089351..146b9fb30 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMallApplyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMallApplyServiceImpl.java @@ -20,6 +20,8 @@ import com.iformall.utils.AesUtil; import com.iformall.utils.HMACSHA256; import com.iformall.utils.HttpUtil; import com.iformall.utils.RsaUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -28,6 +30,7 @@ import java.util.stream.Collectors; @Service public class WxMallApplyServiceImpl implements WxMallApplyService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxMallApplyMapper wxMallApplyMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMallBuildingServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMallBuildingServiceImpl.java index 00f6a0702..32e5215f4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMallBuildingServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMallBuildingServiceImpl.java @@ -9,6 +9,8 @@ import com.iformall.domain.po.WxMallFloor; import com.iformall.mapper.WxMallBuildingMapper; import com.iformall.mapper.WxMallFloorMapper; import com.iformall.service.WxMallBuildingService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -17,6 +19,7 @@ import java.util.stream.Collectors; @Service public class WxMallBuildingServiceImpl implements WxMallBuildingService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxMallBuildingMapper wxMallBuildingMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMallConfigServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMallConfigServiceImpl.java index 2b9e48f54..9ff3044b2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMallConfigServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMallConfigServiceImpl.java @@ -5,12 +5,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxMallConfig; import com.iformall.mapper.WxMallConfigMapper; import com.iformall.service.WxMallConfigService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxMallConfigServiceImpl implements WxMallConfigService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxMallConfigMapper wxMallConfigMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMallFloorServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMallFloorServiceImpl.java index 0a929e5a7..40ee471c6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMallFloorServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMallFloorServiceImpl.java @@ -7,12 +7,15 @@ import com.iformall.common.ResultData; import com.iformall.domain.po.WxMallFloor; import com.iformall.mapper.WxMallFloorMapper; import com.iformall.service.WxMallFloorService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxMallFloorServiceImpl implements WxMallFloorService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxMallFloorMapper wxMallFloorMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMallServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMallServiceImpl.java index 0f8f7da85..edaaba2df 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMallServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMallServiceImpl.java @@ -5,12 +5,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxMall; import com.iformall.mapper.WxMallMapper; import com.iformall.service.WxMallService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxMallServiceImpl implements WxMallService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxMallMapper wxMallMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantBUserServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantBUserServiceImpl.java index c0a4c70e5..4e4ee0e58 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantBUserServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantBUserServiceImpl.java @@ -1,11 +1,9 @@ package com.iformall.service.impl; -import java.util.*; -import java.util.stream.Collectors; - import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; +import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxMerchantBUser; @@ -16,15 +14,18 @@ import com.iformall.mapper.WxAppinfoMapper; import com.iformall.mapper.WxMerchantBUserMapper; import com.iformall.mapper.WxMsgValidationcodeMapper; import com.iformall.service.WxMerchantBUserService; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.iformall.common.IdWorker; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; @Service public class WxMerchantBUserServiceImpl implements WxMerchantBUserService { - - private Logger logger = Logger.getLogger(WxMerchantBUserServiceImpl.class); + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxAppinfoMapper wxAppinfoMapper; @@ -92,7 +93,7 @@ public class WxMerchantBUserServiceImpl implements WxMerchantBUserService { bUser.setPhone(phone); bUser.setStatus(EnumMerchantBUserStatus.VALID.getCode()); List list = wxMerchantBUserMapper.findList(bUser); - return list.size()>=1?true:false; + return list.size() >= 1 ? true : false; } @Override @@ -106,20 +107,20 @@ public class WxMerchantBUserServiceImpl implements WxMerchantBUserService { Date currentdate = new Date(); wxmsgvalidationcodelist = wxmsgvalidationcodelist.stream().filter(validationcode -> validationcode.getExpiretime().after(currentdate)).collect(Collectors.toList()); - if(wxmsgvalidationcodelist.size()>0){ + if (wxmsgvalidationcodelist.size() > 0) { //更新 WxMerchantBUser bUser = new WxMerchantBUser(); bUser.setTenantId(appinfo.getTenantId()); bUser.setPhone(phone); bUser.setAppId(appId); List list = wxMerchantBUserMapper.findList(bUser); - if(list.size()>0){ + if (list.size() > 0) { bUser = list.get(0); bUser.setBUserPwd(pwd); - try{ + try { wxMerchantBUserMapper.updateByPrimaryKeySelective(bUser); - }catch (Exception e){ + } catch (Exception e) { logger.error("db failed: 商户-" + bUser.getId() + ", e:" + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index 68f68ba59..9d510a09a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -6,8 +6,11 @@ import com.iformall.common.IdWorker; import com.iformall.domain.po.*; import com.iformall.enums.*; import com.iformall.mapper.*; +import com.iformall.service.WxCouponService; import com.iformall.service.WxMerchantService; import com.iformall.service.WxProfitSharingReceiverService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -18,6 +21,7 @@ import java.util.stream.Collectors; @Service public class WxMerchantServiceImpl implements WxMerchantService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxMerchantMapper wxMerchantMapper; @@ -40,6 +44,12 @@ public class WxMerchantServiceImpl implements WxMerchantService { @Autowired WxBillRentMapper wxBillRentMapper; + @Autowired + WxCouponMapper wxCouponMapper; + + @Autowired + WxCouponService wxCouponService; + @Autowired WxProfitSharingReceiverService wxProfitSharingReceiverService; @Override @@ -143,6 +153,16 @@ public class WxMerchantServiceImpl implements WxMerchantService { wxMerchantBUser.setStatus(EnumMerchantBUserStatus.INVALID.getCode()); wxMerchantBUserMapper.updateByPrimaryKeySelective(wxMerchantBUser); } + + //作废卡券 + WxCoupon wxCoupon = new WxCoupon(); + wxCoupon.setMerchantId(wxMerchant.getId()); + List wxCouponList = wxCouponMapper.findList(wxCoupon); + for(WxCoupon c:wxCouponList){ + c.setStatus(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode()); + wxCouponService.updateCoupon(c); + } + } @Transactional diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantShopServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantShopServiceImpl.java index c36b046e7..2e1c0ff01 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantShopServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantShopServiceImpl.java @@ -8,6 +8,8 @@ import com.iformall.domain.po.WxShop; import com.iformall.mapper.WxMerchantShopMapper; import com.iformall.mapper.WxShopMapper; import com.iformall.service.WxMerchantShopService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -16,6 +18,7 @@ import java.util.List; @Service public class WxMerchantShopServiceImpl implements WxMerchantShopService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxMerchantShopMapper wxMerchantShopMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantTradeDailyServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantTradeDailyServiceImpl.java index 4514225df..92a10e8d0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantTradeDailyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantTradeDailyServiceImpl.java @@ -15,12 +15,15 @@ import com.iformall.service.WxMerchantTradeDailyService; import com.iformall.service.WxMallService; import com.iformall.service.WxMerchantBUserService; import com.iformall.service.WxMerchantService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxMerchantTradeDailyServiceImpl implements WxMerchantTradeDailyService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxMerchantTradeDailyMapper wxMerchantTradeDailyMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java index bbecd9e7c..2608a5298 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java @@ -8,22 +8,23 @@ import com.iformall.domain.po.WxMsgCallback; import com.iformall.domain.po.WxMsgConfig; import com.iformall.domain.po.WxMsgModel; import com.iformall.domain.po.WxMsgValidationcodeModel; -import com.iformall.mapper.WxMsgCallbackMapper; -import com.iformall.mapper.WxMsgConfigMapper; -import com.iformall.mapper.WxMsgModelMapper; -import com.iformall.mapper.WxMsgValidationcodeModelMapper; +import com.iformall.enums.EnumMsgSendStatus; +import com.iformall.enums.EnumMsgStatus; +import com.iformall.mapper.*; import com.iformall.service.WxMsgCallbackService; +import com.iformall.utils.HMACSHA256; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; @Service public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { - - @Autowired + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired WxMsgCallbackMapper wxMsgCallbackMapper; @Autowired @@ -35,6 +36,8 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { @Autowired WxMsgValidationcodeModelMapper wxMsgValidationcodeModelMapper; + @Autowired + WxMsgMapper wxMsgMapper; @Override public PageInfo listAsPage(WxMsgCallback record, Integer pageIndex, Integer pageSize) { @@ -63,20 +66,42 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { } @Override - public void saveOrUpdate(String tenantId, String item, String sign) { - - WxMsgConfig wxMsgConfig = new WxMsgConfig(); - wxMsgConfig.setTenantId(tenantId); - List list = wxMsgConfigMapper.findList(wxMsgConfig); - List wxMsgCallbacks = JSONArray.parseArray(item, WxMsgCallback.class); - wxMsgConfig = list.get(0); - wxMsgConfig.setRemains(wxMsgConfig.getRemains() - wxMsgCallbacks.size()); - wxMsgConfigMapper.updateByPrimaryKeySelective(wxMsgConfig); - for (WxMsgCallback wxMsgCallback : wxMsgCallbacks) { - wxMsgCallback.setTenantId(wxMsgConfig.getTenantId()); - wxMsgCallback.setSign(sign); - wxMsgCallback.setCreatetime(new Date()); - wxMsgCallbackMapper.insertSelective(wxMsgCallback); + public void saveOrUpdate(String tenantId, Map param) { + + if(checksign(tenantId,param)){ + logger.info("短信发送回调SIGN校验成功"); + WxMsgConfig wxMsgConfig = new WxMsgConfig(); + wxMsgConfig.setTenantId(tenantId); + List list = wxMsgConfigMapper.findList(wxMsgConfig); + List wxMsgCallbacks = JSONArray.parseArray(param.get("item"), WxMsgCallback.class); + wxMsgConfig = list.get(0); + wxMsgConfig.setRemains(wxMsgConfig.getRemains() - wxMsgCallbacks.size()); + wxMsgConfigMapper.updateByPrimaryKeySelective(wxMsgConfig); + final IdWorker idWorker = IdWorker.get(); + for (WxMsgCallback wxMsgCallback : wxMsgCallbacks) { + WxMsgCallback callback=wxMsgCallbackMapper.queryCallbackByBatchNoAndPhone(wxMsgCallback); + if(callback!=null){//有更新,无插入 + callback.setSign(param.get("sign")); + callback.setTenantId(tenantId); + callback.setStatus(wxMsgCallback.getStatus()); + callback.setStatusMsg(wxMsgCallback.getStatusMsg()); + callback.setBegintime(wxMsgCallback.getBegintime()); + callback.setEndtime(wxMsgCallback.getEndtime()); + callback.setCallbackId(wxMsgCallback.getId()); + callback.setUpdatetime(new Date()); + wxMsgCallbackMapper.updateByPrimaryKeySelective(callback); + }else{ + Long callbackId = wxMsgCallback.getId(); + wxMsgCallback.setId(idWorker.nextId()); + wxMsgCallback.setCallbackId(callbackId); + wxMsgCallback.setTenantId(tenantId); + wxMsgCallback.setSign(param.get("sign")); + wxMsgCallback.setCreatetime(new Date()); + wxMsgCallbackMapper.insertSelective(wxMsgCallback); + } + } + }else{ + logger.info("短信发送回调SIGN校验失败"); } } @@ -84,26 +109,59 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { @Override public void receivemodel(String tenantId, Map param) { - WxMsgModel wxMsgModel = new WxMsgModel(); - wxMsgModel.setModelId(Integer.valueOf(param.get("id"))); - wxMsgModel.setTenantId(tenantId); - wxMsgModel = wxMsgModelMapper.findList(wxMsgModel).get(0); - wxMsgModel.setStatus(param.get("status").equals("1")?Integer.valueOf(param.get("status")):0); - wxMsgModelMapper.updateByPrimaryKeySelective(wxMsgModel); - + if(checksign(tenantId,param)){ + logger.info("短信营销模板回调SIGN校验成功"); + WxMsgModel wxMsgModel = new WxMsgModel(); + wxMsgModel.setModelId(Integer.valueOf(param.get("id"))); + wxMsgModel.setTenantId(tenantId); + wxMsgModel = wxMsgModelMapper.findList(wxMsgModel).get(0); + wxMsgModel.setStatus(param.get("status").equals("1")?Integer.valueOf(param.get("status")):0); + wxMsgModelMapper.updateByPrimaryKeySelective(wxMsgModel); + }else{ + logger.info("短信营销模板回调SIGN校验失败"); + } } @Override public void receiveverifymodel(String tenantId, Map param) { - WxMsgValidationcodeModel wxMsgModel = new WxMsgValidationcodeModel(); - wxMsgModel.setModelId(Integer.valueOf(param.get("id"))); - wxMsgModel.setTenantId(tenantId); - wxMsgModel = wxMsgValidationcodeModelMapper.findList(wxMsgModel).get(0); - wxMsgModel.setStatus(param.get("status").equals("1")?Integer.valueOf(param.get("status")):0); - wxMsgValidationcodeModelMapper.updateByPrimaryKeySelective(wxMsgModel); + if(checksign(tenantId,param)) { + logger.info("短信验证码回调SIGN校验成功"); + WxMsgValidationcodeModel wxMsgModel = new WxMsgValidationcodeModel(); + wxMsgModel.setModelId(Integer.valueOf(param.get("id"))); + wxMsgModel.setTenantId(tenantId); + wxMsgModel = wxMsgValidationcodeModelMapper.findList(wxMsgModel).get(0); + wxMsgModel.setStatus(param.get("status").equals("1")?Integer.valueOf(param.get("status")):0); + wxMsgValidationcodeModelMapper.updateByPrimaryKeySelective(wxMsgModel); + }else{ + logger.info("短信验证码回调SIGN校验失败"); + } + + + + } + + public boolean checksign(String tenantId,Map param){ + + WxMsgConfig wxMsgConfig = new WxMsgConfig(); + wxMsgConfig.setTenantId(tenantId); + List list = wxMsgConfigMapper.findList(wxMsgConfig); + wxMsgConfig = list.get(0); + + TreeMap message = new TreeMap<>(); + message.putAll(param); + message.remove("sign"); + + 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(wxMsgConfig.getSecret()); + String sign_check = HMACSHA256.sha256_HMAC(sb.toString(), wxMsgConfig.getSecret()); + return sign_check.equalsIgnoreCase(param.get("sign")); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgConfigServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgConfigServiceImpl.java index a0190d32e..aa73fbfac 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgConfigServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgConfigServiceImpl.java @@ -5,12 +5,17 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxMsgConfig; import com.iformall.mapper.WxMsgConfigMapper; import com.iformall.service.WxMsgConfigService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; +import java.util.List; + @Service public class WxMsgConfigServiceImpl implements WxMsgConfigService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxMsgConfigMapper wxMsgConfigMapper; @@ -42,12 +47,11 @@ public class WxMsgConfigServiceImpl implements WxMsgConfigService { public void deleteById(Long id) { wxMsgConfigMapper.deleteByPrimaryKey(id); } - - - - - - - - + + @Override + public WxMsgConfig findObject(WxMsgConfig wxMsgConfig) { + return wxMsgConfigMapper.selectOne(wxMsgConfig); + } + + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgModelServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgModelServiceImpl.java index fdc40c162..0a8c36e22 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgModelServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgModelServiceImpl.java @@ -9,6 +9,8 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.WxMsgConfig; import com.iformall.domain.po.WxMsgModel; +import com.iformall.enums.EnumMsgModelStatus; +import com.iformall.exception.MallinkException; import com.iformall.mapper.WxMsgConfigMapper; import com.iformall.mapper.WxMsgModelMapper; import com.iformall.service.WxMsgModelService; @@ -16,6 +18,8 @@ import com.iformall.utils.AesUtil; import com.iformall.utils.HMACSHA256; import com.iformall.utils.HttpUtil; import com.iformall.utils.RsaUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -23,6 +27,7 @@ import java.util.*; @Service public class WxMsgModelServiceImpl implements WxMsgModelService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxMsgModelMapper wxMsgModelMapper; @@ -96,14 +101,15 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { params.put("data", data); params.put("sc", sc); } catch (Exception e) { - throw new RuntimeException("创建模板失败"); + logger.info("短信AES/RSA解密失败"); + throw new MallinkException(ErrorCode.TEMPLATE_SEND_FAILED); } 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")) { + if (ret.equals(EnumMsgModelStatus.SUCCESS.getCode().toString())) { if (wxMsgModel.getId() == null) { final IdWorker idWorker = IdWorker.get(); wxMsgModel.setId(idWorker.nextId()); @@ -114,10 +120,13 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { wxMsgModel.setStatus(2);//审核中 wxMsgModelMapper.insertSelective(wxMsgModel); } else { + String data = jsonObjectResult.get("data").toString(); + wxMsgModel.setModelId(Integer.valueOf(data)); + wxMsgModel.setStatus(2);//审核中 wxMsgModelMapper.updateByPrimaryKeySelective(wxMsgModel); } return new ResultData(Result.SUCCESS, "创建模板成功"); - } else if (ret.equals("-6")) { + } else if (ret.equals(EnumMsgModelStatus.REPEAT.getCode().toString())) { if (wxMsgModel.getId() == null) { final IdWorker idWorker = IdWorker.get(); wxMsgModel.setId(idWorker.nextId()); @@ -128,15 +137,15 @@ public class WxMsgModelServiceImpl implements WxMsgModelService { } else { wxMsgModelMapper.updateByPrimaryKeySelective(wxMsgModel); } - } else if (ret.equals("-4")) { + } else if (ret.equals(EnumMsgModelStatus.SINATURE_CONTENT_ERROR.getCode().toString())) { return new ResultData(ErrorCode.MSG_SIGNATURE_CONTENT_ERROR.getCode(), "短信签名或内容错误"); - } else if (ret.equals("-5")) { + } else if (ret.equals(EnumMsgModelStatus.NOT_FOUND.getCode().toString())) { return new ResultData(ErrorCode.MSG_TEMPLATE_NOT_FOUND.getCode(), "短信模板不存在"); - } else if (ret.equals("-3")) { + } else if (ret.equals(EnumMsgModelStatus.PARAMETERS_ERROR.getCode().toString())) { return new ResultData(ErrorCode.MSG_REQUEST_PARAMS_ERROR.getCode(), "参数错误"); - } else if (ret.equals("-2")) { + } else if (ret.equals(EnumMsgModelStatus.MSG_SEND_FAIL.getCode().toString())) { return new ResultData(ErrorCode.MSG_SEND_ERROR.getCode(), "发送短信失败"); - } else if (ret.equals("-1")) { + } else if (ret.equals(EnumMsgModelStatus.INTERFACE_ERROR.getCode().toString())) { return new ResultData(ErrorCode.MSG_METHOD_REQUEST_ERROR.getCode(), "接口请求错误"); } return new ResultData(ErrorCode.MSG_TEMPLATE_CREATE_ERROR.getCode(), "创建模板失败"); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java index 4d1601d37..dd1f10636 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgServiceImpl.java @@ -1,6 +1,5 @@ package com.iformall.service.impl; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -8,27 +7,32 @@ import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.Result; import com.iformall.common.ResultData; -import com.iformall.domain.po.WxCUser; import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxMsg; +import com.iformall.domain.po.WxMsgCallback; import com.iformall.domain.po.WxMsgConfig; +import com.iformall.enums.EnumMsgSend; +import com.iformall.enums.EnumMsgSendSetTime; +import com.iformall.enums.EnumMsgSendStatus; import com.iformall.enums.EnumMsgStatus; -import com.iformall.mapper.*; -import com.iformall.service.WxCUserService; +import com.iformall.exception.MallinkException; +import com.iformall.mapper.WxCUserBasicInfoMapper; +import com.iformall.mapper.WxMsgCallbackMapper; +import com.iformall.mapper.WxMsgConfigMapper; +import com.iformall.mapper.WxMsgMapper; import com.iformall.service.WxCUserTagsService; import com.iformall.service.WxMsgService; -import com.iformall.utils.AesUtil; -import com.iformall.utils.HMACSHA256; -import com.iformall.utils.HttpUtil; -import com.iformall.utils.RsaUtil; +import com.iformall.utils.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.beans.Encoder; import java.util.*; @Service public class WxMsgServiceImpl implements WxMsgService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxMsgMapper wxMsgMapper; @@ -42,40 +46,53 @@ public class WxMsgServiceImpl implements WxMsgService { @Autowired WxCUserBasicInfoMapper wxCUserBasicInfoMapper; + @Autowired + WxMsgCallbackMapper wxMsgCallbackMapper; + @Override public PageInfo listAsPage(WxMsg record, Integer pageIndex, Integer pageSize) { - return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxMsgMapper.findList(record)); + PageHelper.startPage(pageIndex, pageSize); + List templist = wxMsgMapper.findList(record); + for(WxMsg temp:templist){ + + Map params=new HashMap<>(); + params.put("msgId",temp.getId().toString()); + params.put("status","1"); + int success=wxMsgCallbackMapper.queryMsgSendTotal(params); + params.put("status","0"); + int error=wxMsgCallbackMapper.queryMsgSendTotal(params); + temp.setSuccessNumber(success); + temp.setErrorNumber(error); + } + + PageInfo pageInfo = new PageInfo<>(templist); + return pageInfo; } @Override public WxMsg getById(Long id) { - return wxMsgMapper.selectByPrimaryKey(id); + + WxMsg wxMsg = wxMsgMapper.selectByPrimaryKey(id); + Map params=new HashMap<>(); + params.put("msgId",wxMsg.getId().toString()); + params.put("status","1"); + int success=wxMsgCallbackMapper.queryMsgSendTotal(params); + params.put("status","0"); + int error=wxMsgCallbackMapper.queryMsgSendTotal(params); + wxMsg.setSuccessNumber(success); + wxMsg.setErrorNumber(error); + + return wxMsg; } @Override public ResultData saveOrUpdate(WxMsg wxMsg) { - //3种方式得到手机号,三种只能有一种 - //1通过excel - //2手机多条以逗号分隔,直接通过实体得到wxmsg.getphones - //3通过标签 - String phones=wxMsg.getPhones(); - if(phones.equals("")){ - if(null!=wxMsg.getExcelpath() && !wxMsg.getExcelpath().equals("")) - phones=parseexcle(wxMsg.getTenantId(), wxMsg.getExcelpath()); - else - phones=parselabel(wxMsg.getTenantId(), wxMsg.getLabel()); - } - - if(phones.equals("")){ - return new ResultData(ErrorCode.MSG_PHONE_NOT_FOUND, "请输入手机号"); - } else { - wxMsg.setPhones(phones); - } + //新增记录 if (wxMsg.getId() == null) { //草稿 - if (wxMsg.getStatus() == 2) { + if (wxMsg.getStatus().equals(EnumMsgStatus.MSG_STATUS_DRAFT.getCode())) { final IdWorker idWorker = IdWorker.get(); wxMsg.setId(idWorker.nextId()); wxMsg.setCreatetime(new Date()); @@ -84,45 +101,99 @@ public class WxMsgServiceImpl implements WxMsgService { } + //1、手机多条以逗号分隔,直接通过实体得到wxmsg.getphones + //2、通过标签 + String phones=wxMsg.getPhones(); + String label = wxMsg.getLabel(); + if(!phones.equals("") && !label.equals("")){//两种方式只能选其一 + return new ResultData(ErrorCode.MSG_SEND_WAY_CHOOSE_ERROR); + } + + if(phones.equals("")){//没有手工输入手机号时解析标签,有,继续流转 + phones=parselabel(wxMsg.getTenantId(), wxMsg); + if(phones.equals("")){//解析之后手机号依然不存在时返回 + return new ResultData(ErrorCode.MSG_PHONE_NOT_FOUND); + } + } + + //保证手机号惟一 + String[] phoneSplit = phones.split(","); + Set phoneSet=new HashSet<>(); + for(String phone:phoneSplit){ + phoneSet.add(phone); + } + wxMsg.setExpectSendNumber(phoneSet.size());//预计发送数量 + StringBuffer sb=new StringBuffer(); + for(String phone:phoneSet){ + sb.append(phone).append(","); + } + wxMsg.setPhones(sb.deleteCharAt(sb.length()-1).toString()); + //是否立即发送 - if (wxMsg.getIsright() == 1) { + if (wxMsg.getIsright().equals(EnumMsgSend.MSG_SEND_IMMEDIATELY.getCode())) { wxMsg.setStatus(EnumMsgStatus.MSG_STATUS_SENDED.getCode()); - sendmsg(wxMsg); + return sendmsg(wxMsg); } else { wxMsg.setStatus(EnumMsgStatus.MSG_STATUS_NOT_SEND.getCode()); final IdWorker idWorker = IdWorker.get(); - wxMsg.setId(idWorker.nextId()); + long id = idWorker.nextId(); + wxMsg.setId(id); wxMsg.setCreatetime(new Date()); wxMsgMapper.insertSelective(wxMsg); - return new ResultData(Result.SUCCESS, "短信会在预设时间发送"); + return new ResultData(Result.SUCCESS, "短信会在预设时间发送",id); } } else { //草稿 - if (wxMsg.getStatus() == 2) { + if (wxMsg.getStatus().equals(EnumMsgStatus.MSG_STATUS_DRAFT.getCode())) { wxMsgMapper.updateByPrimaryKeySelective(wxMsg); return new ResultData(Result.SUCCESS, "已保存到草稿箱"); } + //1、手机多条以逗号分隔,直接通过实体得到wxmsg.getphones + //2、通过标签 + String phones=wxMsg.getPhones(); + String label = wxMsg.getLabel(); + if(!phones.equals("") && !label.equals("")){//两种方式只能选其一 + return new ResultData(ErrorCode.MSG_SEND_WAY_CHOOSE_ERROR); + } + + if(phones.equals("")){//没有手工输入手机号时解析标签,有,继续流转 + phones=parselabel(wxMsg.getTenantId(), wxMsg); + if(phones.equals("")){//解析之后手机号依然不存在时返回 + return new ResultData(ErrorCode.MSG_PHONE_NOT_FOUND); + } + } + + //保证手机号惟一 + String[] phoneSplit = phones.split(","); + Set phoneSet=new HashSet<>(); + for(String phone:phoneSplit){ + phoneSet.add(phone); + } + wxMsg.setExpectSendNumber(phoneSet.size());//预计发送数量 + StringBuffer sb=new StringBuffer(); + for(String phone:phoneSet){ + sb.append(phone).append(","); + } + wxMsg.setPhones(sb.deleteCharAt(sb.length()-1).toString()); + //是否立即发送 - if (wxMsg.getIsright() == 1) { + if (wxMsg.getIsright().equals(EnumMsgSend.MSG_SEND_IMMEDIATELY.getCode())) { wxMsg.setStatus(EnumMsgStatus.MSG_STATUS_SENDED.getCode()); - sendmsg(wxMsg); + return sendmsg(wxMsg); } else { //定时 wxMsg.setStatus(EnumMsgStatus.MSG_STATUS_NOT_SEND.getCode()); wxMsgMapper.updateByPrimaryKeySelective(wxMsg); return new ResultData(Result.SUCCESS, "短信会在预设时间发送"); - - } } - - return new ResultData(); } - private String parselabel(String tenantId, String label) { + private String parselabel(String tenantId, WxMsg wxmsg) { + String label = wxmsg.getLabel(); String[] arys = label.split(","); List tagids = new ArrayList<>(); for (int i = 0; i < arys.length; i++) { @@ -140,11 +211,6 @@ public class WxMsgServiceImpl implements WxMsgService { return ""; } - private String parseexcle(String tenantId, String excelpath) { - - return null; - } - @Override public void deleteById(Long id) { wxMsgMapper.deleteByPrimaryKey(id); @@ -152,6 +218,7 @@ public class WxMsgServiceImpl implements WxMsgService { public ResultData sendmsg(WxMsg wxMsg) { + logger.info("发送短信开始..."); //从短信配置中查询密钥 bid 等信息 WxMsgConfig wxMsgConfig = new WxMsgConfig(); wxMsgConfig.setTenantId(wxMsg.getTenantId()); @@ -159,6 +226,17 @@ public class WxMsgServiceImpl implements WxMsgService { if (wxMsgConfigs.size() == 0) return new ResultData(ErrorCode.MSG_SERVER_NOT_FIND, "您还未接入短信运营商,请联系平台管理员"); wxMsgConfig = wxMsgConfigs.get(0); + if(wxMsgConfig.getRemains()==0){ + logger.info("短信数量为0"); + return new ResultData(ErrorCode.MSG_SEND_ERROR.MSG_SUM_ZERO); + } + + if(wxMsgConfig.getRemains() listAsPage(WxMsgValidationcode record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxMsgValidationcodeMapper.findList(record)); @@ -150,14 +154,15 @@ public class WxMsgValidationcodeServiceImpl implements WxMsgValidationcodeServic params.put("data", data); params.put("sc", sc); } catch (Exception e) { - throw new RuntimeException("发送验证码失败"); + logger.info("短信AES/RSA解密失败"); + throw new MallinkException(ErrorCode.MSG_SEND_ERROR); } String requestUrl = "https://webapp.wiwide.com/apisms/send"; String result = HttpUtil.doPost(requestUrl, params); JSONObject jsonObjectResult = JSONObject.parseObject(result); String ret = jsonObjectResult.get("ret").toString(); - + String batchNo = jsonObjectResult.get("data").toString(); if (ret.equals("1")) { final IdWorker idWorker = IdWorker.get(); wxMsgValidationcode.setId(idWorker.nextId()); @@ -169,12 +174,29 @@ public class WxMsgValidationcodeServiceImpl implements WxMsgValidationcodeServic wxMsgValidationcode.setExpiretime(expiredate); wxMsgValidationcode.setCreatetime(createtime); wxMsgValidationcodeMapper.insertSelective(wxMsgValidationcode); + addMsgCallback(wxMsgValidationcode,batchNo); return new ResultData(Result.SUCCESS,"发送成功"); } return new ResultData(ErrorCode.MSG_SEND_ERROR.getCode(),"发送失败"); } + public void addMsgCallback(WxMsgValidationcode wxmsg, String batchNo){ + logger.info("验证码发送时主动添加回调记录开始..."); + String phone = wxmsg.getPhone(); + final IdWorker idWorker = IdWorker.get(); + WxMsgCallback wxMsgCallback = new WxMsgCallback(); + wxMsgCallback.setId(idWorker.nextId()); + wxMsgCallback.setPhone(phone); + wxMsgCallback.setTenantId(wxmsg.getTenantId()); + wxMsgCallback.setBatchNo(batchNo); + wxMsgCallback.setMsgId(wxmsg.getId()); + wxMsgCallback.setStatus(EnumMsgSendStatus.MSG_SEND_FAIL.getCode()); + wxMsgCallback.setCreatetime(new Date()); + wxMsgCallbackMapper.insertSelective(wxMsgCallback); + logger.info("验证码发送时主动添加回调记录结束..."); + } + @Override public ResultData hasvalidationcode(WxMsgValidationcode record) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index b0c520874..b3e928ce7 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -13,21 +13,22 @@ import com.iformall.mapper.*; import com.iformall.service.WxCUserService; import com.iformall.service.WxOrderService; import com.iformall.service.WxPayOrderService; +import com.iformall.service.WxScoreRulesService; import com.iformall.utils.RedisLock; -import org.apache.log4j.Logger; +import com.iformall.utils.Utility; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import java.util.Calendar; -import java.util.Date; -import java.util.List; +import java.util.*; @Service public class WxOrderServiceImpl implements WxOrderService { - private Logger logger = Logger.getLogger(getClass()); + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired RedisLock redisLock; @@ -65,6 +66,9 @@ public class WxOrderServiceImpl implements WxOrderService { @Autowired WxPayOrderService wxPayOrderService; + @Autowired + WxScoreRulesService wxScoreRulesService; + @Override public PageInfo listAsPage(WxOrder record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.findList(record)); @@ -74,25 +78,39 @@ public class WxOrderServiceImpl implements WxOrderService { private int getUserCouponOrderCount(WxCUser user, WxCoupon counpon) { // 用户购买的券包数量 // + Order 待支付 - // + couponOrder 待使用 + // + couponOrder ---待使用 int countOrder = 0, countCouponOrder = 0; WxOrder orderQ = new WxOrder(); + orderQ.setTenantId(user.getTenantId()); orderQ.setCouponId(counpon.getId()); orderQ.setCUserId(user.getId()); orderQ.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); try { - countOrder = wxOrderMapper.countList(orderQ); + if (counpon.getType().equals(EnumCouponType.COUPON_TINGCHE.getCode())) { + countOrder = wxOrderMapper.dayCountList(orderQ); + } else { + countOrder = wxOrderMapper.countList(orderQ); + } } catch (Exception e) { logger.error("购买是否超限-DB, couponId: " + counpon.getId() + ", e:" + e.getMessage()); throw new MallinkException(ErrorCode.ORDER_IS_FAIL); } - WxCouponOrder couponOrderQ = new WxCouponOrder(); - couponOrderQ.setCouponId(counpon.getId()); - couponOrderQ.setCUserId(user.getId()); - couponOrderQ.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode()); try { - countCouponOrder = wxCouponOrderMapper.countList(couponOrderQ); + if (counpon.getType().equals(EnumCouponType.COUPON_TINGCHE.getCode())) { + // 停车券 每日限领1张 + Map params = new HashMap(); + params.put("couponId", counpon.getId()); + params.put("cUserId", user.getId()); + countCouponOrder = wxCouponOrderMapper.dayCountCarList(params); + } else { + WxCouponOrder couponOrderQ = new WxCouponOrder(); + couponOrderQ.setTenantId(user.getTenantId()); + couponOrderQ.setCouponId(counpon.getId()); + couponOrderQ.setCUserId(user.getId()); + //////couponOrderQ.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode()); + countCouponOrder = wxCouponOrderMapper.countList(couponOrderQ); + } } catch (Exception e) { logger.error("购买是否超限-DB, couponId: " + counpon.getId() + ", e:" + e.getMessage()); throw new MallinkException(ErrorCode.ORDER_IS_FAIL); @@ -135,6 +153,7 @@ public class WxOrderServiceImpl implements WxOrderService { throw new MallinkException(ErrorCode.ORDER_IS_LIMITED); } + try { // 减库存 coupon.setRemainInventory(coupon.getRemainInventory() - 1); @@ -230,7 +249,15 @@ public class WxOrderServiceImpl implements WxOrderService { // body // tenant_id + merchant_id + title + subtitle - String bodyStr = coupon.getTitle() + "-" + coupon.getSubTitle(); + String bodyStr = ""; + try { + bodyStr = Utility.substring(wxMerchant.getName(), Math.min(64, wxMerchant.getName().getBytes().length), "utf-8") + + Utility.substring(coupon.getTitle(), Math.min(62, coupon.getTitle().getBytes().length), "utf-8"); + } catch (Exception e) { + logger.error("body:" + e.getMessage()); + bodyStr = wxMerchant.getName() + "-" + EnumCouponType.getEnum(coupon.getType()); + } + WxOrder record = new WxOrder(); record.setId(orderNumber); @@ -507,7 +534,7 @@ public class WxOrderServiceImpl implements WxOrderService { // 成长值 计算 try { - wxCUserService.scoreCalculate(user.getTenantId(), user.getId()); + wxScoreRulesService.payAddScore(updateOrder); } catch (Exception e) { logger.error("成长值:" + e.getMessage()); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxParkServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxParkServiceImpl.java index dc340d76b..fa1f93781 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxParkServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxParkServiceImpl.java @@ -6,12 +6,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxPark; import com.iformall.mapper.WxParkMapper; import com.iformall.service.WxParkService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxParkServiceImpl implements WxParkService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxParkMapper wxParkMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayAccountServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayAccountServiceImpl.java index 719426b17..761c77a6a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayAccountServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayAccountServiceImpl.java @@ -5,12 +5,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxPayAccount; import com.iformall.mapper.WxPayAccountMapper; import com.iformall.service.WxPayAccountService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxPayAccountServiceImpl implements WxPayAccountService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxPayAccountMapper wxPayAccountMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 3df10fa5b..6c844c844 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -1,13 +1,11 @@ package com.iformall.service.impl; -import java.text.ParseException; -import java.util.*; - import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; +import com.iformall.common.IdWorker; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; @@ -17,19 +15,24 @@ import com.iformall.mapper.*; import com.iformall.pay.*; import com.iformall.service.WxOrderService; import com.iformall.service.WxPayOrderService; -import com.iformall.utils.*; +import com.iformall.utils.BeanUtils; +import com.iformall.utils.MapUtil; +import com.iformall.utils.Utility; +import com.iformall.utils.XmlUtil; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.iformall.common.IdWorker; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import java.text.ParseException; +import java.util.*; + @Service public class WxPayOrderServiceImpl implements WxPayOrderService { - - private Logger logger = Logger.getLogger(getClass()); + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxAppinfoMapper wxAppinfoMapper; @@ -148,7 +151,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setShare(isShare.getCode()); if (isShare == EnumPayShare.YES) { // 分账金额 - Double dChargeFee = Math.ceil(record.getPayAmount()*1.0D*payAccount.getRate()/1000); + Double dChargeFee = Math.ceil(record.getPayAmount() * 1.0D * payAccount.getRate() / 1000); Integer share_amount = record.getPayAmount() - dChargeFee.intValue(); record.setShareAmount(share_amount); } @@ -184,7 +187,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { wxPayOrderP.setProduct_id(String.valueOf(order.getId())); // 订单ID wxPayOrderP.setTime_start(Utility.getDataFormatStringYYYYMMDDHHmmss(currentDate)); Date futureDate = new Date(); - futureDate.setTime(currentDate.getTime() + 15*60*1000); + futureDate.setTime(currentDate.getTime() + 15 * 60 * 1000); wxPayOrderP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 Map payOrderMap = BeanUtils.toStringMap(wxPayOrderP); wxPayOrderP.setSign(WxPayment.createSign(payOrderMap, payAccount.getApiKey())); @@ -217,7 +220,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { returnMap.put("nonceStr", noncestr); returnMap.put("package", "prepay_id=" + prepay_id); returnMap.put("paySign", signAgent); - logger.info("back to UI: " +returnMap.toString()); + logger.info("back to UI: " + returnMap.toString()); return new ResultData(Result.SUCCESS, "创建支付订单成功", returnMap); } else { String errMsg = ""; @@ -257,10 +260,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { wxPayOrderSP.setProduct_id(String.valueOf(order.getId())); // 订单ID wxPayOrderSP.setTime_start(Utility.getDataFormatStringYYYYMMDDHHmmss(currentDate)); Date futureDate = new Date(); - futureDate.setTime(currentDate.getTime() + 15*60*1000); + futureDate.setTime(currentDate.getTime() + 15 * 60 * 1000); wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 wxPayOrderSP.setSign_type("HMAC-SHA256"); - if(isShare == EnumPayShare.YES) { + if (isShare == EnumPayShare.YES) { wxPayOrderSP.setProfit_sharing("Y"); } Map payOrderMap = BeanUtils.toStringMap(wxPayOrderSP); @@ -296,7 +299,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { returnMap.put("package", "prepay_id=" + prepay_id); returnMap.put("paySign", signAgent); returnMap.put("signType", "HMAC-SHA256"); - logger.info("back to UI: " +returnMap.toString()); + logger.info("back to UI: " + returnMap.toString()); return new ResultData(Result.SUCCESS, "创建支付订单成功", returnMap); } else { String errMsg = ""; @@ -333,7 +336,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { wxPayOrderP.setProduct_id(String.valueOf(order.getId())); // 订单ID wxPayOrderP.setTime_start(Utility.getDataFormatStringYYYYMMDDHHmmss(currentDate)); Date futureDate = new Date(); - futureDate.setTime(currentDate.getTime() + 15*60*1000); + futureDate.setTime(currentDate.getTime() + 15 * 60 * 1000); wxPayOrderP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 wxPayOrderP.setSign(WxPayment.createSign(BeanUtils.toStringMap(wxPayOrderP), payAccount.getApiKey())); Map returnMap = BeanUtils.toStringMap(wxPayOrderP); @@ -347,9 +350,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } // TODO + /** * 微信订单查询 - * */ @Override public ResultData payOrderQuery(WxAppinfo appInfo, WxPayOrder record) { @@ -414,7 +417,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } } catch (RuntimeException e) { throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } catch (Exception e){ + } catch (Exception e) { throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); } } else { @@ -480,7 +483,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } } catch (RuntimeException e) { throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } catch (Exception e){ + } catch (Exception e) { throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); } } @@ -829,7 +832,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { payOrderQ.setTenantId(order.getTenantId()); payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_WAY_WAIT.getCode()); List payOrders = wxPayOrderMapper.select(payOrderQ); - for(WxPayOrder payOrder: payOrders) { + for (WxPayOrder payOrder : payOrders) { payOrderClose(appInfo, payOrder); } } @@ -910,10 +913,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { wxPayOrderMapper.deleteByPrimaryKey(id); } - public static void main(String [] args) { + public static void main(String[] args) { Integer v = 50; Integer rate = 6; - Double dChargeFee = Math.ceil(v*1.0D*6/1000); + Double dChargeFee = Math.ceil(v * 1.0D * 6 / 1000); Integer share_amount = v - dChargeFee.intValue(); System.out.println("share value " + share_amount); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java index 341195e3b..d30d2e764 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java @@ -20,7 +20,8 @@ import com.iformall.pay.WxProfitSharingQueryP; import com.iformall.service.WxProfitSharingOrderService; import com.iformall.utils.BeanUtils; import com.iformall.utils.Utility; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @@ -30,7 +31,7 @@ import org.springframework.transaction.annotation.Transactional; @Service public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderService { - private Logger logger = Logger.getLogger(getClass()); + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxProfitSharingOrderMapper wxProfitSharingOrderMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingReceiverServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingReceiverServiceImpl.java index 650528a27..4261e6128 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingReceiverServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingReceiverServiceImpl.java @@ -1,18 +1,20 @@ package com.iformall.service.impl; -import java.util.*; - import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; +import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxPayAccount; import com.iformall.domain.po.WxProfitSharingReceiver; -import com.iformall.enums.*; +import com.iformall.enums.EnumAppType; +import com.iformall.enums.EnumProfitSharingReceiverStatus; +import com.iformall.enums.EnumProfitSharingReceiverType; +import com.iformall.enums.EnumProfitSharingType; import com.iformall.mapper.WxAppinfoMapper; import com.iformall.mapper.WxPayAccountMapper; import com.iformall.mapper.WxProfitSharingReceiverMapper; @@ -22,17 +24,18 @@ import com.iformall.pay.WxProfitSharingReceiverP; import com.iformall.service.WxProfitSharingReceiverService; import com.iformall.utils.BeanUtils; import com.iformall.utils.Utility; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.iformall.common.IdWorker; +import java.util.Date; +import java.util.Map; @Service public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiverService { - - private Logger logger = Logger.getLogger(WxCouponOrderServiceImpl.class); + private final Logger logger = LoggerFactory.getLogger(this.getClass()); final JSONObject errorMap = JSON.parseObject("{" + "\"SYSTEMERROR\":{\"detail\":\"接口返回错误\",\"reason\":\"系统超时\",\"resolution\":\"系统异常,请用相同参数重新调用\"}," + @@ -44,7 +47,6 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv "\"USER_NOTEXIST\":{\"detail\":\"分账接受方不存在\",\"reason\":\"分账接受方不存在\",\"resolution\":\"请确认分账接收方类型或者账号无误后重试\"}}"); - @Autowired WxProfitSharingReceiverMapper wxProfitSharingReceiverMapper; @Autowired @@ -67,7 +69,7 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv if (record.getId() == null) { //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); final IdWorker idWorker = IdWorker.get(); - record.setId(idWorker.nextId()); + record.setId(idWorker.nextId()); wxProfitSharingReceiverMapper.insertSelective(record); } else { wxProfitSharingReceiverMapper.updateByPrimaryKeySelective(record); @@ -125,16 +127,16 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv JSONObject receiverJSON = new JSONObject(); - receiverJSON.put("type",EnumProfitSharingReceiverType.getEnum(receiver.getReceiverType()).getMessage()); - receiverJSON.put("account",receiver.getReceiverAccount()); - receiverJSON.put("name",receiver.getTrueName()); + receiverJSON.put("type", EnumProfitSharingReceiverType.getEnum(receiver.getReceiverType()).getMessage()); + receiverJSON.put("account", receiver.getReceiverAccount()); + receiverJSON.put("name", receiver.getTrueName()); wxProfitSharingReceiverP.setReceiver(receiverJSON.toJSONString()); String response; try { wxProfitSharingReceiverP.setSign(WxPayment.createSignHMAC(BeanUtils.toStringMap(wxProfitSharingReceiverP), payAccount.getApiKey())); response = WxProfitSharing.addReceiver(BeanUtils.toStringMap(wxProfitSharingReceiverP)); - }catch (Exception e) { + } catch (Exception e) { logger.error(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage() + e.getMessage()); return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED, e.getMessage()); } @@ -151,7 +153,7 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), returnMap.get("err_code_des")); } - if (!WxPayment.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ + if (!WxPayment.verifyNotifyHMAC(returnMap, payAccount.getApiKey())) { logger.error(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage() + "verifyNotifyHMAC"); return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage()); } @@ -191,15 +193,15 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv wxProfitSharingReceiverP.setSign_type("HMAC-SHA256"); JSONObject receiverJSON = new JSONObject(); - receiverJSON.put("type",EnumProfitSharingReceiverType.getEnum(receiver.getReceiverType()).getMessage()); - receiverJSON.put("account",receiver.getReceiverAccount()); + receiverJSON.put("type", EnumProfitSharingReceiverType.getEnum(receiver.getReceiverType()).getMessage()); + receiverJSON.put("account", receiver.getReceiverAccount()); wxProfitSharingReceiverP.setReceiver(receiverJSON.toJSONString()); String response; try { wxProfitSharingReceiverP.setSign(WxPayment.createSignHMAC(BeanUtils.toStringMap(wxProfitSharingReceiverP), payAccount.getApiKey())); response = WxProfitSharing.delReceiver(BeanUtils.toStringMap(wxProfitSharingReceiverP)); - }catch (Exception e) { + } catch (Exception e) { logger.error(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getMessage() + e.getMessage()); return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED, e.getMessage()); } @@ -222,7 +224,7 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), returnMap.get("result_msg")); } - if (!WxPayment.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ + if (!WxPayment.verifyNotifyHMAC(returnMap, payAccount.getApiKey())) { logger.error(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getMessage()); return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), "verifyNotifyHMAC"); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingResultServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingResultServiceImpl.java index 68b33419b..e3a362f22 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingResultServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingResultServiceImpl.java @@ -5,12 +5,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxProfitSharingResult; import com.iformall.mapper.WxProfitSharingResultMapper; import com.iformall.service.WxProfitSharingResultService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxProfitSharingResultServiceImpl implements WxProfitSharingResultService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxProfitSharingResultMapper wxProfitSharingResultMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java index 068a0ce3b..2999a2d24 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java @@ -1,12 +1,11 @@ package com.iformall.service.impl; -import java.util.*; - import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; +import com.iformall.common.IdWorker; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; @@ -24,24 +23,26 @@ import com.iformall.utils.CipherUtil; import com.iformall.utils.Utility; import com.iformall.utils.XmlUtil; import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.iformall.common.IdWorker; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import java.util.*; + @Service public class WxRefundOrderServiceImpl implements WxRefundOrderService { - private Logger logger = Logger.getLogger(getClass()); + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxAppinfoMapper wxAppinfoMapper; - - @Autowired + + @Autowired WxRefundOrderMapper wxRefundOrderMapper; - @Autowired + @Autowired WxOrderMapper wxOrderMapper; @Autowired @@ -232,8 +233,8 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) public ResultData createRefundOrder(boolean isReal, WxAppinfo appInfo, Long couponOrderId, EnumRefundWay refundWay, 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); } @@ -241,8 +242,8 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { if (refundWay == EnumRefundWay.B) { logger.info("B端发起退款: bUserId-" + bUserId); - if (bUserId == null || bUserId ==0 ) { - logger.error("B端用户不存在:"+ bUserId); + if (bUserId == null || bUserId == 0) { + logger.error("B端用户不存在:" + bUserId); throw new MallinkException(ErrorCode.USER_IS_EMPTY); } // B端用户退款检查一下商户 @@ -375,7 +376,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { // 退款订单 try { int sqlRow = wxRefundOrderMapper.insertSelective(record); - if(sqlRow != 1) { + if (sqlRow != 1) { logger.error("退款订单数据库插入出错: " + record.toString()); throw new MallinkException(ErrorCode.DB_FAIL); } @@ -610,6 +611,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { /** * 微信退款查询 + * * @param appInfo * @param record */ @@ -660,8 +662,9 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { /** * 微信退款结果通知 - * @param paramMap 异步通知参数 - * @param payWay 支付方式 + * + * @param paramMap 异步通知参数 + * @param payWay 支付方式 * @return */ @Override @@ -675,23 +678,23 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { // 普通商户号 WxAppinfo appinfo = wxAppinfoMapper.findByAppId(appId); if (appinfo == null) { - logger.error("未找到appid信息:"+appId); + logger.error("未找到appid信息:" + appId); throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); } WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appinfo.getPayId()); if (payAccount == null) { - logger.error("未找到mch_id信息:"+mchId); + logger.error("未找到mch_id信息:" + mchId); throw new MallinkException(ErrorCode.MCH_INFO_NOT_FOUND); } if (!mchId.equalsIgnoreCase(payAccount.getMchId())) { - logger.error("mch_id不对应:"+mchId + ",account:" + payAccount.getMchId()); + logger.error("mch_id不对应:" + mchId + ",account:" + payAccount.getMchId()); throw new MallinkException(ErrorCode.MCH_INFO_NOT_EQUAL); } String partnerKey = payAccount.getApiKey(); try { if (payWay == EnumPayWay.PAY_WAY_WEAPP) { if (!"SUCCESS".equals(paramMap.get("return_code"))) { - logger.warn("notify refund, wxpay status not success, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + logger.warn("notify refund, wxpay status not success, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "订单状态码非SUCCESS"); @@ -706,15 +709,15 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { Long payOrderId = Long.valueOf(payOrderNo); WxPayOrder payOrder = wxPayOrderMapper.selectByPrimaryKey(payOrderId); if (payOrder == null) { - logger.warn("notify refund, wxpay check pay order not exists, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + logger.warn("notify refund, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "支付订单不存在"); return XmlUtil.getRequestXml(resultMap); } // 验证支付金额 - if(!reqMap.get("total_fee").equals(payOrder.getPayAmount().toString())) { - logger.warn("notify refund, wxpay check total_fee is invalid, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + if (!reqMap.get("total_fee").equals(payOrder.getPayAmount().toString())) { + logger.warn("notify refund, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "支付订单总金额不一致"); @@ -724,23 +727,23 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { Long refundOrderId = Long.valueOf(refundIdStr); WxRefundOrder refundOrder = wxRefundOrderMapper.selectByPrimaryKey(refundOrderId); if (refundOrder == null) { - logger.warn("notify refund, wxpay check pay order not exists, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + logger.warn("notify refund, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "退款订单不存在"); return XmlUtil.getRequestXml(resultMap); } // 验证支付金额 - if(!reqMap.get("total_fee").equals(refundOrder.getTotalFee().toString())) { - logger.warn("notify refund, wxpay check total_fee is invalid, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + if (!reqMap.get("total_fee").equals(refundOrder.getTotalFee().toString())) { + logger.warn("notify refund, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "订单总金额不一致"); return XmlUtil.getRequestXml(resultMap); } // 验证退款金额 - if(!reqMap.get("refund_fee").equals(refundOrder.getRefundFee().toString())) { - logger.warn("notify refund, wxpay check refund_fee is invalid, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + if (!reqMap.get("refund_fee").equals(refundOrder.getRefundFee().toString())) { + logger.warn("notify refund, wxpay check refund_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "退款总金额不一致"); @@ -749,40 +752,40 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { // 处理支付成功 handleRefundSuccess(refundOrder, reqMap.get("transaction_id"), reqMap.get("refund_id")); - logger.info("notify refund, wxpay checksign success, paramMap:{}, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + logger.info("notify refund, wxpay checksign success, paramMap:{}, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "SUCCESS"); resultMap.put("return_msg", "OK"); return XmlUtil.getRequestXml(resultMap); } } catch (RuntimeException e) { - logger.warn("notify refund paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); + logger.warn("notify refund paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), e.getMessage()); } catch (Exception e) { - logger.warn("notify refund, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); + logger.warn("notify refund, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), e.getMessage()); } } else { // 服务号回调 WxAppinfo appinfo = wxAppinfoMapper.findByAppId(subAppId); if (appinfo == null) { - logger.error("未找到appid信息:"+appId); + logger.error("未找到appid信息:" + appId); throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); } WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appinfo.getPayId()); if (payAccount == null) { - logger.error("未找到mch_id信息:"+mchId); + logger.error("未找到mch_id信息:" + mchId); throw new MallinkException(ErrorCode.MCH_INFO_NOT_FOUND); } if (!mchId.equalsIgnoreCase(payAccount.getMchId())) { - logger.error("mch_id不对应:"+mchId + ",account:" + payAccount.getMchId()); + logger.error("mch_id不对应:" + mchId + ",account:" + payAccount.getMchId()); throw new MallinkException(ErrorCode.MCH_INFO_NOT_EQUAL); } String partnerKey = payAccount.getApiKey(); try { if (payWay == EnumPayWay.PAY_WAY_WEAPP) { if (!"SUCCESS".equals(paramMap.get("return_code"))) { - logger.warn("notify order, wxpay status not success, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + logger.warn("notify order, wxpay status not success, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "订单状态码非SUCCESS"); @@ -804,15 +807,15 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { Long payOrderId = Long.valueOf(payOrderNo); WxPayOrder payOrder = wxPayOrderMapper.selectByPrimaryKey(payOrderId); if (payOrder == null) { - logger.warn("notify refund, wxpay check pay order not exists, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + logger.warn("notify refund, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "支付订单不存在"); return XmlUtil.getRequestXml(resultMap); } // 验证支付金额 - if(!reqMap.get("total_fee").equals(payOrder.getPayAmount().toString())) { - logger.warn("notify refund, wxpay check total_fee is invalid, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + if (!reqMap.get("total_fee").equals(payOrder.getPayAmount().toString())) { + logger.warn("notify refund, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "支付订单总金额不一致"); @@ -822,23 +825,23 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { Long refundOrderId = Long.valueOf(refundIdStr); WxRefundOrder refundOrder = wxRefundOrderMapper.selectByPrimaryKey(refundOrderId); if (refundOrder == null) { - logger.warn("notify refund, wxpay check pay order not exists, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + logger.warn("notify refund, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "退款订单不存在"); return XmlUtil.getRequestXml(resultMap); } // 验证支付金额 - if(!reqMap.get("total_fee").equals(refundOrder.getTotalFee().toString())) { - logger.warn("notify refund, wxpay check total_fee is invalid, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + if (!reqMap.get("total_fee").equals(refundOrder.getTotalFee().toString())) { + logger.warn("notify refund, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "订单总金额不一致"); return XmlUtil.getRequestXml(resultMap); } // 验证退款金额 - if(!reqMap.get("refund_fee").equals(refundOrder.getRefundFee().toString())) { - logger.warn("notify refund, wxpay check refund_fee is invalid, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + if (!reqMap.get("refund_fee").equals(refundOrder.getRefundFee().toString())) { + logger.warn("notify refund, wxpay check refund_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "退款总金额不一致"); @@ -847,17 +850,17 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { // 处理支付成功 handleRefundSuccess(refundOrder, reqMap.get("transaction_id"), reqMap.get("refund_id")); - logger.info("notify refund, wxpay checksign success, paramMap:{}, paramMap: "+reqMap.toString()+ ", payWay:" + payWay.toString()); + logger.info("notify refund, wxpay checksign success, paramMap:{}, paramMap: " + reqMap.toString() + ", payWay:" + payWay.toString()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "SUCCESS"); resultMap.put("return_msg", "OK"); return XmlUtil.getRequestXml(resultMap); } } catch (RuntimeException e) { - logger.warn("notify refund, wepay checksign error, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); + logger.warn("notify refund, wepay checksign error, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR); } catch (Exception e) { - logger.warn("notify refund, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); + logger.warn("notify refund, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), e.getMessage()); } } @@ -886,7 +889,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { WxOrder order = wxOrderMapper.selectByPrimaryKey(refundOrder.getOrderId()); if (order == null) { - logger.error("pay success handle, order " + refundOrder.getOrderId() +" not found , refundId : " + refundOrder.getId()); + logger.error("pay success handle, order " + refundOrder.getOrderId() + " not found , refundId : " + refundOrder.getId()); throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); } @@ -946,7 +949,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { if (record.getId() == null) { //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); final IdWorker idWorker = IdWorker.get(); - record.setId(idWorker.nextId()); + record.setId(idWorker.nextId()); wxRefundOrderMapper.insertSelective(record); } else { wxRefundOrderMapper.updateByPrimaryKeySelective(record); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index 1fd6ea47e..63bb4ba99 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -6,11 +6,14 @@ import com.iformall.common.IdWorker; import com.iformall.domain.po.WxRentContract; import com.iformall.mapper.WxRentContractMapper; import com.iformall.service.WxRentContractService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class WxRentContractServiceImpl implements WxRentContractService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxRentContractMapper wxRentContractMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxScoreHistoryServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxScoreHistoryServiceImpl.java index 2f1e11b6b..1a3195451 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxScoreHistoryServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxScoreHistoryServiceImpl.java @@ -5,12 +5,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxScoreHistory; import com.iformall.mapper.WxScoreHistoryMapper; import com.iformall.service.WxScoreHistoryService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxScoreHistoryServiceImpl implements WxScoreHistoryService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxScoreHistoryMapper wxScoreHistoryMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java index 071065367..bd47854c2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java @@ -1,27 +1,34 @@ package com.iformall.service.impl; -import java.util.*; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; -import com.iformall.domain.po.WxCUser; -import com.iformall.domain.po.WxCUserBasicInfo; -import com.iformall.domain.po.WxScoreRules; +import com.iformall.common.IdWorker; +import com.iformall.domain.po.*; +import com.iformall.enums.EnumScoreType; +import com.iformall.mapper.WxScoreHistoryMapper; import com.iformall.mapper.WxScoreRulesMapper; import com.iformall.service.WxCUserBasicInfoService; import com.iformall.service.WxCUserService; import com.iformall.service.WxScoreRulesService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.iformall.common.IdWorker; + +import java.util.Date; +import java.util.List; @Service public class WxScoreRulesServiceImpl implements WxScoreRulesService { - - @Autowired + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired WxScoreRulesMapper wxScoreRulesMapper; - @Autowired + @Autowired + WxScoreHistoryMapper wxScoreHistoryMapper; + @Autowired WxCUserService wxCUserService; - @Autowired + @Autowired WxCUserBasicInfoService wxCUserBasicInfoService; @@ -30,6 +37,31 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxScoreRulesMapper.findList(record)); } + @Override + public WxScoreRules getScoreRules(String tenantId) { + WxScoreRules scoreRules = new WxScoreRules(); + scoreRules.setTenantId(tenantId); + List list = wxScoreRulesMapper.findList(scoreRules); + if (list.size() > 0) { + return list.get(0); + } + // 如果成长值规则不存在,启用默认值 + final IdWorker idWorker = IdWorker.get(); + scoreRules.setId(idWorker.nextId()); + scoreRules.setLoginCount(1); + scoreRules.setLoginScoreNumber(10); + scoreRules.setConsumptionAmount(1); + scoreRules.setConsumptionScoreNumber(50); + scoreRules.setBindCarNumber(1); + scoreRules.setBindCarScoreNumber(100); + scoreRules.setWifiNumber(1); + scoreRules.setWifiScoreNumber(10); + scoreRules.setPersonScoreNumber(100); + scoreRules.setPhoneScoreNumber(100); + wxScoreRulesMapper.insertSelective(scoreRules); + return scoreRules; + } + @Override public WxScoreRules getById(Long id) { return wxScoreRulesMapper.selectByPrimaryKey(id); @@ -40,7 +72,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { if (record.getId() == null) { //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); final IdWorker idWorker = IdWorker.get(); - record.setId(idWorker.nextId()); + record.setId(idWorker.nextId()); wxScoreRulesMapper.insertSelective(record); } else { wxScoreRulesMapper.updateByPrimaryKeySelective(record); @@ -52,66 +84,170 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { wxScoreRulesMapper.deleteByPrimaryKey(id); } - - @Override - public int loginAddScore(String tenantId, Long cUserId) { - int addScoreNumber = 0; - WxScoreRules scoreRules = new WxScoreRules(); - scoreRules.setTenantId(tenantId); - List list = wxScoreRulesMapper.findList(scoreRules); - if (list.isEmpty()) { - return addScoreNumber; + private void updateScore(Long userId, int addedScoreNumber) { + // 1. 获取cUser + WxCUser wxCUser = wxCUserService.getById(userId); + if (wxCUser.getScore() == null) { + wxCUser.setScore(0); } - scoreRules = list.get(0); - addScoreNumber = scoreRules.getLoginScoreNumber(); - WxCUser wxCUser = wxCUserService.getById(cUserId); - wxCUser.setScore(wxCUser.getScore() + addScoreNumber); + + int newScore = wxCUser.getScore() + addedScoreNumber; + + // 2. update score + wxCUser.setScore(newScore); wxCUserService.saveOrUpdate(wxCUser); - //修改basic表积分 + // 3. 修改basic points if (wxCUser.getPhone() != null) { //修改basic表积分 WxCUserBasicInfo wxCUserBasicInfo = new WxCUserBasicInfo(); wxCUserBasicInfo.setId(wxCUser.getId()); - wxCUserBasicInfo.setTenantId(tenantId); + wxCUserBasicInfo.setTenantId(wxCUser.getTenantId()); wxCUserBasicInfo.setPhone(wxCUser.getPhone()); - wxCUserBasicInfo.setPoins(wxCUser.getScore()); + wxCUserBasicInfo.setPoins(newScore); wxCUserBasicInfoService.updateScore(wxCUserBasicInfo); } + } + + + @Override + public int loginAddScore(WxCUser user) { + int addScoreNumber = 0; + // 1. score_rules + WxScoreRules scoreRules = getScoreRules(user.getTenantId()); + + // 2. 增长的成长值 + addScoreNumber = scoreRules.getLoginScoreNumber(); + updateScore(user.getId(), addScoreNumber); + + // 3. 记录历史 + final IdWorker idWorker = IdWorker.get(); + WxScoreHistory history = new WxScoreHistory(); + history.setId(idWorker.nextId()); + history.setTenantId(user.getTenantId()); + history.setCUserId(user.getId()); + history.setCreateDate(new Date()); + history.setScoreType(EnumScoreType.LOGIN.getCode()); + history.setScoreAmount(addScoreNumber); + wxScoreHistoryMapper.insert(history); + return addScoreNumber; } @Override - public int payAddScore(String tenantId, Long cUserId,int payPrice) { - if(payPrice==0){ - return 0; - } + public int payAddScore(WxOrder order) { int addScoreNumber = 0; - WxScoreRules scoreRules = new WxScoreRules(); - scoreRules.setTenantId(tenantId); - List list = wxScoreRulesMapper.findList(scoreRules); - if (list.isEmpty()) { + // 订单金额为0时不计入 + if (order.getPayment() == 0) return 0; - } - scoreRules = list.get(0); - int priceCondition = scoreRules.getConsumptionAmount(); + // 1. 获取score rules + WxScoreRules scoreRules = getScoreRules(order.getTenantId()); + + // 2. 获取成长值 + int priceCondition = scoreRules.getConsumptionAmount() * 100; // 元->分 int baseScore = scoreRules.getConsumptionScoreNumber();//消费增长积分 - addScoreNumber = (payPrice/priceCondition)*baseScore; - WxCUser wxCUser = wxCUserService.getById(cUserId); - wxCUser.setScore(wxCUser.getScore() + addScoreNumber); - wxCUserService.saveOrUpdate(wxCUser); + // 3. 计算成长值 + Long dScoreT = Math.round(order.getPayment() * 1.0d / priceCondition * baseScore); + addScoreNumber = dScoreT.intValue(); - //修改basic表积分 - if (wxCUser.getPhone() != null) { - //修改basic表积分 - WxCUserBasicInfo wxCUserBasicInfo = new WxCUserBasicInfo(); - wxCUserBasicInfo.setId(wxCUser.getId()); - wxCUserBasicInfo.setTenantId(tenantId); - wxCUserBasicInfo.setPhone(wxCUser.getPhone()); - wxCUserBasicInfo.setPoins(wxCUser.getScore()); - wxCUserBasicInfoService.updateScore(wxCUserBasicInfo); - } + // 4. 增长的成长值 + updateScore(order.getCUserId(), addScoreNumber); + + // 5. 记录历史 + final IdWorker idWorker = IdWorker.get(); + WxScoreHistory history = new WxScoreHistory(); + history.setId(idWorker.nextId()); + history.setTenantId(order.getTenantId()); + history.setCUserId(order.getCUserId()); + history.setCreateDate(new Date()); + history.setScoreType(EnumScoreType.CONSUMPTION.getCode()); + history.setOrderId(order.getId()); + history.setPayType(order.getPaymentType()); + history.setPayAmount(order.getPayment()); + history.setScoreAmount(addScoreNumber); + wxScoreHistoryMapper.insert(history); + return addScoreNumber; + } + + @Override + public int bindCarAddScore(WxCUserCar userCar) { + int addScoreNumber = 0; + // 1. 获取score rules + WxScoreRules scoreRules = getScoreRules(userCar.getTenantId()); + + // 2. 获取成长值 + addScoreNumber = scoreRules.getBindCarScoreNumber(); + + // 3. 增长的成长值 + updateScore(userCar.getCUserId(), addScoreNumber); + + // 4. 记录历史 + final IdWorker idWorker = IdWorker.get(); + WxScoreHistory history = new WxScoreHistory(); + history.setId(idWorker.nextId()); + history.setTenantId(userCar.getTenantId()); + history.setCUserId(userCar.getCUserId()); + history.setCreateDate(new Date()); + history.setScoreType(EnumScoreType.BINDCAR.getCode()); + history.setScoreAmount(addScoreNumber); + wxScoreHistoryMapper.insert(history); + return addScoreNumber; + } + + @Override + public int wifiAddScore() { + int addScoreNumber = 0; + return addScoreNumber; + } + + @Override + public int personAddScore(WxCUser user) { + int addScoreNumber = 0; + // 1. 获取score rules + WxScoreRules scoreRules = getScoreRules(user.getTenantId()); + + // 2. 获取成长值 + addScoreNumber = scoreRules.getPersonScoreNumber(); + + // 3. 增长的成长值 + updateScore(user.getId(), addScoreNumber); + + // 4. 记录历史 + final IdWorker idWorker = IdWorker.get(); + WxScoreHistory history = new WxScoreHistory(); + history.setId(idWorker.nextId()); + history.setTenantId(user.getTenantId()); + history.setCUserId(user.getId()); + history.setCreateDate(new Date()); + history.setScoreType(EnumScoreType.WECHAT_PERSION.getCode()); + history.setScoreAmount(addScoreNumber); + wxScoreHistoryMapper.insert(history); + return addScoreNumber; + } + + @Override + public int phoneAddScore(WxCUser user) { + int addScoreNumber = 0; + // 1. 获取score rules + WxScoreRules scoreRules = getScoreRules(user.getTenantId()); + + // 2. 获取成长值 + addScoreNumber = scoreRules.getPhoneScoreNumber(); + + // 3. 增长的成长值 + updateScore(user.getId(), addScoreNumber); + + // 4. 记录历史 + final IdWorker idWorker = IdWorker.get(); + WxScoreHistory history = new WxScoreHistory(); + history.setId(idWorker.nextId()); + history.setTenantId(user.getTenantId()); + history.setCUserId(user.getId()); + history.setCreateDate(new Date()); + history.setScoreType(EnumScoreType.WECHAT_PHONE.getCode()); + history.setScoreAmount(addScoreNumber); + wxScoreHistoryMapper.insert(history); return addScoreNumber; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxScoreValidityPeriodServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxScoreValidityPeriodServiceImpl.java index 0f435d114..fc1bf536b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxScoreValidityPeriodServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxScoreValidityPeriodServiceImpl.java @@ -5,12 +5,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxScoreValidityPeriod; import com.iformall.mapper.WxScoreValidityPeriodMapper; import com.iformall.service.WxScoreValidityPeriodService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxScoreValidityPeriodServiceImpl implements WxScoreValidityPeriodService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxScoreValidityPeriodMapper wxScoreValidityPeriodMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java index 728c7e650..7574998c3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java @@ -10,12 +10,15 @@ import com.iformall.domain.po.WxShop; import com.iformall.enums.EnumShopStatus; import com.iformall.mapper.WxShopMapper; import com.iformall.service.WxShopService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxShopServiceImpl implements WxShopService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxShopMapper wxShopMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxTagsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxTagsServiceImpl.java index 38d20d2bb..4f5d04cd9 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxTagsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxTagsServiceImpl.java @@ -6,12 +6,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxTags; import com.iformall.mapper.WxTagsMapper; import com.iformall.service.WxTagsService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxTagsServiceImpl implements WxTagsService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxTagsMapper wxTagsMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java index f2631372f..c3e0746f2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxTemplateMsgServiceImpl.java @@ -5,12 +5,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxTemplateMsg; import com.iformall.mapper.WxTemplateMsgMapper; import com.iformall.service.WxTemplateMsgService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxTemplateMsgServiceImpl implements WxTemplateMsgService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxTemplateMsgMapper wxTemplateMsgMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxUserChannelServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxUserChannelServiceImpl.java index 821e0896c..7e6442237 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxUserChannelServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxUserChannelServiceImpl.java @@ -6,12 +6,15 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxUserChannel; import com.iformall.mapper.WxUserChannelMapper; import com.iformall.service.WxUserChannelService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxUserChannelServiceImpl implements WxUserChannelService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxUserChannelMapper wxUserChannelMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxUserCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxUserCouponServiceImpl.java index 2098f1917..b3f623816 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxUserCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxUserCouponServiceImpl.java @@ -5,6 +5,8 @@ import com.iformall.domain.po.WxCouponOrder; import com.iformall.mapper.WxCouponMapper; import com.iformall.mapper.WxCouponOrderMapper; import com.iformall.service.WxUserCouponService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -18,6 +20,7 @@ import java.util.stream.Collectors; */ @Service public class WxUserCouponServiceImpl implements WxUserCouponService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private WxCouponOrderMapper wxCouponOrderMapper; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxUserVisitServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxUserVisitServiceImpl.java index 3408e6613..d0dc48b9e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxUserVisitServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxUserVisitServiceImpl.java @@ -7,12 +7,15 @@ import com.iformall.domain.po.WxUserVisit; import com.iformall.domain.vo.TouchUsersReportVo; import com.iformall.mapper.WxUserVisitMapper; import com.iformall.service.WxUserVisitService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; @Service public class WxUserVisitServiceImpl implements WxUserVisitService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxUserVisitMapper wxUserVisitMapper; diff --git a/mallinkService/src/main/java/com/iformall/utils/DateUtils.java b/mallinkService/src/main/java/com/iformall/utils/DateUtils.java index 17242ed70..423f664b9 100755 --- a/mallinkService/src/main/java/com/iformall/utils/DateUtils.java +++ b/mallinkService/src/main/java/com/iformall/utils/DateUtils.java @@ -890,4 +890,37 @@ public class DateUtils { } } + /** + * 判断时间是否在时间段内 + * @param date + * @param timeStart + * @param timeEnd + * @return + */ + public static boolean isInDate(Date date, String timeStart, String timeEnd) { + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); + String strDate = sdf.format(date); + + // 截取当前时间时分 + int strDateH = Integer.parseInt(strDate.substring(0, 2)); + int strDateM = Integer.parseInt(strDate.substring(3, 5)); + int strDateT = strDateH * 60 + strDateM; + + // 截取开始时间时分 + int strDateBeginH = Integer.parseInt(timeStart.substring(0, 2)); + int strDateBeginM = Integer.parseInt(timeStart.substring(3, 5)); + int strDateBeginT = strDateBeginH * 60 + strDateBeginM; + // 截取结束时间时分 + int strDateEndH = Integer.parseInt(timeEnd.substring(0, 2)); + int strDateEndM = Integer.parseInt(timeEnd.substring(3, 5)); + int strDateEndT = strDateEndH * 60 + strDateEndM; + + + if (strDateT >= strDateBeginT && strDateT <= strDateEndT) { + return true; + } else { + return false; + } + } + } diff --git a/mallinkService/src/main/java/com/iformall/utils/RedisLock.java b/mallinkService/src/main/java/com/iformall/utils/RedisLock.java index 955422ad8..d9bdeb9d2 100644 --- a/mallinkService/src/main/java/com/iformall/utils/RedisLock.java +++ b/mallinkService/src/main/java/com/iformall/utils/RedisLock.java @@ -1,6 +1,7 @@ package com.iformall.utils; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; @@ -14,7 +15,7 @@ import org.springframework.util.StringUtils; */ @Component public class RedisLock { - private org.apache.log4j.Logger logger = Logger.getLogger(getClass()); + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private StringRedisTemplate stringRedisTemplate; diff --git a/mallinkService/src/main/java/com/iformall/utils/Utility.java b/mallinkService/src/main/java/com/iformall/utils/Utility.java index 8dd600543..f1c05310d 100644 --- a/mallinkService/src/main/java/com/iformall/utils/Utility.java +++ b/mallinkService/src/main/java/com/iformall/utils/Utility.java @@ -572,4 +572,35 @@ public final class Utility { } return false; } + + /** + * @param text + * 目标字符串 + * @param length + * 截取长度 + * @param encode + * 采用的编码方式 + * @return + * @throws UnsupportedEncodingException + */ + + public static String substring(String text, int length, String encode) + throws UnsupportedEncodingException { + if (text == null) { + return null; + } + StringBuilder sb = new StringBuilder(); + int currentLength = 0; + for (char c : text.toCharArray()) { + currentLength += String.valueOf(c).getBytes(encode).length; + if (currentLength <= length) { + sb.append(c); + } else { + break; + } + } + return sb.toString(); + } + + } diff --git a/mallinkService/src/main/resources/mapper/CouponInjectMapper.xml b/mallinkService/src/main/resources/mapper/CouponInjectMapper.xml index 7bdccec74..a3ae6eb69 100644 --- a/mallinkService/src/main/resources/mapper/CouponInjectMapper.xml +++ b/mallinkService/src/main/resources/mapper/CouponInjectMapper.xml @@ -14,13 +14,14 @@ + - `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` + `id`,`tenant_id`,`name`,`m_user_id`,`send_type`,`coupon_id`,`coupon_name`,`send_time`,`send_amount`,`status`,`error_msg`,`tags`,`msg_id`,`create_time`,`update_time`,`model_id` @@ -32,7 +33,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id`= #{tenantId} @@ -98,7 +99,11 @@ and `update_time` = #{updateTime} - + + + and `msg_id` = #{msgId} + + and id in diff --git a/mallinkService/src/main/resources/mapper/MallRoleMapper.xml b/mallinkService/src/main/resources/mapper/MallRoleMapper.xml index 6d6aef137..76c387823 100644 --- a/mallinkService/src/main/resources/mapper/MallRoleMapper.xml +++ b/mallinkService/src/main/resources/mapper/MallRoleMapper.xml @@ -22,7 +22,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/MallRolePermissionMapper.xml b/mallinkService/src/main/resources/mapper/MallRolePermissionMapper.xml index 84f2bf452..598a42a06 100644 --- a/mallinkService/src/main/resources/mapper/MallRolePermissionMapper.xml +++ b/mallinkService/src/main/resources/mapper/MallRolePermissionMapper.xml @@ -21,7 +21,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml b/mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml index 593238b9c..0fda4504e 100644 --- a/mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/MallUserInfoMapper.xml @@ -13,7 +13,6 @@ - @@ -29,7 +28,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} @@ -90,9 +89,6 @@ - - - - select from push_limit - - - - - - + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + + and `msg_amount` = #{msgAmount} + + + + and `coupon_amount` = #{couponAmount} + + + + and `coupon_day` = #{couponDay} + + + + and `time_start` like concat('%', #{timeStart},'%') + + + + and `time_end` like concat('%', #{timeEnd},'%') + + + + and `create_time` = #{createTime} + + + + and `update_time` = #{updateTime} + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + diff --git a/mallinkService/src/main/resources/mapper/WxAdminLogMapper.xml b/mallinkService/src/main/resources/mapper/WxAdminLogMapper.xml index 1e2f8a886..58d33673e 100644 --- a/mallinkService/src/main/resources/mapper/WxAdminLogMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxAdminLogMapper.xml @@ -23,7 +23,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxAppinfoMapper.xml b/mallinkService/src/main/resources/mapper/WxAppinfoMapper.xml index 3a68d1016..3fbd2b4b4 100644 --- a/mallinkService/src/main/resources/mapper/WxAppinfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxAppinfoMapper.xml @@ -30,7 +30,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxBLogMapper.xml b/mallinkService/src/main/resources/mapper/WxBLogMapper.xml index fb47aa554..f2dff7911 100644 --- a/mallinkService/src/main/resources/mapper/WxBLogMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBLogMapper.xml @@ -21,7 +21,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxCLogMapper.xml b/mallinkService/src/main/resources/mapper/WxCLogMapper.xml index 8f6cd7d74..e6c0533fb 100644 --- a/mallinkService/src/main/resources/mapper/WxCLogMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCLogMapper.xml @@ -21,7 +21,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml index 82b44ce71..58738b29e 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml @@ -101,7 +101,7 @@ update wx_c_user_basic_info set poins=#{poins} where phone=#{phone} and tenant_id=#{tenantId} - and id=#{cUserId} + and id=#{id} diff --git a/mallinkService/src/main/resources/mapper/WxCUserCarMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserCarMapper.xml index 60334bbe2..10e441e69 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserCarMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserCarMapper.xml @@ -25,7 +25,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxCUserMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserMapper.xml index d54cfa42d..93106772a 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserMapper.xml @@ -44,7 +44,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id`= #{tenantId} @@ -200,6 +200,7 @@ #{scene} + order by create_date desc diff --git a/mallinkService/src/main/resources/mapper/WxCUserTagsMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserTagsMapper.xml index 997af7c8e..dde98dbc7 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserTagsMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserTagsMapper.xml @@ -23,7 +23,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxCampaignMapper.xml b/mallinkService/src/main/resources/mapper/WxCampaignMapper.xml index 31a06f148..07f71166a 100644 --- a/mallinkService/src/main/resources/mapper/WxCampaignMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCampaignMapper.xml @@ -35,7 +35,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml b/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml index c5237b5da..233382a60 100644 --- a/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml @@ -24,7 +24,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} @@ -86,9 +86,11 @@ diff --git a/mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml index ee2740657..e54f563bc 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml @@ -8,11 +8,11 @@ - + - `id`,`tenant_id`,`coupon_id`,`coupon_order_id`,`channel_type`,`channel_id`,`createtime` + `id`,`tenant_id`,`coupon_id`,`coupon_order_id`,`channel_type`,`channel_id`,`create_time` @@ -24,7 +24,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} @@ -48,14 +48,14 @@ - - and `createtime` = #{createtime} + + and `create_time` = #{createTime} - and `createtime` >= #{startTime} + and `create_time` >= #{startTime} - and `createtime` <= #{endTime} + and `create_time` <= #{endTime} @@ -73,35 +73,104 @@ + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml index b555dfcc2..621bd71f2 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml @@ -30,7 +30,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index 836e7509a..8ec0c566f 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -42,7 +42,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} @@ -57,7 +57,7 @@ and `cover_img` like concat('%', #{coverImg},'%') - + and `title` like concat('%', #{title},'%') @@ -91,9 +91,9 @@ - and `valid_start_date` = #{validStartDate} - - + and `valid_start_date` = #{validStartDate} + + and `valid_end_date` = #{validEndDate} @@ -126,12 +126,12 @@ and `remark` like concat('%', #{remark},'%') - + and `status` = #{status} - - and `create_date` = #{createDate} + + and `create_date` between #{startdate} and #{enddate} diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 1de63c780..336504abd 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -24,57 +24,46 @@ and `id` = #{id} - and `tenant_id` = #{tenantId} - and `coupon_id` = #{couponId} - and `c_user_id` = #{cUserId} - and `b_user_id` = #{bUserId} - and `order_id` = #{orderId} - and `expired_time` = #{expiredTime} - and `coupon_order_status` = #{couponOrderStatus} - and `create_date` = #{createDate} - and `update_date` = #{updateDate} - and `coupon_price` = #{couponPrice} - and id in @@ -95,7 +84,23 @@ - + @@ -117,10 +122,17 @@ + + + + co.id,co.tenant_id,co.coupon_id,co.c_user_id,co.b_user_id,co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price, + c.type,c.title,c.sale_price,c.use_price,c.price, + m.name as merchant_name, bu.name, bu.phone as bphone, cu.phone + co.id,co.tenant_id,co.coupon_id,co.c_user_id,co.b_user_id,co.order_id,co.expired_time,co.coupon_order_status,co.create_date,co.update_date,co.coupon_price, @@ -174,11 +186,14 @@ SELECT DATE_FORMAT(wx_coupon_order.create_date,'%Y-%m-%d') as createTime,wx_coupon_order.coupon_id as couponId ,COUNT(DISTINCT c_user_id) as couponUserCount,count(*) as couponCount - ,(select Count(coupon_id) from wx_coupon_order c where coupon_order_status=1 AND DATE_FORMAT(create_date,'%Y-%m-%d')=createTime and tenant_id=#{tenantId} and c.coupon_id=couponId AND c.update_date >= #{startTime} and c.update_date <= #{endTime}) as verifyCount - ,(select Count(DISTINCT c_user_id) from wx_coupon_order d where coupon_order_status=1 AND d.coupon_id=couponId AND DATE_FORMAT(create_date,'%Y-%m-%d')=createTime and tenant_id=#{tenantId} and d.coupon_id=couponId AND d.update_date >= #{startTime} and d.update_date <= #{endTime}) as verifyUserCount - from wx_coupon_order join wx_coupon on wx_coupon_order.coupon_id=wx_coupon.id where wx_coupon_order.tenant_id=#{tenantId} AND wx_coupon_order.create_date >= #{startTime} and wx_coupon_order.create_date <= #{endTime} - - - AND wx_coupon.type = #{couponType} - - - GROUP BY createTime,couponId + ,(select Count(coupon_id) from wx_coupon_order c + where coupon_order_status=1 + and DATE_FORMAT(create_date,'%Y-%m-%d')=createTime + and tenant_id=#{tenantId} + and c.coupon_id=couponId + + and c.update_date >= #{startTime} + + + and c.update_date <= #{endTime} + + ) as verifyCount + ,(select Count(DISTINCT c_user_id) from wx_coupon_order d + where coupon_order_status=1 + and d.coupon_id=couponId + and DATE_FORMAT(create_date,'%Y-%m-%d')=createTime + and tenant_id=#{tenantId} + and d.coupon_id=couponId + + and d.update_date >= #{startTime} + + + and d.update_date <= #{endTime} + + ) as verifyUserCount + from wx_coupon_order + join wx_coupon on wx_coupon_order.coupon_id=wx_coupon.id + where wx_coupon_order.tenant_id=#{tenantId} + + and wx_coupon_order.create_date >= #{startTime} + + + and wx_coupon_order.create_date <= #{endTime} + + + and wx_coupon.type = #{couponType} + + GROUP BY createTime,couponId order by createTime desc + \ No newline at end of file diff --git a/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml index 01205f5e7..34f0666a1 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml @@ -29,7 +29,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxDateAmountRecordMapper.xml b/mallinkService/src/main/resources/mapper/WxDateAmountRecordMapper.xml index 494ca47a7..c0b2749f9 100644 --- a/mallinkService/src/main/resources/mapper/WxDateAmountRecordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxDateAmountRecordMapper.xml @@ -48,7 +48,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} @@ -98,9 +98,9 @@ diff --git a/mallinkService/src/main/resources/mapper/WxLevelConfigMapper.xml b/mallinkService/src/main/resources/mapper/WxLevelConfigMapper.xml index 09363ea68..852c28334 100644 --- a/mallinkService/src/main/resources/mapper/WxLevelConfigMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxLevelConfigMapper.xml @@ -43,7 +43,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxMallBuildingMapper.xml b/mallinkService/src/main/resources/mapper/WxMallBuildingMapper.xml index 70eb9b81e..57cd17b83 100644 --- a/mallinkService/src/main/resources/mapper/WxMallBuildingMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMallBuildingMapper.xml @@ -24,7 +24,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxMallConfigMapper.xml b/mallinkService/src/main/resources/mapper/WxMallConfigMapper.xml index 48389df24..e2c7fdd8b 100644 --- a/mallinkService/src/main/resources/mapper/WxMallConfigMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMallConfigMapper.xml @@ -24,7 +24,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxMallFloorMapper.xml b/mallinkService/src/main/resources/mapper/WxMallFloorMapper.xml index 96c80ec89..e29b3da19 100644 --- a/mallinkService/src/main/resources/mapper/WxMallFloorMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMallFloorMapper.xml @@ -25,7 +25,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxMerchantShopMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantShopMapper.xml index 26efd64a4..db2c41d40 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantShopMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantShopMapper.xml @@ -27,7 +27,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml index ba369da12..cbbeb502f 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml @@ -24,7 +24,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxMsgCallbackMapper.xml b/mallinkService/src/main/resources/mapper/WxMsgCallbackMapper.xml index f5ab6abc6..2b0a7b372 100644 --- a/mallinkService/src/main/resources/mapper/WxMsgCallbackMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMsgCallbackMapper.xml @@ -12,10 +12,14 @@ + + + + - `id`,`tenant_id`,`batch_no`,`phone`,`begintime`,`endtime`,`status`,`status_msg`,`sign`,`createtime` + `id`,`tenant_id`,`batch_no`,`phone`,`begintime`,`endtime`,`status`,`status_msg`,`sign`,`createtime`,`updatetime`,`msg_id`,`callback_id` @@ -85,7 +89,16 @@ + + + + diff --git a/mallinkService/src/main/resources/mapper/WxMsgMapper.xml b/mallinkService/src/main/resources/mapper/WxMsgMapper.xml index b2234b5f4..fcf1ec800 100644 --- a/mallinkService/src/main/resources/mapper/WxMsgMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMsgMapper.xml @@ -20,11 +20,12 @@ + - `id`,`tenant_id`,`model_id`,`msg`,`sendtime`,`createtime`,`expect_send_number`,`success_number`,`error_number`,`return_result`,`phones`,`signature`,`isright`,`name`,`sendstatus`,`excelpath`,`label`,`status` + `id`,`tenant_id`,`model_id`,`msg`,`sendtime`,`createtime`,`expect_send_number`,`success_number`,`error_number`,`return_result`,`phones`,`signature`,`isright`,`name`,`sendstatus`,`excelpath`,`label`,`status`,`way` @@ -108,6 +109,9 @@ and `status` = #{status} + + and `way` = #{way} + and id in diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index ca2274cce..5c19c399a 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -36,7 +36,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} @@ -113,7 +113,23 @@ - + - select from wx_score_history - - - - - - - - + + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + + and `c_user_id` = #{cUserId} + + + + and `create_date` = #{createDate} + + + + and `score_type` = #{scoreType} + + + + and `valid_date` = #{validDate} + + + + and `order_id` = #{orderId} + + + + and `pay_type` = #{payType} + + + + and `pay_amount` = #{payAmount} + + + + and `score_amount` = #{scoreAmount} + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxScoreRulesMapper.xml b/mallinkService/src/main/resources/mapper/WxScoreRulesMapper.xml index b827a704a..b93f8fbd9 100644 --- a/mallinkService/src/main/resources/mapper/WxScoreRulesMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxScoreRulesMapper.xml @@ -29,7 +29,7 @@ and `id` = #{id} - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} and `login_count` = #{loginCount} diff --git a/mallinkService/src/main/resources/mapper/WxScoreValidityPeriodMapper.xml b/mallinkService/src/main/resources/mapper/WxScoreValidityPeriodMapper.xml index 4badc2bcc..0f1f639ab 100644 --- a/mallinkService/src/main/resources/mapper/WxScoreValidityPeriodMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxScoreValidityPeriodMapper.xml @@ -22,7 +22,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxShopMapper.xml b/mallinkService/src/main/resources/mapper/WxShopMapper.xml index 7d8a21fce..d927cc0fe 100644 --- a/mallinkService/src/main/resources/mapper/WxShopMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxShopMapper.xml @@ -34,11 +34,11 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} - + and `shop_number` like concat('%', #{shopNumber},'%') @@ -141,11 +141,11 @@ - and s.`tenant_id` like concat('%', #{tenantId},'%') + and s.`tenant_id`= #{tenantId} - + and s.`shop_number` like concat('%', #{shopNumber},'%') diff --git a/mallinkService/src/main/resources/mapper/WxTemplateMsgMapper.xml b/mallinkService/src/main/resources/mapper/WxTemplateMsgMapper.xml index 9418925f7..35266adc9 100644 --- a/mallinkService/src/main/resources/mapper/WxTemplateMsgMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxTemplateMsgMapper.xml @@ -23,7 +23,7 @@ - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} diff --git a/mallinkService/src/main/resources/mapper/WxUserVisitMapper.xml b/mallinkService/src/main/resources/mapper/WxUserVisitMapper.xml index 0481a5fb5..c071e9b80 100644 --- a/mallinkService/src/main/resources/mapper/WxUserVisitMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxUserVisitMapper.xml @@ -103,7 +103,28 @@ + +