修改核销逻辑,赠卡逻辑,增加流量控制

dev
= 2022-07-17 19:55:27 +08:00
parent cdede88259
commit fea21cba52
110 changed files with 5901 additions and 2459 deletions

View File

@ -303,6 +303,7 @@
<!-- 加入微信sdk-->
<module>wxpay-sdk</module>
<module>ruoyi-segchk-test</module>
</modules>

View File

@ -87,7 +87,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
// 过滤请求
.authorizeRequests()
// 对于登录login 验证码captchaImage 允许匿名访问
.antMatchers("/login", "/captchaImage").anonymous()
.antMatchers("/login", "/captchaImage", "/test/user/**").anonymous()
.antMatchers(
HttpMethod.GET,
"/*.html",

View File

@ -0,0 +1,10 @@
package com.ruoyi.security.web.service;
public interface AdminSchedule {
/**
* redis
* @author seg_yinzy
*/
int flushCount2DB();
}

View File

@ -0,0 +1,254 @@
package com.ruoyi.security.web.service;
import com.alibaba.fastjson.JSON;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.RedisUtil;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.segchk.domain.SegchkFlushCnt;
import com.ruoyi.segchk.domain.SegchkProviderMgt;
import com.ruoyi.segchk.domain.SegchkStoreCntCtrl;
import com.ruoyi.segchk.domain.SimpleListObj;
import com.ruoyi.segchk.service.ISegchkProviderMgtService;
import com.ruoyi.segchk.service.ISegchkStoreBasicInfoService;
import com.ruoyi.segchk.service.ISegchkStoreCntCtrlService;
import com.ruoyi.segchk.utils.RateRandomNumber;
import javafx.util.Pair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.ConcurrentMap;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static java.util.stream.Collectors.*;
@Component
public class AdminScheduleImpl implements AdminSchedule {
private static final Logger log = LoggerFactory.getLogger(AdminScheduleImpl.class);
@Resource
private RedisUtil redisUtil;
@Resource
private ISegchkProviderMgtService segchkProviderMgtService;
@Resource
private ISegchkStoreBasicInfoService segchkStoreBasicInfoService;
@Resource
private ISegchkStoreCntCtrlService segchkStoreCntCtrlService;
@PostConstruct
public void init(){
loadAllWechatCnt();
}
private void loadAllWechatCnt() {
log.debug("loadAllWechatCnt is called");
List<SegchkStoreCntCtrl> segchkStoreCntCtrls = segchkStoreCntCtrlService.selectSegchkStoreCntCtrlListByRecent();
int ret = segchkStoreCntCtrlService.invalidateByOutId(segchkStoreCntCtrls.parallelStream().map(v -> v.getCntId()).collect(toList()));
Map<String, Object> collectMap = get2RedisMap(segchkStoreCntCtrls, 0);
redisUtil.hmset("wechatCount", collectMap);
collectMap = get2RedisMap(segchkStoreCntCtrls, 1);
redisUtil.hmset("wechatCount1", collectMap);
}
private Map<String, Object> get2RedisMap(List<SegchkStoreCntCtrl> segchkStoreCntCtrls, int flag) {
List<Map> mapList = segchkStoreCntCtrls.parallelStream().map(v -> v.getRedisMap(flag)).collect(Collectors.toList());
return (Map<String, Object>) mapList
.stream()
.flatMap(v -> v.entrySet().stream())
.map(v -> (Map.Entry<String, Integer>) v)
.collect(Collectors.toMap(
v1 -> ((Map.Entry<String, Integer>) v1).getKey()
, v1 -> ((Map.Entry<String, Integer>) v1).getValue()
, (m, n) -> m >= n ? m : n))
;
}
public AjaxResult dealOpt(int flag, String params){
switch (flag) {
case 1:
case 2:
case 3:
case 4: {
// 刷次数
SegchkFlushCnt segchkFlushCnt = JSON.parseObject(params, SegchkFlushCnt.class);
if(segchkFlushCnt.getProviderId() == 0L){
return AjaxResult.error(StringUtils.format("指定运营商{}", segchkFlushCnt));
}
return flushCount(flag, segchkFlushCnt) > 0 ? AjaxResult.success() : AjaxResult.error();
}
case 5: {
// 刷新次数缓存到数据库中
return flushCount2DB() > 0 ? AjaxResult.success() : AjaxResult.error();
}
default:
throw new IllegalStateException("Unexpected value: " + flag);
}
}
@Transactional(rollbackFor = Exception.class)
@Override
public int flushCount2DB() {
// SegchkStoreCntCtrl
Map<Object, Object> wechatCount = redisUtil.hmget("wechatCount");
Map<Object, Object> wechatCount1 = redisUtil.hmget("wechatCount1");
ConcurrentMap<Long, List<SegchkStoreCntCtrl>> collect2 = Stream.concat(wechatCount.entrySet().stream(), wechatCount1.entrySet().stream()).map(v -> {
String[] split = v.getKey().toString().split(":", -1);
Integer cnt = (Integer) v.getValue();
Long providerId = Long.valueOf(split[1]);
Long storeId = Long.valueOf(split[2]);
SegchkStoreCntCtrl tmp = new SegchkStoreCntCtrl();
tmp.setProviderId(providerId);
tmp.setStoreId(storeId);
if (split[0].equalsIgnoreCase("browse_cnt")) {
tmp.setBrowseCnt(cnt);
} else if (split[0].equalsIgnoreCase("collect_cnt")) {
tmp.setCollectCnt(cnt);
} else if (split[0].equalsIgnoreCase("book_cnt")) {
tmp.setBookCnt(cnt);
} else if (split[0].equalsIgnoreCase("browse_cnt1")) {
tmp.setBrowseCnt1(cnt);
} else if (split[0].equalsIgnoreCase("collect_cnt1")) {
tmp.setCollectCnt1(cnt);
} else if (split[0].equalsIgnoreCase("book_cnt1")) {
tmp.setBookCnt1(cnt);
}
return tmp;
}).parallel().collect(Collectors.groupingByConcurrent(v -> v.getStoreId(), Collectors.toList()));
List<SegchkStoreCntCtrl> segchkStoreCntCtrlList = collect2.entrySet().parallelStream().map(entry -> {
Optional<SegchkStoreCntCtrl> reduce = entry.getValue().stream().reduce((ret, item) -> {
SegchkStoreCntCtrl tmp = ObjectUtils.isEmpty(ret) ? new SegchkStoreCntCtrl() : ret;
if (!ObjectUtils.isEmpty(item.getProviderId())) {
tmp.setProviderId(item.getProviderId());
}
if (!ObjectUtils.isEmpty(item.getStoreId())) {
tmp.setStoreId(item.getStoreId());
}
if (!ObjectUtils.isEmpty(item.getBookCnt())) {
tmp.setBookCnt(item.getBookCnt());
}
if (!ObjectUtils.isEmpty(item.getBrowseCnt())) {
tmp.setBrowseCnt(item.getBrowseCnt());
}
if (!ObjectUtils.isEmpty(item.getCollectCnt())) {
tmp.setCollectCnt(item.getCollectCnt());
}
if (!ObjectUtils.isEmpty(item.getBookCnt1())) {
tmp.setBookCnt1(item.getBookCnt1());
}
if (!ObjectUtils.isEmpty(item.getBrowseCnt1())) {
tmp.setBrowseCnt1(item.getBrowseCnt1());
}
if (!ObjectUtils.isEmpty(item.getCollectCnt1())) {
tmp.setCollectCnt1(item.getCollectCnt1());
}
return tmp;
});
return reduce;
}).filter(opt -> opt.isPresent()).map(opt -> opt.get()).collect(Collectors.toList());
// Set<Object> wechatCountRecord = redisUtil.sGet("wechatCountRecord");
// return segchkStoreCntCtrlService.flushCount2DB(segchkStoreCntCtrlList);
Pair<Integer, Object> ret = segchkStoreCntCtrlService.addWechatCntBatch(segchkStoreCntCtrlList);
int update_ret = 1;
if(!ObjectUtils.isEmpty(ret.getValue())) {
Map<Long, Long> map = (Map<Long, Long>) ret.getValue();
update_ret = segchkStoreCntCtrlService.invalidateByStore(map);
}
return ret.getKey();/**/
}
/**
* @param flag 1 23
* @param segchkFlushCnt
* @return
*/
private int flushCount(int flag, SegchkFlushCnt segchkFlushCnt) {
Long providerId = segchkFlushCnt.getProviderId();
SegchkProviderMgt segchkProviderMgt = segchkProviderMgtService.selectSegchkProviderMgtByProviderId(providerId);
if(ObjectUtils.isEmpty(segchkProviderMgt)){
log.error(StringUtils.format("刷新指定的运营商未找到 {}", providerId));
return 0;
}
List<SimpleListObj> storeList = segchkStoreBasicInfoService.selectSegchkStoreSimpleList(providerId);
ArrayList<Long> stores = segchkFlushCnt.getField();
if(ObjectUtils.isEmpty(storeList)){
log.warn(StringUtils.format("运营商【{}】无在线商家", providerId));
return 0;
}
List<Long> storeIdsDB = storeList.parallelStream().map(v -> Long.valueOf(v.getKey())).collect(toList());
List<Long> storeNotDB = ObjectUtils.isEmpty(stores) ? null : stores.stream().filter(v -> !storeIdsDB.contains(v)).collect(toList());
if(!ObjectUtils.isEmpty(storeNotDB)){
log.error(StringUtils.format("运营商【{}】无商家 {}", providerId, StringUtils.join(storeNotDB, ",")));
return 0;
}
stores = ObjectUtils.isEmpty(stores) ? (ArrayList<Long>) storeIdsDB : stores;
switch (flag) {
case 1: {
// 刷新浏览数
List<Long> wechatCount = stores.parallelStream().filter(v -> {
boolean flushOpt = true;
if (Double.doubleToLongBits(segchkFlushCnt.getProbability()) < Double.doubleToLongBits(100.00)) {
double v1 = RateRandomNumber.produceRandomNumber(0.01, 1.00);
flushOpt = Double.doubleToLongBits(v1) >= Double.doubleToLongBits(segchkFlushCnt.getProbability() / 100.00) ? true : false;
}
if (flushOpt) {
long ret = (long) redisUtil.hincr("wechatCount1", "browse_cnt1:" + providerId + ":" + v, segchkFlushCnt.getStep());
long ret1 = redisUtil.sSet("wechatCountRecord", v);
}
return flushOpt;
}).collect(toList());
log.debug(StringUtils.format("flushCount browse_cnt with provider[{}] for stores[{}]", providerId, StringUtils.join(wechatCount)));
return wechatCount.size();
}
case 2: {
// 刷新收藏数
List<Long> wechatCount = stores.parallelStream().filter(v -> {
boolean flushOpt = true;
if (Double.doubleToLongBits(segchkFlushCnt.getProbability()) < Double.doubleToLongBits(100.00)) {
double v1 = RateRandomNumber.produceRandomNumber(0.01, 1.00);
flushOpt = Double.doubleToLongBits(v1) >= Double.doubleToLongBits(segchkFlushCnt.getProbability() / 100.00) ? true : false;
}
if (flushOpt) {
long ret = (long) redisUtil.hincr("wechatCount1", "collect_cnt1:" + providerId + ":" + v, segchkFlushCnt.getStep());
long ret1 = redisUtil.sSet("wechatCountRecord", v);
}
return flushOpt;
}).collect(toList());
log.debug(StringUtils.format("flushCount collect_cnt with provider[{}] for stores[{}]", providerId, StringUtils.join(wechatCount)));
return wechatCount.size();
}
case 3: {
// 刷新预约数
List<Long> wechatCount = stores.parallelStream().filter(v -> {
boolean flushOpt = true;
if (Double.doubleToLongBits(segchkFlushCnt.getProbability()) < Double.doubleToLongBits(100.00)) {
double v1 = RateRandomNumber.produceRandomNumber(0.01, 1.00);
flushOpt = Double.doubleToLongBits(v1) >= Double.doubleToLongBits(segchkFlushCnt.getProbability() / 100.00) ? true : false;
}
if (flushOpt) {
long ret = (long) redisUtil.hincr("wechatCount1", "book_cnt1:" + providerId + ":" + v, segchkFlushCnt.getStep());
long ret1 = redisUtil.sSet("wechatCountRecord", v);
}
return flushOpt;
}).collect(toList());
log.debug(StringUtils.format("flushCount book_cnt with provider[{}] for stores[{}]", providerId, StringUtils.join(wechatCount)));
return wechatCount.size();
}
case 4: {
// 刷新核销次数
log.debug("will open flush check");
return 1;
}
}
return 0;
}
}

View File

@ -0,0 +1,103 @@
package com.ruoyi.web.controller.segchk;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.segchk.domain.SegchkProviderCntCtrl;
import com.ruoyi.segchk.service.ISegchkProviderCntCtrlService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* Controller
*
* @author yinzhiying
* @date 2022-07-17
*/
@RestController
@RequestMapping("/segchk/segchk_provider_cnt_ctrl")
public class SegchkProviderCntCtrlController extends BaseController
{
@Autowired
private ISegchkProviderCntCtrlService segchkProviderCntCtrlService;
/**
*
*/
@PreAuthorize("@ss.hasPermi('segchk:segchk_provider_cnt_ctrl:list')")
@GetMapping("/list")
public TableDataInfo list(SegchkProviderCntCtrl segchkProviderCntCtrl)
{
startPage();
List<SegchkProviderCntCtrl> list = segchkProviderCntCtrlService.selectSegchkProviderCntCtrlList(segchkProviderCntCtrl);
return getDataTable(list);
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('segchk:segchk_provider_cnt_ctrl:export')")
@Log(title = "运营商流量管控", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult export(SegchkProviderCntCtrl segchkProviderCntCtrl)
{
List<SegchkProviderCntCtrl> list = segchkProviderCntCtrlService.selectSegchkProviderCntCtrlList(segchkProviderCntCtrl);
ExcelUtil<SegchkProviderCntCtrl> util = new ExcelUtil<SegchkProviderCntCtrl>(SegchkProviderCntCtrl.class);
return util.exportExcel(list, "运营商流量管控数据");
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('segchk:segchk_provider_cnt_ctrl:query')")
@GetMapping(value = "/{cntId}")
public AjaxResult getInfo(@PathVariable("cntId") Long cntId)
{
return AjaxResult.success(segchkProviderCntCtrlService.selectSegchkProviderCntCtrlByCntId(cntId));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('segchk:segchk_provider_cnt_ctrl:add')")
@Log(title = "运营商流量管控", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody SegchkProviderCntCtrl segchkProviderCntCtrl)
{
return toAjax(segchkProviderCntCtrlService.insertSegchkProviderCntCtrl(segchkProviderCntCtrl));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('segchk:segchk_provider_cnt_ctrl:edit')")
@Log(title = "运营商流量管控", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody SegchkProviderCntCtrl segchkProviderCntCtrl)
{
return toAjax(segchkProviderCntCtrlService.updateSegchkProviderCntCtrl(segchkProviderCntCtrl));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('segchk:segchk_provider_cnt_ctrl:remove')")
@Log(title = "运营商流量管控", businessType = BusinessType.DELETE)
@DeleteMapping("/{cntIds}")
public AjaxResult remove(@PathVariable Long[] cntIds)
{
return toAjax(segchkProviderCntCtrlService.deleteSegchkProviderCntCtrlByCntIds(cntIds));
}
}

View File

@ -1,24 +1,16 @@
package com.ruoyi.web.controller.segchk;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.UnAuth;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.segchk.domain.*;
import com.ruoyi.segchk.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* segController
@ -252,53 +244,4 @@ public class SegchkSimpleListController extends BaseController
return getDataTable(collect);
}
private class SimpleListObj extends BaseEntity {
private String providerId;
private String key;
private String value;
private String imgUrl;
public String getProviderId() {
return providerId;
}
public void setProviderId(String providerId) {
this.providerId = providerId;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getImgUrl() {
return imgUrl;
}
public void setImgUrl(String imgUrl) {
this.imgUrl = imgUrl;
}
@Override
public String toString() {
return "SimpleListObj{" +
"providerId='" + providerId + '\'' +
", key='" + key + '\'' +
", value='" + value + '\'' +
", imgUrl='" + imgUrl + '\'' +
'}';
}
}
}

View File

@ -1,13 +1,14 @@
package com.ruoyi.web.controller.segchk;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.segchk.domain.SegchkStoreCntCtrl;
import com.ruoyi.segchk.domain.SegchkStoreVrInfo;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
@ -37,7 +38,7 @@ public class SegchkStoreBasicInfoController extends BaseController
{
@Autowired
private ISegchkStoreBasicInfoService segchkStoreBasicInfoService;
/**
* seg
*/
@ -59,7 +60,7 @@ public class SegchkStoreBasicInfoController extends BaseController
System.out.println("segchk:segchk_store_basic_info:list userinfo:" + sysUser.getRoleId());
sysUser.getRoles().forEach(it -> System.out.println(it.toString()));
startPage();
List<SegchkStoreBasicInfo> list = segchkStoreBasicInfoService.selectSegchkStoreBasicInfoList(segchkStoreBasicInfo);
List<SegchkStoreBasicInfo> list = segchkStoreBasicInfoService.selectSegchkStoreBasicInfoListWithCnt(segchkStoreBasicInfo);
return getDataTable(list);
}
@ -210,4 +211,85 @@ public class SegchkStoreBasicInfoController extends BaseController
{
return toAjax(segchkStoreBasicInfoService.deleteSegchkStoreBasicInfoByStoreIds(storeIds));
}
/**
* segVR
*/
@PreAuthorize("@ss.hasPermi('segchk:segchk_store_basic_info:edit')")
// @UnAuth
@Log(title = "seg商家基础信息", businessType = BusinessType.UPDATE)
@PutMapping("update_vr")
public AjaxResult update_vr(@RequestBody SegchkStoreVrInfo segchkStoreVrInfo)
{
if(StringUtils.isEmpty(segchkStoreVrInfo.getRemark())) {
SysUser sysUser = getLoginUser().getUser();
if (sysUser.getUserId() == 1) {
// 说明是超级管理员
;
} else {
segchkStoreVrInfo.setProviderId(sysUser.getProviderId());
}
}
logger.debug("update vr with: {}", segchkStoreVrInfo.toString());
return toAjax(segchkStoreBasicInfoService.updateSegchkStoreVr(segchkStoreVrInfo));
}
/**
* segVR
*/
@PreAuthorize("@ss.hasPermi('segchk:segchk_store_basic_info:edit')")
// @UnAuth
@Log(title = "seg商家VR信息", businessType = BusinessType.INSERT)
@PutMapping("add_vr")
public AjaxResult AddVR(@RequestBody SegchkStoreVrInfo segchkStoreVrInfo)
{
if(StringUtils.isEmpty(segchkStoreVrInfo.getRemark())) {
SysUser sysUser = getLoginUser().getUser();
if (sysUser.getUserId() == 1) {
// 说明是超级管理员
;
} else {
segchkStoreVrInfo.setProviderId(sysUser.getProviderId());
}
}
logger.debug("add vr with: {}", segchkStoreVrInfo.toString());
return toAjax(segchkStoreBasicInfoService.addSegchkStoreVr(segchkStoreVrInfo));
}
@PreAuthorize("@ss.hasPermi('segchk:segchk_store_basic_info:edit')")
@Log(title = "seg商家基础信息", businessType = BusinessType.DELETE)
// @PutMapping("delete_vr")
@DeleteMapping("delete_vr/{storeId}")
public AjaxResult DeleteVr(@PathVariable Long storeId)
{
SegchkStoreVrInfo segchkStoreVrInfo = new SegchkStoreVrInfo();
SysUser sysUser = getLoginUser().getUser();
if (sysUser.getUserId() == 1) {
// 说明是超级管理员
;
} else {
segchkStoreVrInfo.setProviderId(sysUser.getProviderId());
}
logger.debug("delete vr with: {}", storeId);
segchkStoreVrInfo.setStoreId(storeId);
return toAjax(segchkStoreBasicInfoService.deleteSegchkStoreVr(segchkStoreVrInfo));
}
@PreAuthorize("@ss.hasPermi('segchk:segchk_store_basic_info:edit')")
@Log(title = "seg商家基础信息", businessType = BusinessType.UPDATE)
// @PutMapping("delete_vr")
@PutMapping("update_count")
public AjaxResult updateCount(@RequestBody SegchkStoreCntCtrl segchkStoreCntCtrl)
{
SysUser sysUser = getLoginUser().getUser();
if (sysUser.getUserId() == 1) {
// 说明是超级管理员
;
} else {
segchkStoreCntCtrl.setProviderId(sysUser.getProviderId());
}
logger.debug("update store count with: {}", segchkStoreCntCtrl.toString());
return toAjax(segchkStoreBasicInfoService.updateSegchkStoreCnt2Redis(segchkStoreCntCtrl));
}
}

View File

@ -1,17 +1,12 @@
package com.ruoyi.web.controller.tool;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.security.web.service.AdminScheduleImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.StringUtils;
@ -32,6 +27,12 @@ import io.swagger.annotations.ApiOperation;
@RequestMapping("/test/user")
public class TestController extends BaseController
{
@Autowired
private RedisCache redisService;
@Autowired
private AdminScheduleImpl schedule;
private final static Map<Integer, UserEntity> users = new LinkedHashMap<Integer, UserEntity>();
{
users.put(1, new UserEntity(1, "admin", "admin123", "15888888888"));
@ -109,6 +110,37 @@ public class TestController extends BaseController
return error("用户不存在");
}
}
@RepeatSubmit
@ApiOperation("更新redis缓存")
@PutMapping("/updateredis")
@ResponseBody
public AjaxResult updateredis(String key, String db, String value) throws ClassNotFoundException {
if(db.equals("PROVIDER_INFO:FIRST_CHECK_REWARD") || db.equals("BASE_INFO_SET:")){
redisService.setCacheObject(db + ":" + key, new Boolean(value));
}
// redisService.setCacheObject(key, value);
return AjaxResult.success();
}
@ApiOperation("获取Redis")
@GetMapping("/getredis")
public AjaxResult getredis(String key, String db)
{
if(db.equals("PROVIDER_INFO:FIRST_CHECK_REWARD") || db.equals("BASE_INFO_SET:")){
Object cacheObject = redisService.getCacheObject(db + ":" + key);
Boolean aBoolean = new Boolean(String.valueOf(cacheObject));
return AjaxResult.success(aBoolean);
}
return AjaxResult.success();
}
@PostMapping("/testquartz")
public AjaxResult testquartz(Integer reqFlag, String params){
logger.debug("testquartz get req with {} {}", reqFlag, params);
return schedule.dealOpt(reqFlag, params);
}
}
@ApiModel(value = "UserEntity", description = "用户实体")

View File

@ -0,0 +1,123 @@
# 项目相关配置
ruoyi:
# 名称
name: RuoYi
# 版本
version: 3.6.0
# 版权年份
copyrightYear: 2021
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/ruoyi/uploadPathLinux配置 /home/ruoyi/uploadPath
profile: C:/ruoyi/uploadPath
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数组计算 char 字符验证
captchaType: math
# 开发环境配置
server:
# 服务器的HTTP端口默认为8080
port: 7070
servlet:
# 应用的访问路径
context-path: /
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
# tomcat最大线程数默认为200
max-threads: 800
# Tomcat启动初始化的线程数默认值25
min-spare-threads: 30
# 日志配置
logging:
level:
com.ruoyi: debug
org.springframework: warn
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://192.168.2.30:8306/kaletest?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
username: kaletest_yinzy
password: XMG2-Rel.2
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: ruoyi
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
# redis 配置
redis:
# 地址
host: 192.168.2.40
# 端口默认为6379
port: 63795
# 数据库索引
database: 3
# 密码
password: seg_123456
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
segchk:
ctrl:
dbbatch: 100

View File

@ -18,7 +18,7 @@ ruoyi:
# 开发环境配置
server:
# 服务器的HTTP端口默认为8080
port: 7070
port: 7170
servlet:
# 应用的访问路径
context-path: /

View File

@ -43,7 +43,7 @@ spring:
# 国际化资源文件路径
basename: i18n/messages
profiles:
active: druid
active: dev
# 文件上传
servlet:
multipart:

View File

@ -0,0 +1,5 @@
{
"dev": {
"name": "value"
}
}

View File

@ -4,6 +4,8 @@ import java.lang.management.ManagementFactory;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;
import org.apache.commons.lang3.time.DateFormatUtils;
/**
@ -152,4 +154,31 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
// long sec = diff % nd % nh % nm / ns;
return day + "天" + hour + "小时" + min + "分钟";
}
/**
*
*/
public static Long getDatePoor(Date endDate, Date nowDate, int type)
{
long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60;
long nm = 1000 * 60;
long ns = 1000;
// 获得两个时间的毫秒时间差异
long diff = endDate.getTime() - nowDate.getTime();
// 计算差多少天
long day = diff / nd;
// 计算差多少小时
long hour = diff % nd / nh;
// 计算差多少分钟
long min = diff % nd % nh / nm;
// 计算差多少秒//输出结果
long sec = diff % nd % nh % nm / ns;
switch (type){
case 0 : return day;
case 1 : return hour;
case 2 : return min;
default: return sec;
}
}
}

View File

@ -88,4 +88,19 @@ public interface RedisCahceKey {
* 广
*/
String COMMUNITY_BUY_INDEX = "COMMUNITY_BUY_INDEX";
/**
*
*/
String STORE_STATUS = "STORE_STATUS";
/**
*
*/
String PROVIDER_INFO = "PROVIDER_INFO";
/**
*
*/
String ORDER_INFO = "ORDER_INFO";
// 商家可赠卡标识。只要存在即可赠卡
String GIVE_FREE_CARD = "GIVE_FREE_CARD";
}

View File

@ -0,0 +1,591 @@
package com.ruoyi.common.utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.Cursor;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ScanOptions;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
* redis
* @Author Scott
*
*/
@Component
public class RedisUtil {
@Autowired
public RedisTemplate redisTemplate;
// private RedisTemplate<String, Object> redisTemplate;
/**
*
*
* @param key
* @param time ()
* @return
*/
public boolean expire(String key, long time) {
try {
if (time > 0) {
redisTemplate.expire(key, time, TimeUnit.SECONDS);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* key
*
* @param key null
* @return () 0
*/
public long getExpire(String key) {
return redisTemplate.getExpire(key, TimeUnit.SECONDS);
}
/**
* key
*
* @param key
* @return true false
*/
public boolean hasKey(String key) {
try {
return redisTemplate.hasKey(key);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
*
*
* @param key
*/
@SuppressWarnings("unchecked")
public void del(String... key) {
if (key != null && key.length > 0) {
if (key.length == 1) {
redisTemplate.delete(key[0]);
} else {
//springboot2.4后用法
redisTemplate.delete(Arrays.asList(key));
}
}
}
// ============================String=============================
/**
*
*
* @param key
* @return
*/
public Object get(String key) {
return key == null ? null : redisTemplate.opsForValue().get(key);
}
/**
*
*
* @param key
* @param value
* @return true false
*/
public boolean set(String key, Object value) {
try {
redisTemplate.opsForValue().set(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
*
*
* @param key
* @param value
* @param time () time0 time0
* @return true false
*/
public boolean set(String key, Object value, long time) {
try {
if (time > 0) {
redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
} else {
set(key, value);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
*
*
* @param key
* @param delta (0)
* @return
*/
public long incr(String key, long delta) {
if (delta < 0) {
throw new RuntimeException("递增因子必须大于0");
}
return redisTemplate.opsForValue().increment(key, delta);
}
/**
*
*
* @param key
* @param delta (0)
* @return
*/
public long decr(String key, long delta) {
if (delta < 0) {
throw new RuntimeException("递减因子必须大于0");
}
return redisTemplate.opsForValue().increment(key, -delta);
}
// ================================Map=================================
/**
* HashGet
*
* @param key null
* @param item null
* @return
*/
public Object hget(String key, String item) {
return redisTemplate.opsForHash().get(key, item);
}
/**
* hashKey
*
* @param key
* @return
*/
public Map<Object, Object> hmget(String key) {
return redisTemplate.opsForHash().entries(key);
}
/**
* HashSet
*
* @param key
* @param map
* @return true false
*/
public boolean hmset(String key, Map<String, Object> map) {
try {
redisTemplate.opsForHash().putAll(key, map);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* HashSet
*
* @param key
* @param map
* @param time ()
* @return true false
*/
public boolean hmset(String key, Map<String, Object> map, long time) {
try {
redisTemplate.opsForHash().putAll(key, map);
if (time > 0) {
expire(key, time);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* hash,
*
* @param key
* @param item
* @param value
* @return true false
*/
public boolean hset(String key, String item, Object value) {
try {
redisTemplate.opsForHash().put(key, item, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* hash,
*
* @param key
* @param item
* @param value
* @param time () :hash,
* @return true false
*/
public boolean hset(String key, String item, Object value, long time) {
try {
redisTemplate.opsForHash().put(key, item, value);
if (time > 0) {
expire(key, time);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* hash
*
* @param key null
* @param item 使 null
*/
public void hdel(String key, Object... item) {
redisTemplate.opsForHash().delete(key, item);
}
/**
* hash
*
* @param key null
* @param item null
* @return true false
*/
public boolean hHasKey(String key, String item) {
return redisTemplate.opsForHash().hasKey(key, item);
}
/**
* hash ,
*
* @param key
* @param item
* @param by (0)
* @return
*/
public double hincr(String key, String item, double by) {
return redisTemplate.opsForHash().increment(key, item, by);
}
public double hincr(String key, String item, long by) {
return redisTemplate.opsForHash().increment(key, item, by);
}
/**
* hash
*
* @param key
* @param item
* @param by (0)
* @return
*/
public double hdecr(String key, String item, double by) {
return redisTemplate.opsForHash().increment(key, item, -by);
}
// ============================set=============================
/**
* keySet
*
* @param key
* @return
*/
public Set<Object> sGet(String key) {
try {
return redisTemplate.opsForSet().members(key);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* valueset,
*
* @param key
* @param value
* @return true false
*/
public boolean sHasKey(String key, Object value) {
try {
return redisTemplate.opsForSet().isMember(key, value);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* set
*
* @param key
* @param values
* @return
*/
public long sSet(String key, Object... values) {
try {
return redisTemplate.opsForSet().add(key, values);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* set
*
* @param key
* @param time ()
* @param values
* @return
*/
public long sSetAndTime(String key, long time, Object... values) {
try {
Long count = redisTemplate.opsForSet().add(key, values);
if (time > 0) {
expire(key, time);
}
return count;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* set
*
* @param key
* @return
*/
public long sGetSetSize(String key) {
try {
return redisTemplate.opsForSet().size(key);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* value
*
* @param key
* @param values
* @return
*/
public long setRemove(String key, Object... values) {
try {
Long count = redisTemplate.opsForSet().remove(key, values);
return count;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
// ===============================list=================================
/**
* list
*
* @param key
* @param start
* @param end 0 -1
* @return
*/
public List<Object> lGet(String key, long start, long end) {
try {
return redisTemplate.opsForList().range(key, start, end);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* list
*
* @param key
* @return
*/
public long lGetListSize(String key) {
try {
return redisTemplate.opsForList().size(key);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* list
*
* @param key
* @param index index>=0 0 1 index<0-1-2
* @return
*/
public Object lGetIndex(String key, long index) {
try {
return redisTemplate.opsForList().index(key, index);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* list
*
* @param key
* @param value
* @return
*/
public boolean lSet(String key, Object value) {
try {
redisTemplate.opsForList().rightPush(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* list
*
* @param key
* @param value
* @param time ()
* @return
*/
public boolean lSet(String key, Object value, long time) {
try {
redisTemplate.opsForList().rightPush(key, value);
if (time > 0) {
expire(key, time);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* list
*
* @param key
* @param value
* @return
*/
public boolean lSet(String key, List<Object> value) {
try {
redisTemplate.opsForList().rightPushAll(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* list
*
* @param key
* @param value
* @param time ()
* @return
*/
public boolean lSet(String key, List<Object> value, long time) {
try {
redisTemplate.opsForList().rightPushAll(key, value);
if (time > 0) {
expire(key, time);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* list
*
* @param key
* @param index
* @param value
* @return
*/
public boolean lUpdateIndex(String key, long index, Object value) {
try {
redisTemplate.opsForList().set(key, index, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* Nvalue
*
* @param key
* @param count
* @param value
* @return
*/
public long lRemove(String key, long count, Object value) {
try {
Long remove = redisTemplate.opsForList().remove(key, count, value);
return remove;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* key
* @param keyPrefix
*/
public void removeAll(String keyPrefix) {
try {
Set<String> keys = redisTemplate.keys(keyPrefix);
redisTemplate.delete(keys);
} catch (Throwable e) {
e.printStackTrace();
}
}
}

View File

@ -23,8 +23,28 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- <exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
<exclusion>-->
<!-- <groupId>org.slf4j</groupId>-->
<!-- <artifactId>log4j-over-slf4j</artifactId>-->
<!-- </exclusion>
</exclusions>-->
</dependency>
<!--<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.21</version>
</dependency>-->
<!-- SpringBoot 拦截器 -->
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@ -4,9 +4,13 @@ import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.cache.RedisCacheWriter;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@ -49,6 +53,16 @@ public class RedisConfig extends CachingConfigurerSupport
return template;
}
@Bean
public RedisCacheManager redisCacheManager(RedisTemplate redisTemplate) {
RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisTemplate.getConnectionFactory());
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(redisTemplate.getValueSerializer()));
return new RedisCacheManager(redisCacheWriter, redisCacheConfiguration);
}
@Bean
public DefaultRedisScript<Long> limitScript()
{

View File

@ -1,6 +1,11 @@
package com.ruoyi.quartz.task;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.http.HttpUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
@ -11,11 +16,27 @@ import org.springframework.stereotype.Component;
@Component("SegchkTask")
public class SegchkTask
{
private static final Logger log = LoggerFactory.getLogger(SegchkTask.class);
public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
{
System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
}
public void segchkMultipleParams(String s, Integer port, String path, Integer flag, String params)
{
log.debug(StringUtils.format("执行segchk多参方法 字符串类型{},整形{}, 字符串类型{} 标志{} 具体参数{}", s, port, path, flag, params));
String url = "http://localhost:" + port + path;
if(s.equalsIgnoreCase("admin")){
String s2 = params.replaceAll("\\|", ",");
String s1 = HttpUtils.sendPost(url, "reqFlag=" + flag + "&params=" + s2);
log.trace("HttpUtils.sendPost with {}{} get ret: {}", url, flag, s1);
}
else{
log.warn("segchkMultipleParams invalid request!!!{}", s);
}
}
public void ryParams(String params)
{
System.out.println("执行有参方法:" + params);

64
ruoyi-segchk-test/pom.xml Normal file
View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ruoyi</artifactId>
<groupId>com.ruoyi</groupId>
<version>3.6.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-segchk-test</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<exclusions>
<exclusion>
<groupId>com.vaadin.external.google</groupId>
<artifactId>android-json</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-framework</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter-test</artifactId>
<version>${mybatis-spring-boot.version}</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,73 @@
package test.core.ut;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
import com.ruoyi.framework.config.DruidConfig;
import com.ruoyi.framework.config.MyBatisConfig;
import com.ruoyi.framework.config.RedisConfig;
import com.ruoyi.framework.config.properties.DruidProperties;
import org.assertj.core.internal.bytebuddy.build.ToStringPlugin;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.runner.RunWith;
import org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;
import org.mybatis.spring.boot.test.autoconfigure.MybatisTest;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import javax.sql.DataSource;
/**
* DB + Redis
*
*
* @author
*/
//@RunWith(SpringRunner.class)
//@RunWith(JUnitPlatform.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbAndRedisUnitTest.Application.class)
@ExtendWith(SpringExtension.class)
//@ActiveProfiles(profiles = {"unit-test"}) // 设置使用 application-unit-test 配置文件
//@Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后,清理 DB
//@WebAppConfiguration
//@MybatisTest
//@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class BaseDbAndRedisUnitTest {
@Import({
// DB 配置类
// DataSource.class,
// DruidProperties.class,
// DruidConfig.class,
// YudaoDataSourceAutoConfiguration.class, // 自己的 DB 配置类
// DataSourceAutoConfiguration.class, // Spring DB 自动配置类
// DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类
// DruidDataSourceAutoConfigure.class, // Druid 自动配置类
// SqlInitializationTestConfiguration.class, // SQL 初始化
// MyBatis 配置类
// MyBatisConfig.class, // 自己的 MyBatis 配置类
// MybatisAutoConfiguration.class,
// MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类
// Redis 配置类
// RedisConfig.class, // Redis 测试配置类,用于启动 RedisServer
// RedisAutoConfiguration.class, // Spring Redis 自动配置类
})
public static class Application {
// public static void main(String[] args){
// SpringApplication.run(Application.class, args);
// }
}
}

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="true"/> <!-- 全局映射器启用缓存 -->
<setting name="useGeneratedKeys" value="true"/> <!-- 允许 JDBC 支持自动生成主键 -->
<setting name="defaultExecutorType" value="REUSE"/> <!-- 配置默认的执行器 -->
<setting name="logImpl" value="SLF4J"/> <!-- 指定 MyBatis 所用日志的具体实现 -->
<!-- <setting name="mapUnderscoreToCamelCase" value="true"/> 驼峰式命名 -->
</settings>
</configuration>

View File

@ -0,0 +1,384 @@
package com.ruoyi.aspect;
import com.alibaba.fastjson.JSON;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.enums.BusinessStatus;
import com.ruoyi.common.enums.HttpMethod;
import com.ruoyi.common.utils.RedisUtil;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.ip.IpUtils;
import com.ruoyi.framework.manager.AsyncManager;
import com.ruoyi.framework.manager.factory.AsyncFactory;
import com.ruoyi.segchk.domain.SegchkStoreWebReq;
import com.ruoyi.segchk.domain.SegchkUserCollect;
import com.ruoyi.segchk.domain.SegchkUserLikego;
import com.ruoyi.system.domain.SysOperLog;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.*;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.validation.BindingResult;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.HandlerMapping;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
/**
*
*
* @author ruoyi
*/
@Aspect
@Component
public class SegchkAppApiAspect
{
private static final Logger log = LoggerFactory.getLogger(SegchkAppApiAspect.class);
@Resource
private RedisUtil redisUtil;
// 配置织入点
@Pointcut("execution(* com.ruoyi.segchk.*Controller.*(..)) ")
public void segchkAppPointCut()
{
}
/*@Around("segchkAppPointCut()")
public Object around(ProceedingJoinPoint pjp) throws Throwable{
pjp.
}*/
/**
*
*
* @param joinPoint
*/
@AfterReturning(pointcut = "segchkAppPointCut()", returning = "jsonResult")
public void doAfterReturning(JoinPoint joinPoint, Object jsonResult)
{
Signature signature = joinPoint.getSignature();
MethodSignature methodSignature = (MethodSignature) signature;
Method method = methodSignature.getMethod();
methodSignature.getParameterNames();
String methodName = method.getName();
// 获取当前的用户
// LoginUser loginUser = SecurityUtils.getLoginUser();
Object arg0 = joinPoint.getArgs()[0];
switch (methodName){
case "list_by_provider": {
// 首页推荐列表 SegchkRecommenderStoreWebReq
break;
}
case "store_search": {
// 商家搜索 SegchkStoreWebReq
break;
}
case "store_details": {
// 商家详情 SegchkStoreWebReq
// SegchkStoreWebReq segchkStoreWebReq = (SegchkStoreWebReq) arg0;
// long ret = (long) redisUtil.hincr("wechatCount", "browse_cnt:" + segchkStoreWebReq.getProviderId() + ":" + segchkStoreWebReq.getStoreId(), 1L);
break;
}
case "add_user_collect": {
// 收藏商家 SegchkUserCollect
// SegchkStoreWebReq segchkStoreWebReq = (SegchkStoreWebReq) arg0;
// long ret = (long) redisUtil.hincr("wechatCount", "collect_cnt:" + segchkStoreWebReq.getProviderId() + ":" + segchkStoreWebReq.getStoreId(), 1L);
break;
}
case "add_order_user_likego": {
// 预约 SegchkUserLikego
// SegchkUserLikego segchkStoreWebReq = (SegchkUserLikego) arg0;
// long ret = (long) redisUtil.hincr("wechatCount", "collect_cnt:" + segchkStoreWebReq.getProviderId() + ":" + segchkStoreWebReq.getStoreId(), 1L);
break;
}
case "user_like_go_qr": {
// 查询预约二维码 String likegoId, String remark, Integer qrw, Integer qrh, HttpServletRequest request, HttpServletResponse response
break;
}
case "userChargeReq": {
// 充值请求 SegchkUserCharge
break;
}
case "userCashReq": {
// 提现请求 SegchkUserCashOpsReq
break;
}
case "giveFreeCard": {
// 商家赠卡 StoreSelfCard
break;
}
case "service_check_test": {
// 商家核销 Long likegoId, String storeId, String remark, HttpServletRequest request
break;
}
default: break;
}
log.debug("doAfterReturning {} params: {}, args: {}", methodName, StringUtils.join(methodSignature.getParameterNames(), "|"), StringUtils.join(joinPoint.getArgs(), "|"));
// handleApiCount(joinPoint, null, jsonResult);
}
@Before("segchkAppPointCut()")
public void doBefore(JoinPoint joinPoint) throws Throwable {
Signature signature = joinPoint.getSignature();
MethodSignature methodSignature = (MethodSignature) signature;
Method method = methodSignature.getMethod();
methodSignature.getParameterNames();
String methodName = method.getName();
// 获取当前的用户
// LoginUser loginUser = SecurityUtils.getLoginUser();
Object arg0 = joinPoint.getArgs()[0];
switch (methodName){
case "list_by_provider": {
// 首页推荐列表 SegchkRecommenderStoreWebReq
break;
}
case "store_search": {
// 商家搜索 SegchkStoreWebReq
break;
}
case "store_details": {
// 商家详情 SegchkStoreWebReq
SegchkStoreWebReq segchkStoreWebReq = (SegchkStoreWebReq) arg0;
long ret = (long) redisUtil.hincr("wechatCount", "browse_cnt:" + segchkStoreWebReq.getProviderId() + ":" + segchkStoreWebReq.getStoreId(), 1L);
long ret1 = redisUtil.sSet("wechatCountRecord", segchkStoreWebReq.getStoreId());
break;
}
case "add_user_collect": {
// 收藏商家 SegchkUserCollect
SegchkUserCollect segchkUserCollect = (SegchkUserCollect) arg0;
long ret = (long) redisUtil.hincr("wechatCount", "collect_cnt:" + segchkUserCollect.getProviderId() + ":" + segchkUserCollect.getStoreId(), 1L);
long ret1 = redisUtil.sSet("wechatCountRecord", segchkUserCollect.getStoreId());
break;
}
case "add_order_user_likego": {
// 预约 SegchkUserLikego
SegchkUserLikego segchkUserLikego = (SegchkUserLikego) arg0;
long ret = (long) redisUtil.hincr("wechatCount", "book_cnt:" + segchkUserLikego.getProviderId() + ":" + segchkUserLikego.getStoreId(), 1L);
long ret1 = redisUtil.sSet("wechatCountRecord", segchkUserLikego.getStoreId());
break;
}
case "user_like_go_qr": {
// 查询预约二维码 String likegoId, String remark, Integer qrw, Integer qrh, HttpServletRequest request, HttpServletResponse response
break;
}
case "userChargeReq": {
// 充值请求 SegchkUserCharge
break;
}
case "userCashReq": {
// 提现请求 SegchkUserCashOpsReq
break;
}
case "giveFreeCard": {
// 商家赠卡 StoreSelfCard
break;
}
case "service_check_test": {
// 商家核销 Long likegoId, String storeId, String remark, HttpServletRequest request
break;
}
default: break;
}
}
/**
*
*
* @param joinPoint
* @param e
*/
@AfterThrowing(value = "segchkAppPointCut()", throwing = "e")
public void doAfterThrowing(JoinPoint joinPoint, Exception e)
{
Signature signature = joinPoint.getSignature();
MethodSignature methodSignature = (MethodSignature) signature;
Method method = methodSignature.getMethod();
log.debug("doAfterThrowing {}", method.getName());
// handleApiCount(joinPoint, e, null);
}
protected void handleApiCount(final JoinPoint joinPoint, final Exception e, Object jsonResult)
{
try
{
// 获得注解
Log controllerLog = getAnnotationLog(joinPoint);
if (controllerLog == null)
{
return;
}
// 获取当前的用户
LoginUser loginUser = SecurityUtils.getLoginUser();
// *========数据库日志=========*//
SysOperLog operLog = new SysOperLog();
operLog.setStatus(BusinessStatus.SUCCESS.ordinal());
// 请求的地址
String ip = IpUtils.getIpAddr(ServletUtils.getRequest());
operLog.setOperIp(ip);
// 返回参数
operLog.setJsonResult(JSON.toJSONString(jsonResult));
operLog.setOperUrl(ServletUtils.getRequest().getRequestURI());
if (loginUser != null)
{
operLog.setOperName(loginUser.getUsername());
}
if (e != null)
{
operLog.setStatus(BusinessStatus.FAIL.ordinal());
operLog.setErrorMsg(StringUtils.substring(e.getMessage(), 0, 2000));
}
// 设置方法名称
String className = joinPoint.getTarget().getClass().getName();
String methodName = joinPoint.getSignature().getName();
operLog.setMethod(className + "." + methodName + "()");
// 设置请求方式
operLog.setRequestMethod(ServletUtils.getRequest().getMethod());
// 处理设置注解上的参数
getControllerMethodDescription(joinPoint, controllerLog, operLog);
// 保存数据库
AsyncManager.me().execute(AsyncFactory.recordOper(operLog));
}
catch (Exception exp)
{
// 记录本地异常日志
log.error("==前置通知异常==");
log.error("异常信息:{}", exp.getMessage());
exp.printStackTrace();
}
}
/**
* Controller
*
* @param log
* @param operLog
* @throws Exception
*/
public void getControllerMethodDescription(JoinPoint joinPoint, Log log, SysOperLog operLog) throws Exception
{
// 设置action动作
operLog.setBusinessType(log.businessType().ordinal());
// 设置标题
operLog.setTitle(log.title());
// 设置操作人类别
operLog.setOperatorType(log.operatorType().ordinal());
// 是否需要保存request参数和值
if (log.isSaveRequestData())
{
// 获取参数的信息,传入到数据库中。
setRequestValue(joinPoint, operLog);
}
}
/**
* log
*
* @param operLog
* @throws Exception
*/
private void setRequestValue(JoinPoint joinPoint, SysOperLog operLog) throws Exception
{
String requestMethod = operLog.getRequestMethod();
if (HttpMethod.PUT.name().equals(requestMethod) || HttpMethod.POST.name().equals(requestMethod))
{
String params = argsArrayToString(joinPoint.getArgs());
operLog.setOperParam(StringUtils.substring(params, 0, 2000));
}
else
{
Map<?, ?> paramsMap = (Map<?, ?>) ServletUtils.getRequest().getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
operLog.setOperParam(StringUtils.substring(paramsMap.toString(), 0, 2000));
}
}
/**
*
*/
private Log getAnnotationLog(JoinPoint joinPoint) throws Exception
{
Signature signature = joinPoint.getSignature();
MethodSignature methodSignature = (MethodSignature) signature;
Method method = methodSignature.getMethod();
if (method != null)
{
return method.getAnnotation(Log.class);
}
return null;
}
/**
*
*/
private String argsArrayToString(Object[] paramsArray)
{
String params = "";
if (paramsArray != null && paramsArray.length > 0)
{
for (int i = 0; i < paramsArray.length; i++)
{
if (StringUtils.isNotNull(paramsArray[i]) && !isFilterObject(paramsArray[i]))
{
Object jsonObj = JSON.toJSON(paramsArray[i]);
params += jsonObj.toString() + " ";
}
}
}
return params.trim();
}
/**
*
*
* @param o
* @return truefalse
*/
@SuppressWarnings("rawtypes")
public boolean isFilterObject(final Object o)
{
Class<?> clazz = o.getClass();
if (clazz.isArray())
{
return clazz.getComponentType().isAssignableFrom(MultipartFile.class);
}
else if (Collection.class.isAssignableFrom(clazz))
{
Collection collection = (Collection) o;
for (Iterator iter = collection.iterator(); iter.hasNext();)
{
return iter.next() instanceof MultipartFile;
}
}
else if (Map.class.isAssignableFrom(clazz))
{
Map map = (Map) o;
for (Iterator iter = map.entrySet().iterator(); iter.hasNext();)
{
Map.Entry entry = (Map.Entry) iter.next();
return entry.getValue() instanceof MultipartFile;
}
}
return o instanceof MultipartFile || o instanceof HttpServletRequest || o instanceof HttpServletResponse
|| o instanceof BindingResult;
}
}

View File

@ -11,6 +11,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.RedisCahceKey;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.segchk.domain.*;
import com.ruoyi.segchk.service.*;
@ -34,7 +35,9 @@ import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
@ -274,12 +277,22 @@ public class SegchkDefaultStoreController extends BaseController
}
if(!storeId.equals(String.valueOf(claims.getUserId()))){
logger.warn("ServiceCheckTest---storeid: {} is not then token: {}", storeId, claims);
return AjaxResult.error(300, "请先登录注册");
return AjaxResult.error(300, "该预约单非当前商家用户");
}
}
AjaxResult ajax = new AjaxResult();
logger.debug("ServiceCheckTest with: {}---{}---{}", likegoId.toString(), storeId, remark);
SegchkServiceOrderChkTestResp segchkServiceOrderChkTestResp = segchkUserIndexService.selectUserOrderPredInfo(likegoId);
Map<String, Object> parmMap = new HashMap<>();
parmMap.put("likegoId", likegoId);
parmMap.put("storeId", storeId);
parmMap.put("remark", remark);
Object cacheObject = redisService.getCacheObject(RedisCahceKey.BASE_INFO_SET + "::check_version");
if(!ObjectUtils.isEmpty(cacheObject) && new Boolean(String.valueOf(cacheObject))) {
ajax = segchkStoreIndexService.OrderCheckTransaction(parmMap);
return ajax;
}
SegchkServiceOrderChkTestResp segchkServiceOrderChkTestResp = segchkUserIndexService.selectUserOrderPredInfo(parmMap);
segchkServiceOrderChkTestResp.setLikegoId(likegoId);
logger.debug("ServiceCheckTest check with: {}", segchkServiceOrderChkTestResp.toString());
if(segchkServiceOrderChkTestResp.getStoreId()!= Long.parseLong(storeId)){
@ -313,8 +326,9 @@ public class SegchkDefaultStoreController extends BaseController
segchkServiceOrderChkTestResp.setSegchkRecommenderStoreLableWebList(null);
ajax.put(DATA_TAG, segchkServiceOrderChkTestResp);
StringBuilder sb = new StringBuilder(CommonConstant.APPLET_SERVICE_CHK).append(":").append(storeId).append("-").append(segchkServiceOrderChkTestResp.getUserId());
StringBuilder sb = new StringBuilder(CommonConstant.APPLET_SERVICE_CHK).append(":").append(storeId).append(":").append(segchkServiceOrderChkTestResp.getUserId());
logger.debug("ServiceCheckTest will store likego : {}:{}", sb.toString(), likegoId);
redisService.setCacheObject(sb.toString(), likegoId, 5, TimeUnit.MINUTES);
}
else {
@ -335,7 +349,7 @@ public class SegchkDefaultStoreController extends BaseController
lables.add(lable);
segchkServiceOrderChkTestResp.setSegchkRecommenderStoreLableWebList(lables);
ajax.put(DATA_TAG, segchkServiceOrderChkTestResp);
StringBuilder sb = new StringBuilder(CommonConstant.APPLET_SERVICE_CHK).append(":").append(storeId).append("-").append(segchkServiceOrderChkTestResp.getUserId());
StringBuilder sb = new StringBuilder(CommonConstant.APPLET_SERVICE_CHK).append(":").append(storeId).append(":").append(segchkServiceOrderChkTestResp.getUserId());
logger.debug("ServiceCheckTest will store likego : {}:{}", sb.toString(), likegoId);
redisService.setCacheObject(sb.toString(), likegoId, 5, TimeUnit.MINUTES);
}
@ -360,28 +374,23 @@ public class SegchkDefaultStoreController extends BaseController
segchkStoreSelfMgt.setProviderId(claims.getProviderId());
segchkStoreSelfMgt.setStoreId(claims.getUserId());
}
StringBuilder sb = new StringBuilder(CommonConstant.APPLET_SERVICE_CHK).append(":").append(segchkStoreSelfMgt.getStoreId()).append("-").append(storeSelfCard.getUserId());
Long likegoId = redisService.getCacheObject(sb.toString());
if(likegoId == null){
logger.warn("giveFreeCard cannot get likegoId from redis for ({}:{})", segchkStoreSelfMgt.getStoreId(), storeSelfCard.getUserId());
return AjaxResult.error(500, "赠卡失败");
int ret = segchkStoreIndexService.giveStoreCard(storeSelfCard);
switch (ret){
case -1:
return new AjaxResult(500, "请求异常");
case -2 :
return AjaxResult.error(500, "无效订单");
case -3:
return AjaxResult.error(500, "无效订单");
case -4:
return AjaxResult.error(500, "非订单商家");
case 0:
return AjaxResult.error(500, "赠卡失败");
default:
return AjaxResult.error(200, "赠卡成功");
}
Long cardId = segchkStoreIndexService.getVipCardFromLikego(likegoId);
segchkStoreSelfMgt.setCardId(cardId);
segchkStoreSelfMgt.setUserId(storeSelfCard.getUserId());
segchkStoreSelfMgt.setTypeId(storeSelfCard.getTypeId());
segchkStoreSelfMgt.setFreeCount(storeSelfCard.getTotalCount());
segchkStoreSelfMgt.setLableId(storeSelfCard.getTypeId() == 2 ? storeSelfCard.getLableId() : 0L);
segchkStoreSelfMgt.setFreeName(storeSelfCard.getTypeId() == 2 ? null : "赠卡");
segchkStoreSelfMgt.setFreeContent(storeSelfCard.getFreeContent());
segchkStoreSelfMgt.setLeftCount(storeSelfCard.getTotalCount());
logger.debug("giveFreeCard with --- {}", segchkStoreSelfMgt.toString());
Integer ret = segchkStoreIndexService.addStoreSelfCard(segchkStoreSelfMgt);
if(ret == 0){
logger.error("giveFreeCard failed with --- {}", segchkStoreSelfMgt.toString());
}
redisService.deleteObject(sb.toString());
return ret > 0 ? AjaxResult.success("赠卡成功") : AjaxResult.error(500, "赠卡失败");
}
/**
* , ret 0

View File

@ -55,9 +55,6 @@ public class SegchkDefaultUserController extends BaseController
@Autowired
private ISegchkUserCollectService segchkUserCollectService;
@Autowired
private ISegchkUserLikegoService segchkUserLikegoService;
@Autowired
private ISegchkUserIndexService segchkUserIndexService;
@ -227,13 +224,13 @@ public class SegchkDefaultUserController extends BaseController
return LoginRequireAjax();
}
if(claims.getUserLevel() != 2){
return AjaxResult.error(400, "会员用户不允许预约!");
return AjaxResult.error(400, "会员用户不允许预约!");
}
segchkUserLikego.setUserId(claims.getUserId());
segchkUserLikego.setProviderId(claims.getProviderId());
}
logger.debug("add_order_user_likego with: {}", segchkUserLikego.toString());
return toAjax(segchkUserLikegoService.insertSegchkUserLikego(segchkUserLikego));
return toAjax(segchkUserIndexService.insertSegchkUserLikego(segchkUserLikego));
}
@ -249,7 +246,7 @@ public class SegchkDefaultUserController extends BaseController
@UnAuth
@PostMapping("/userLikeGoQr")
@ResponseBody
@ApiOperation(value = "查询seg用户预约单列表", notes = "需要鉴权")
@ApiOperation(value = "查询seg用户预约单二维码", notes = "需要鉴权")
public AjaxResult user_like_go_qr(String likegoId, String remark, Integer qrw, Integer qrh, HttpServletRequest request, HttpServletResponse response)
{
SegchkUserLikego segchkUserLikego = new SegchkUserLikego();
@ -440,7 +437,7 @@ public class SegchkDefaultUserController extends BaseController
removeIds.setUserId(claims.getUserId());
}
logger.debug("removeOrderUserLikego with: {}", removeIds.toString());
return toAjax(segchkUserLikegoService.deleteSegchkUserLikegoByLikegoIds(Convert.toLongArray(removeIds.getIds())));
return toAjax(segchkUserIndexService.deleteSegchkUserLikegoByLikegoIds(Convert.toLongArray(removeIds.getIds())));
}
/**

View File

@ -48,7 +48,7 @@ spring:
druid:
# 主库数据源
master:
url: jdbc:mysql://192.168.2.30:8306/segchksaas?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
url: jdbc:mysql://192.168.2.30:8306/kaletest?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: kaletest_yinzy
password: XMG2-Rel.2
# 从库数据源
@ -141,8 +141,8 @@ segchk:
distince: 50
qr_path: C:\Users\Public\Desktop\dome.jpg
poster_path: F:\ideaproj\RuoYi-Vue\ruoyi-segchk\src\main\resources\templates\posters\bg.jpg
# 核消二维码保存路径,测试使用。正常不打开
check_qr_path: C:\Users\Public\Desktop\checkqr.jpg
# 核消二维码保存路径,测试使用。正常不打开,开发时不打开
# check_qr_path: C:\Users\Public\Desktop\checkqr.jpg
# 核消二维码背景路径,可有,可无
# check_poster_path: F:\ideaproj\RuoYi-Vue\ruoyi-segchk\src\main\resources\templates\posters\bg.jpg

View File

@ -93,7 +93,7 @@ spring:
# 端口默认为6379
port: 63795
# 数据库索引
database: 2
database: 3
# 密码
password: seg_123456
# 连接超时时间

View File

@ -42,7 +42,7 @@ spring:
# 国际化资源文件路径
basename: i18n/messages
profiles:
active: kaleprod
active: dev
# # 文件上传
# servlet:
# multipart:

View File

@ -2,6 +2,8 @@
"dev": {
"name": "value",
"host": "http://localhost:8091",
"hostadmin": "http://localhost:7070",
"tokenadmin": "login_tokens:6c229cfe-7891-4397-b663-c10213b7d097",
"bindtoken": "eyJhbGciOiJIUzI1NiIsInppcCI6IkRFRiJ9.eNqqViouTVKyUnIMCPBxDYn38Xf39Iv3do1U0lHKTCxRsjI0MzY0tDCwtLDQUSotTi3yTFGyMjUw1lEqKMovy0yBCBhB5HxSy1JzwLzUigKYVhNTC4taAAAAAP__.diChD7JjY3y8SBNTBE8ACoNWWIuz-r-mHESPfL73eZI",
"bindtoken1": "eyJhbGciOiJIUzI1NiIsInppcCI6IkRFRiJ9.eNqqViouTVKyUnIMCPBxDYn38Xf39Iv3do1U0lHKTCxRsjI0MzYyNDQwNDLVUSotTi3yTFGyMjUw1lEqKMovy0yBCBhB5HxSy1JzwLzUigKYVmNzI9NaAAAAAP__.Y5uJzL55q9baNor4ScWmVg9UZyfHkTxZ0Oz79guiXXg",
// "token2": "APPLET_LOGIN_KEY_885553054366171136abcdefghijklmnopqrstuvwxyz",
@ -56,5 +58,5 @@
"userLon": 114.123456,
"userLat": 43.123456
}
}
},
}

View File

@ -1,3 +1,47 @@
PUT http://{{hostadmin}}/segchk/segchk_store_basic_info/delete_vr
Accept: */*
Cache-Control: no-cache
Content-Type: application/json
Authorization: Bearer {{tokenadmin}}
{
"storeId": 3,
"vrUrl": "1sdasdasd",
"providerId": 2,
"serviceState": 1,
"remark": "999999"
}
###
PUT http://{{hostadmin}}/segchk/segchk_store_basic_info/update_vr
Accept: */*
Cache-Control: no-cache
Content-Type: application/json
Authorization: Bearer {{tokenadmin}}
{
"storeId": 3,
"vrUrl": "1sdasdasd",
"providerId": 2,
"serviceState": 1,
"remark": "999999"
}
###
PUT http://{{hostadmin}}/segchk/segchk_store_basic_info/add_vr
Accept: */*
Cache-Control: no-cache
Content-Type: application/json
Authorization: Bearer {{tokenadmin}}
{
"storeId": 3,
"vrUrl": "demoData",
"providerId": 2,
"remark": "999999"
}
###重置admin密码
PUT http://{{hostbak}}/system/user/resetadminself
Accept: */*
Cache-Control: no-ca
@ -62,7 +106,7 @@ Accept: */*
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
likegoId=4&remark=999999&qrw=300&qrh=500
likegoId=16996&remark=999999&qrw=300&qrh=500
###
POST http://api.ksd106.com:8088/SMSSend.aspx
@ -92,7 +136,7 @@ Content-Type: application/json
###
############### 商家接口测试 ####################
### 商家核消操作
###商家赠卡操作
POST {{host}}//default/store/giveFreeCard
Accept: */*
Cache-Control: no-cache
@ -100,18 +144,38 @@ Content-Type: application/json
Authorization: Bearer {{bindtoken}}
{
"userId": 243,
"cardId": 242,
"lableId": 10,
"storeId": 144,
"typeId": 2,
"likegoId": 16997,
"storeId": 52,
"typeId": 1,
"totalCount": 10,
"freeContent": "demoData",
"freeContent": "第二张卡",
"remark": "demoData"
}
### 测试查询用户信息
GET {{hostadmin}}/test/user/list
Accept: */*
Cache-Control: no-cache
Content-Type: application/json
Authorization: Bearer {{bindtoken}}
### 修改redis中的key/value
PUT {{hostadmin}}/test/user/updateredis?key=check_version&db=BASE_INFO_SET:&value=true&remark=999999
Accept: */*
Cache-Control: no-cache
Content-Type: application/json
Authorization: Bearer {{bindtoken}}
### 查询redis中的key/value
GET {{hostadmin}}/test/user/getredis?key=check_version&db=BASE_INFO_SET:&remark=999999
Accept: */*
Cache-Control: no-cache
Content-Type: application/json
Authorization: Bearer {{bindtoken}}
### 商家核消操作
POST {{host}}//default/store/ServiceCheckTest?likegoId=16877&storeId=128&remark=999999
POST {{host}}//default/store/ServiceCheckTest?likegoId=17000&storeId=52&remark=999999
Accept: */*
Cache-Control: no-cache
Content-Type: application/json
@ -481,7 +545,6 @@ Authorization: Bearer {{bindtoken}}
"remark": "999999"
}
###
### 添加seg用户想去记录
POST {{host}}//default/user/addOrderUserLikego
Accept: */*
@ -490,15 +553,14 @@ Content-Type: application/json
Authorization: Bearer {{bindtoken}}
{
"providerId": 4,
"userId": 245,
"storeId": 128,
"cardId": 244,
"providerId": 2,
"userId": 77,
"storeId": 52,
"cardId": 76,
"cardType": 0,
"remark": "999999"
}
###
### 查询该用户在该商户可使用的会员卡或优惠券remark为测试标识
#返回结果
#{
@ -518,7 +580,7 @@ Authorization: Bearer {{bindtoken}}
# "code": 200,
# "msg": "查询成功"
#}
### 查询该用户在该商户可使用的会员卡或优惠券remark为测试标识
### 999 查询该用户在该商户可使用的会员卡或优惠券remark为测试标识
POST {{host}}//default/user/userOrderPredList
Accept: */*
Cache-Control: no-cache
@ -526,9 +588,9 @@ Content-Type: application/json
Authorization: Bearer {{bindtoken}}
{
"providerId": 11,
"storeId": 196,
"userId": 768,
"providerId": 2,
"storeId": 52,
"userId": 77,
"remark": "999999"
}
@ -756,8 +818,8 @@ Cache-Control: no-cache
Content-Type: application/json
{
"providerId": 4,
"storeId": 124
"providerId": 2,
"storeId": 5
}
###
@ -786,11 +848,7 @@ Content-Type: application/json
"providerId": 3
}
###
### 根据标签id,会员卡类型id搜索商户列表
#
#
#{
# "providerId": 2,
# "sortType": 1,
@ -800,6 +858,7 @@ Content-Type: application/json
# "userLon": 116.25849,
# "userLat": 39.684333
#}
POST {{host}}//default/index/listByProviderwithLable
Accept: */*
Cache-Control: no-cache
@ -812,7 +871,6 @@ Content-Type: application/json
"userLat": 39.684333
}
###
### 根据运营商id查询seg首页推荐商户列表
POST {{host}}//default/index/listByProvider
Accept: */*
@ -877,12 +935,10 @@ Content-Type: application/json
{
"providerId": 2,
"sortType": 0,
"lableId": 4,
"typeId": 1,
"storeName": "百元尊享",
"lableName": "百元尊享",
"userLon": 114.123456,
"userLat": 43.123456
"storeName": "2商家名称001",
"lableName": "2商家名称001",
"userLon": 116.266754,
"userLat": 39.678974
}
###查询seg标签列表

View File

@ -16,7 +16,7 @@
<alipay.version>4.8.10.ALL</alipay.version>
</properties>
<description>
system系统模块
seg核销业务模块
</description>
<dependencies>
@ -117,6 +117,12 @@
<artifactId>ruoyi-system</artifactId>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-segchk-test</artifactId>
<version>3.6.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>

View File

@ -1,47 +0,0 @@
package com.ruoyi.segchk.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* seg segchk_charge_card
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkChargeRet extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 充值id */
@Excel(name = "充值id")
private Long chargeId;
/** 卡id */
@Excel(name = "卡id")
private Long cardId;
public Long getChargeId() {
return chargeId;
}
public void setChargeId(Long chargeId) {
this.chargeId = chargeId;
}
public Long getCardId() {
return cardId;
}
public void setCardId(Long cardId) {
this.cardId = cardId;
}
@Override
public String toString() {
return "SegchkChargeRet{" +
"chargeId=" + chargeId +
", cardId=" + cardId +
'}';
}
}

View File

@ -190,7 +190,7 @@ public class SegchkChargeReward extends BaseEntity {
public void mkReward() {
switch (this.getTotalChargeCount()){
case 0: break;
case 0: this.setReward(null);break;
case 1: {
this.setReward(this.getReward().divide(new BigDecimal("2"), 2, BigDecimal.ROUND_HALF_UP));break;
}

View File

@ -1,11 +1,13 @@
package com.ruoyi.segchk.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.BaseEntity;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
* seg segchk_recommender_storeweb
@ -61,7 +63,7 @@ public class SegchkRecommenderStoreWebResp extends BaseEntity
@Excel(name = "用户距离")
private BigDecimal userDist;
private SegchkStoreCntResp segchkStoreCntResp = null;
/** 商户标签列表 */
@Valid
private List<SegchkRecommenderStoreLableWeb> lables;
@ -154,24 +156,6 @@ public class SegchkRecommenderStoreWebResp extends BaseEntity
this.storeName = storeName;
}
@Override
public String toString() {
return "SegchkRecommenderStoreWebResp{" +
"providerId=" + providerId +
", storeId=" + storeId +
", storeName=" + storeName +
", storeSort=" + storeSort +
", storeIcon='" + storeIcon + '\'' +
", storeGificon='" + storeGificon + '\'' +
", storeLon=" + storeLon +
", storeLat=" + storeLat +
", chkCount=" + chkCount +
", starAvg=" + starAvg +
", lables=" + lables +
", userDist=" + userDist +
'}';
}
public BigDecimal getUserDist() {
return userDist;
}
@ -179,4 +163,37 @@ public class SegchkRecommenderStoreWebResp extends BaseEntity
public void setUserDist(BigDecimal userDist) {
this.userDist = userDist;
}
@Override
public String toString() {
return "SegchkRecommenderStoreWebResp{" +
"providerId=" + providerId +
", storeId=" + storeId +
", storeName='" + storeName + '\'' +
", storeSort=" + storeSort +
", storeIcon='" + storeIcon + '\'' +
", storeGificon='" + storeGificon + '\'' +
", storeLon=" + storeLon +
", storeLat=" + storeLat +
", chkCount=" + chkCount +
", starAvg=" + starAvg +
", userDist=" + userDist +
", lables=" + lables +
'}';
}
public void setStoreCount(Long providerId, SegchkProviderCntCtrl segchkProviderCntCtrl, Map<Object, Object> wechatCount, Map<Object, Object> wechatCount1) {
this.segchkStoreCntResp = new SegchkStoreCntResp();
this.segchkStoreCntResp.setProviderId(providerId);
this.segchkStoreCntResp.setStoreId(this.storeId);
this.segchkStoreCntResp.setAllCnt(segchkProviderCntCtrl, wechatCount, wechatCount1);
}
public SegchkStoreCntResp getSegchkStoreCntResp() {
return segchkStoreCntResp;
}
public void setSegchkStoreCntResp(SegchkStoreCntResp segchkStoreCntResp) {
this.segchkStoreCntResp = segchkStoreCntResp;
}
}

View File

@ -1,89 +0,0 @@
package com.ruoyi.segchk.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.Date;
/**
* seg SegchkServiceCommentUserReq
*
* @author yinzhiying
* @date 2021-07-30
*/
public class SegchkServiceCommentUserReq extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 评价id */
private Long commentId;
/** 星级评价 */
@Excel(name = "星级评价")
private Integer starLevel;
/** 评价内容 */
@Excel(name = "评价内容")
private String contentText;
/** 创建或修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date modTime;
/** 核消id全表唯一 */
@Excel(name = "核消id全表唯一")
private Long chkServiceId;
public Long getCommentId() {
return commentId;
}
public void setCommentId(Long commentId) {
this.commentId = commentId;
}
public Integer getStarLevel() {
return starLevel;
}
public void setStarLevel(Integer starLevel) {
this.starLevel = starLevel;
}
public String getContentText() {
return contentText;
}
public void setContentText(String contentText) {
this.contentText = contentText;
}
public Date getModTime() {
return modTime;
}
public void setModTime(Date modTime) {
this.modTime = modTime;
}
public Long getChkServiceId() {
return chkServiceId;
}
public void setChkServiceId(Long chkServiceId) {
this.chkServiceId = chkServiceId;
}
@Override
public String toString() {
return "SegchkServiceCommentUserReq{" +
"commentId=" + commentId +
", starLevel=" + starLevel +
", contentText='" + contentText + '\'' +
", modTime=" + modTime +
", chkServiceId=" + chkServiceId +
'}';
}
}

View File

@ -47,7 +47,11 @@ public class SegchkServiceOrderWebReq extends BaseEntity
/** 该商家支持的核销次数 */
@Excel(name = "商家支持次数")
private Integer stoerChkCount;
private Integer storeChkCount;
/** 该卡在该商家已使用的核销次数 */
@Excel(name = "已核销次数")
private Integer hadChkCount;
public Long getProviderId() {
return providerId;
@ -105,6 +109,30 @@ public class SegchkServiceOrderWebReq extends BaseEntity
this.cardName = cardName;
}
public Integer getLeftCount() {
return leftCount;
}
public void setLeftCount(Integer leftCount) {
this.leftCount = leftCount;
}
public Integer getStoreChkCount() {
return storeChkCount;
}
public void setStoreChkCount(Integer storeChkCount) {
this.storeChkCount = storeChkCount;
}
public Integer getHadChkCount() {
return hadChkCount;
}
public void setHadChkCount(Integer hadChkCount) {
this.hadChkCount = hadChkCount;
}
@Override
public String toString() {
return "SegchkServiceOrderWebReq{" +
@ -115,22 +143,9 @@ public class SegchkServiceOrderWebReq extends BaseEntity
", lableId=" + lableId +
", typeId=" + typeId +
", cardName='" + cardName + '\'' +
", leftCount=" + leftCount +
", storeChkCount=" + storeChkCount +
", hadChkCount=" + hadChkCount +
'}';
}
public Integer getLeftCount() {
return leftCount;
}
public void setLeftCount(Integer leftCount) {
this.leftCount = leftCount;
}
public Integer getStoerChkCount() {
return stoerChkCount;
}
public void setStoerChkCount(Integer stoerChkCount) {
this.stoerChkCount = stoerChkCount;
}
}

View File

@ -2,10 +2,12 @@ package com.ruoyi.segchk.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.util.ObjectUtils;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
* seg segchk_recommender_storeweb
@ -68,11 +70,10 @@ public class SegchkStoreIndexWebResp extends BaseEntity
/** 在线状态 */
@Excel(name = "对应的销售id")
private Integer salerId;
/** 商户标签列表 */
@Valid
private List<SegchkRecommenderStoreLableWeb> lables;
private SegchkStoreCntResp segchkStoreCntResp = null;
public Long getProviderId() {
return providerId;
@ -179,6 +180,14 @@ public class SegchkStoreIndexWebResp extends BaseEntity
this.salerId = salerId;
}
public BigDecimal getUserDist() {
return userDist;
}
public void setUserDist(BigDecimal userDist) {
this.userDist = userDist;
}
@Override
public String toString() {
return "SegchkStoreIndexWebResp{" +
@ -191,19 +200,26 @@ public class SegchkStoreIndexWebResp extends BaseEntity
", storeGificon='" + storeGificon + '\'' +
", storeLon=" + storeLon +
", storeLat=" + storeLat +
", userDist=" + userDist +
", chkCount=" + chkCount +
", starAvg=" + starAvg +
", salerId=" + salerId +
", lables=" + lables +
", userDist=" + userDist +
'}';
}
public BigDecimal getUserDist() {
return userDist;
public void setStoreCount(Long providerId, SegchkProviderCntCtrl segchkProviderCntCtrl, Map<Object, Object> wechatCount, Map<Object, Object> wechatCount1) {
this.segchkStoreCntResp = new SegchkStoreCntResp();
this.segchkStoreCntResp.setProviderId(providerId);
this.segchkStoreCntResp.setStoreId(this.storeId);
this.segchkStoreCntResp.setAllCnt(segchkProviderCntCtrl, wechatCount, wechatCount1);
}
public void setUserDist(BigDecimal userDist) {
this.userDist = userDist;
public SegchkStoreCntResp getSegchkStoreCntResp() {
return segchkStoreCntResp;
}
public void setSegchkStoreCntResp(SegchkStoreCntResp segchkStoreCntResp) {
this.segchkStoreCntResp = segchkStoreCntResp;
}
}

View File

@ -1,76 +0,0 @@
package com.ruoyi.segchk.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.math.BigDecimal;
/**
* seg segchk_user_account
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkUserAccountCheck extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户id全局唯一 */
@Excel(name = "用户id全局唯一")
private Long userId;
/** 余额 */
@Excel(name = "余额")
private BigDecimal account;
/** 运营商id全局唯一 */
@Excel(name = "运营商id全局唯一")
private Long providerId;
/** 余额id */
@Excel(name = "余额id")
private Long accountId;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public BigDecimal getAccount() {
return account;
}
public void setAccount(BigDecimal account) {
this.account = account;
}
public Long getProviderId() {
return providerId;
}
public void setProviderId(Long providerId) {
this.providerId = providerId;
}
public Long getAccountId() {
return accountId;
}
public void setAccountId(Long accountId) {
this.accountId = accountId;
}
@Override
public String toString() {
return "SegchkUserAccountCheck{" +
"userId=" + userId +
", account=" + account +
", providerId=" + providerId +
", accountId=" + accountId +
'}';
}
}

View File

@ -1,49 +0,0 @@
package com.ruoyi.segchk.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.math.BigDecimal;
/**
* seg segchk_user_cash
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkUserCashOpsResp extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 提现额 */
@Excel(name = "提现额")
private BigDecimal account;
/** 提现id全表唯一 */
@Excel(name = "提现id全表唯一")
private Long cashId;
public BigDecimal getAccount() {
return account;
}
public void setAccount(BigDecimal account) {
this.account = account;
}
public Long getCashId() {
return cashId;
}
public void setCashId(Long cashId) {
this.cashId = cashId;
}
@Override
public String toString() {
return "SegchkUserCashOpsResp{" +
"account=" + account +
", cashId=" + cashId +
'}';
}
}

View File

@ -1,6 +1,9 @@
package com.ruoyi.segchk.domain;
import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.util.ObjectUtils;
import java.util.Objects;
public class StoreSelfCard extends BaseEntity {
@ -91,4 +94,12 @@ public class StoreSelfCard extends BaseEntity {
", freeContent='" + freeContent + '\'' +
'}';
}
public boolean isValidate() {
return this.likegoId != null
&& this.typeId != null
&& ((this.typeId == 2 && this.lableId != null) || (this.typeId != 2 && true))
&& this.totalCount != null
&& !ObjectUtils.isEmpty(this.freeContent);
}
}

View File

@ -1,6 +1,7 @@
package com.ruoyi.segchk.mapper;
import com.ruoyi.segchk.domain.*;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@ -10,6 +11,7 @@ import java.util.List;
* @author yinzhiying
* @date 2021-08-23
*/
@Mapper
public interface SegchkProviderIndexMapper
{

View File

@ -2,11 +2,15 @@ package com.ruoyi.segchk.mapper;
import com.ruoyi.segchk.domain.*;
import com.ruoyi.segchk.domain.WeChatCustomerLink;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Mapper
@Repository
public interface SegchkStoreIndexMapper {
/**
*
@ -151,4 +155,8 @@ public interface SegchkStoreIndexMapper {
Long getVipCardFromLikego(Long likegoId);
public int addCommentAccByComment(Long commentId);
SegchkStoreStatus getStatus(Map<String, Object> params);
List<SegchkStoreStatus> getAllStatus();
}

View File

@ -76,13 +76,29 @@ public interface SegchkUserIndexMapper {
public List<SegchkMsgWebResp> selectUserMsgList(SegchkUserWebReq segchkUserWebReq);
/**
* seg
* seg,
*
* @param segchkServiceOrderWebReq
* @return seg
*/
@Deprecated
public List<SegchkServiceOrderWebReq> selectUserOrderPredCardListWebInfo(SegchkServiceOrderWebReq segchkServiceOrderWebReq);
/**
* seg
*
* @param parmMap
* @return List<SegchkServiceOrderWebReq> seg
*/
List<SegchkServiceOrderWebReq> getUserCanUseVIPforStore(Map<String, Object> parmMap);
/**
* seg
*
* @param parmMap
* @return List<SegchkServiceOrderWebReq> seg
*/
List<SegchkServiceOrderWebReq> getUserCanUseSelfCardforStore(Map<String, Object> parmMap);
/**
* seg
*
@ -92,11 +108,12 @@ public interface SegchkUserIndexMapper {
public List<SegchkServiceOrderChkTestResp> selecttest(SegchkServiceOrderWebReq segchkServiceOrderWebReq);
/**
* seg
* seg,
*
* @param likegoId
* @return seg
*/
@Deprecated
public SegchkServiceOrderChkTestResp selectUserOrderPredInfo(Long likegoId);
/**
@ -133,4 +150,10 @@ public interface SegchkUserIndexMapper {
Map<String, Object> getCardInfo(Map<String, Object> paramsMap);
SegchkChargeReward selectSegchkRewardInfoForCheck(Map<String, Object> params);
SegchkServiceOrderChkTestResp getOrderPreInfoWithVip(SegchkUserLikego segchkUserLikego);
SegchkServiceOrderChkTestResp getOrderPreInfoWithSelf(SegchkUserLikego segchkUserLikego);
SegchkServiceOrderChkTestResp getOrderPreInfoWithCoupon(SegchkUserLikego segchkUserLikego);
}

View File

@ -1,5 +1,6 @@
package com.ruoyi.segchk.service;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.segchk.domain.*;
import com.ruoyi.segchk.domain.WeChatCustomerLink;
@ -188,4 +189,31 @@ public interface ISegchkStoreIndexService
HashMap<String, Object> getCustomService(Long providerId);
public int addCommentAccByComment(Long commentId);
/**
*
*
* @param providerId id
* @param storeId
* @return SegchkStoreStatus
*/
SegchkStoreStatus getStatus(Long providerId, Long storeId);
void loadingSegchkStoreStatus();
/**
*
*
* @param parmMap ididremark
* @return AjaxResult
*/
AjaxResult OrderCheckTransaction(Map<String, Object> parmMap);
/**
*
*
* @param storeSelfCard likegoId, cardtype, ..
* @return AjaxResult
*/
int giveStoreCard(StoreSelfCard storeSelfCard);
}

View File

@ -102,7 +102,7 @@ public interface ISegchkUserIndexService
*/
public void CheckUserServiceChk(SegchkUserLikego segchkUserLikego);
public SegchkServiceOrderChkTestResp selectUserOrderPredInfo(Long likeGoId);
public SegchkServiceOrderChkTestResp selectUserOrderPredInfo(Map<String, Object> params);
/**
*
@ -289,7 +289,68 @@ public interface ISegchkUserIndexService
*/
public SegchkUserLikego selectUserLikeGo(SegchkUserLikego segchkUserLikego);
int insertSegchkUserCharge(SegchkUserCharge segchkUserCharge);
SegchkUserWechat queryWeChatInfoByUserId(Claims claims);
/**
*
*
* @param segchkUserLikego id
* @return
*/
int insertSegchkUserLikego(SegchkUserLikego segchkUserLikego);
/**
*
*
* @param likegoIds id
* @return
*/
int deleteSegchkUserLikegoByLikegoIds(Long[] likegoIds);
/**
*
*
* @param segchkUserLikego
* @return SegchkServiceOrderChkTestResp
*/
SegchkServiceOrderChkTestResp getOrderPreInfo(SegchkUserLikego segchkUserLikego) throws Exception;
/**
*
*
* @param segchkUserLikego
* @return SegchkServiceOrderChkTestResp
*/
SegchkServiceOrderChkTestResp getOrderPreInfoWithVIP(SegchkUserLikego segchkUserLikego);
/**
*
*
* @param segchkUserLikego
* @return SegchkServiceOrderChkTestResp
*/
SegchkServiceOrderChkTestResp getOrderPreInfoWithCoupon(SegchkUserLikego segchkUserLikego);
/**
* 使
*
* @param segchkUserLikego
* @return SegchkServiceOrderChkTestResp
*/
SegchkServiceOrderChkTestResp getOrderPreInfoWithSelf(SegchkUserLikego segchkUserLikego);
SegchkUserLikego selectSegchkUserLikegoByLikegoId(Long likeGoId);
int wetherCanGiveFree(Long reqlikegoId);
/**
*
*
* @param segchkUserLikego
* @return int
*/
int updateSegchkUserLikego(SegchkUserLikego segchkUserLikego);
}

View File

@ -1,62 +0,0 @@
package com.ruoyi.segchk.service;
import com.ruoyi.segchk.domain.SegchkUserLikego;
import java.util.List;
/**
* segService
*
* @author yinzhiying
* @date 2021-08-23
*/
public interface ISegchkUserLikegoService
{
/**
* seg
*
* @param likegoId seg
* @return seg
*/
public SegchkUserLikego selectSegchkUserLikegoByLikegoId(Long likegoId);
/**
* seg
*
* @param segchkUserLikego seg
* @return seg
*/
public List<SegchkUserLikego> selectSegchkUserLikegoList(SegchkUserLikego segchkUserLikego);
/**
* seg
*
* @param segchkUserLikego seg
* @return
*/
public int insertSegchkUserLikego(SegchkUserLikego segchkUserLikego);
/**
* seg
*
* @param segchkUserLikego seg
* @return
*/
public int updateSegchkUserLikego(SegchkUserLikego segchkUserLikego);
/**
* seg
*
* @param likegoIds seg
* @return
*/
public int deleteSegchkUserLikegoByLikegoIds(Long[] likegoIds);
/**
* seg
*
* @param likegoId seg
* @return
*/
public int deleteSegchkUserLikegoByLikegoId(Long likegoId);
}

View File

@ -1,5 +1,10 @@
package com.ruoyi.segchk.service.impl;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.RedisCahceKey;
import com.ruoyi.common.utils.RedisUtil;
import com.ruoyi.segchk.domain.*;
import com.ruoyi.segchk.mapper.SegchkIndexStoreAccountMapper;
import com.ruoyi.segchk.mapper.SegchkStoreCashMapper;
@ -10,42 +15,64 @@ import com.ruoyi.segchk.domain.WeChatCustomerLink;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service
public class ISegchkStoreIndexServiceImpl implements ISegchkStoreIndexService {
private static final Logger logger = LoggerFactory.getLogger(ISegchkStoreIndexServiceImpl.class);
@Autowired
@Resource
private SegchkStoreIndexMapper segchkStoreIndexMapper;
@Autowired
@Resource
private SegchkStoreCashMapper segchkStoreCashMapper;
@Autowired
@Resource
private SegchkIndexStoreAccountMapper segchkIndexStoreAccountMapper;
@Autowired
@Resource
private SegchkStoreSecurityMapper segchkStoreSecurityMapper;
@Autowired
@Resource
private ISegchkUserIndexService segchkUserIndexService;
@Autowired
@Resource
private ISegchkProviderMgtService segchkProviderMgtService;
@Autowired
@Resource
private ISegchkPreferenceLableService segchkPreferenceLableService;
@Autowired
@Resource
private ISegchkStoreSelfMgtService segchkStoreSelfMgtService;
@Autowired
private ISegchkProviderCntCtrlService segchkProviderCntCtrlService;
/**
* redis
*/
@Resource
private RedisCache redisService;
@Autowired
private RedisUtil redisUtil;
@PostConstruct
public void init()
{
loadingSegchkStoreStatus();
}
/**
* id
*
@ -60,15 +87,17 @@ public class ISegchkStoreIndexServiceImpl implements ISegchkStoreIndexService {
}
boolean cardempty = ObjectUtils.isEmpty(segchkStoreWebReq.getCardId());
boolean lableempty = ObjectUtils.isEmpty(segchkStoreWebReq.getTypeId());
List<SegchkStoreIndexWebResp> segchkStoreIndexWebResps = null;
if(cardempty && lableempty) {
// 全空,说明查询所有商家列表
logger.debug("selectSegchkStoreList all with: {}", segchkStoreWebReq.toString());
return segchkStoreIndexMapper.selectSegchkStoreListByAll(segchkStoreWebReq);
segchkStoreIndexWebResps = segchkStoreIndexMapper.selectSegchkStoreListByAll(segchkStoreWebReq);
}
else if(!lableempty && cardempty){
// 标签不为空,全部会员卡
logger.debug("selectSegchkStoreList one non-card lable with: {}", segchkStoreWebReq.toString());
return segchkStoreIndexMapper.selectSegchkStoreListByOneLable(segchkStoreWebReq);
segchkStoreIndexWebResps = segchkStoreIndexMapper.selectSegchkStoreListByOneLable(segchkStoreWebReq);
}
else if(lableempty && !cardempty){
@ -77,12 +106,97 @@ public class ISegchkStoreIndexServiceImpl implements ISegchkStoreIndexService {
segchkStoreWebReq.setTypeId(0);
segchkStoreWebReq.setCardId(null);
logger.debug("selectSegchkStoreList one card lable with: {}", segchkStoreWebReq.toString());
return segchkStoreIndexMapper.selectSegchkStoreListByOneLable(segchkStoreWebReq);
segchkStoreIndexWebResps = segchkStoreIndexMapper.selectSegchkStoreListByOneLable(segchkStoreWebReq);
}
logger.debug("selectSegchkStoreList some lable with: {}", segchkStoreWebReq.toString());
return segchkStoreIndexMapper.selectSegchkStoreList(segchkStoreWebReq);
else {
logger.debug("selectSegchkStoreList some lable with: {}", segchkStoreWebReq.toString());
segchkStoreIndexWebResps = segchkStoreIndexMapper.selectSegchkStoreList(segchkStoreWebReq);
// objects = fillStoreCount(segchkStoreIndexMapper.selectSegchkStoreList(segchkStoreWebReq), SegchkStoreIndexWebResp.class, providerId, segchkProviderCntCtrl, wechatCount, wechatCount1);
}
if(ObjectUtils.isEmpty(segchkStoreIndexWebResps)){
return new ArrayList<SegchkStoreIndexWebResp>();
}
segchkStoreIndexWebResps.parallelStream().forEach(v -> {
v.setStoreCount(segchkStoreWebReq.getProviderId()
, segchkProviderCntCtrlService.selectSegchkProviderCntCtrlByProviderId(segchkStoreWebReq.getProviderId())
, redisUtil.hmget("wechatCount")
, redisUtil.hmget("wechatCount1"));
});
return segchkStoreIndexWebResps;
// return ObjectUtils.isEmpty(objects) ? new ArrayList<SegchkStoreIndexWebResp>()
// : objects.parallelStream().map(v -> (SegchkStoreIndexWebResp)v).collect(Collectors.toList());
}
public static <T> List<Object> fillStoreCount(List<T> list, Class<T> tClass, Long providerId, SegchkProviderCntCtrl segchkProviderCntCtrl, Map<Object, Object> map1, Map<Object, Object> map2) {
if(!ObjectUtils.isEmpty(list)){
int bf = 0, cf = 0, of = 0;
if(!ObjectUtils.isEmpty(segchkProviderCntCtrl)){
bf = segchkProviderCntCtrl.getBookCnt();
cf = segchkProviderCntCtrl.getCollectCnt();
of = segchkProviderCntCtrl.getBookCnt();
}
String bk1 = "browse_cnt1:" + providerId + ":";
String bk = "browse_cnt:" + providerId + ":";
String ck1 = "collect_cnt1:" + providerId + ":";
String ck = "collect_cnt:" + providerId + ":";
String ok1 = "book_cnt1:" + providerId + ":";
String ok = "book_cnt:" + providerId + ":";
Object[] arr = {bk, bk1, ck, ck1, ok, ok1, bf, cf, of, map1, map2};
if (tClass == (Class<T>) SegchkStoreIndexWebResp.class) {
return list.parallelStream().map(v -> {
return fillSegchkStoreIndexWebRespCount(v, arr);
}).collect(Collectors.toList());
}
else if(tClass == (Class<T>) SegchkStoreIndexWebResp.class) {
return list.parallelStream().map(v -> {
return fillSegchkRecommenderStoreWebRespCount(v, arr);
}).collect(Collectors.toList());
}
else return null;
}
return (List<Object>) list;
}
private static <T> Object fillSegchkRecommenderStoreWebRespCount(T v, Object[] arr) {
// {bk, bk1, ck, ck1, ok, ok1, bf, cf, of, map1, map2};
SegchkRecommenderStoreWebResp tmp = (SegchkRecommenderStoreWebResp) v;
Long storeId = tmp.getStoreId();
/*tmp.setBrowseCnt(getCount(storeId, (String) arr[0], (String)arr[1], (Integer) arr[6], (Map<Object, Object>)arr[9], (Map<Object, Object>)arr[10]));
tmp.setCollectCnt(getCount(storeId, (String) arr[2], (String)arr[3], (Integer) arr[7], (Map<Object, Object>)arr[9], (Map<Object, Object>)arr[10]));
tmp.setBookCnt(getCount(storeId, (String) arr[4], (String)arr[5], (Integer) arr[8], (Map<Object, Object>)arr[9], (Map<Object, Object>)arr[10]));*/
return tmp;
}
private static <T> Object fillSegchkStoreIndexWebRespCount(T v, Object[] arr) {
// {bk, bk1, ck, ck1, ok, ok1, bf, cf, of, map1, map2};
SegchkStoreIndexWebResp tmp = (SegchkStoreIndexWebResp) v;
Long storeId = tmp.getStoreId();
/*tmp.setBrowseCnt(getCount(storeId, (String) arr[0], (String)arr[1], (Integer) arr[6], (Map<Object, Object>)arr[9], (Map<Object, Object>)arr[10]));
tmp.setCollectCnt(getCount(storeId, (String) arr[2], (String)arr[3], (Integer) arr[7], (Map<Object, Object>)arr[9], (Map<Object, Object>)arr[10]));
tmp.setBookCnt(getCount(storeId, (String) arr[4], (String)arr[5], (Integer) arr[8], (Map<Object, Object>)arr[9], (Map<Object, Object>)arr[10]));*/
return tmp;
}
private static Integer getCount(Long storeId, String key1, String key2, Integer flag, Map<Object, Object> objectMap1, Map<Object, Object> objectMap2) {
return (Integer) objectMap1.getOrDefault(key1 + storeId, 0)
+ (flag > 0
? (Integer) objectMap2.getOrDefault(key2 + storeId, 0)
: 0);
}
/**
*
*
@ -126,6 +240,17 @@ public class ISegchkStoreIndexServiceImpl implements ISegchkStoreIndexService {
boolean lableflag = lable_empty ? true : lables.parallelStream().anyMatch(lable -> lable.getLableTypeId() == segchkStoreWebReq.getTypeId() && lable.getLableId() == segchkStoreWebReq.getLableId());
return cardflag && lableflag;
}).collect(Collectors.toList());
if(ObjectUtils.isEmpty(resps)){
return new ArrayList<SegchkStoreIndexWebResp>();
}
resps.parallelStream().forEach(v -> {
v.setStoreCount(segchkStoreWebReq.getProviderId()
, segchkProviderCntCtrlService.selectSegchkProviderCntCtrlByProviderId(segchkStoreWebReq.getProviderId())
, redisUtil.hmget("wechatCount")
, redisUtil.hmget("wechatCount1"));
});
return resps;
}
@ -304,9 +429,26 @@ public class ISegchkStoreIndexServiceImpl implements ISegchkStoreIndexService {
@Override
public List<SegchkRecommenderStoreWebResp> selectSegchkRecommenderStoreListByProvider(SegchkRecommenderStoreWebReq segchkRecommenderStoreWebReq) {
logger.debug("selectSegchkRecommenderStoreListByProvider with: {}", segchkRecommenderStoreWebReq.toString());
return segchkStoreIndexMapper.selectSegchkRecommenderStoreListWeb(segchkRecommenderStoreWebReq);
List<SegchkRecommenderStoreWebResp> segchkRecommenderStoreWebResps = segchkStoreIndexMapper.selectSegchkRecommenderStoreListWeb(segchkRecommenderStoreWebReq);
if(ObjectUtils.isEmpty(segchkRecommenderStoreWebResps)) {
return new ArrayList<SegchkRecommenderStoreWebResp>();
}
segchkRecommenderStoreWebResps.parallelStream().forEach(v -> v.setStoreCount(segchkRecommenderStoreWebReq.getProviderId()
, segchkProviderCntCtrlService.selectSegchkProviderCntCtrlByProviderId(segchkRecommenderStoreWebReq.getProviderId())
, redisUtil.hmget("wechatCount")
, redisUtil.hmget("wechatCount1")));
// List<Object> objects = fillStoreCount(segchkRecommenderStoreWebResps, SegchkRecommenderStoreWebResp.class, providerId, segchkProviderCntCtrl, wechatCount, wechatCount1);
// return ObjectUtils.isEmpty(objects) ? new ArrayList<SegchkRecommenderStoreWebResp>()
// : objects.parallelStream().map(v -> (SegchkRecommenderStoreWebResp)v).collect(Collectors.toList());
return segchkRecommenderStoreWebResps;
}
public <T> T fileStoreCnt(Long providerId, SegchkProviderCntCtrl segchkProviderCntCtrl, Map<Object, Object> map1, Map<Object, Object>map2, T t){
return t;
}
/**
* openid
*
@ -390,4 +532,257 @@ public class ISegchkStoreIndexServiceImpl implements ISegchkStoreIndexService {
logger.debug("addCommentAccByComment with ({}) {}", commentId, (ret > 0 ? "successed" : "failed"));
return ret;
}
/**
*
*
* @param providerId id
* @param storeId
* @return SegchkStoreStatus
*/
@Override
@Cacheable(value = RedisCahceKey.STORE_STATUS, key = "'STORE_STATUS' + #storeId")
public SegchkStoreStatus getStatus(Long providerId, Long storeId) {
Map<String, Object> params = new HashMap<>();
params.put("providerId", providerId);
params.put("storeId", storeId);
return segchkStoreIndexMapper.getStatus(params);
}
@Override
public void loadingSegchkStoreStatus(){
List<SegchkStoreStatus> storeStatusList = segchkStoreIndexMapper.getAllStatus();
logger.debug("loadingSegchkStoreStatus with ret : ", storeStatusList.size());
storeStatusList.parallelStream().forEach(v -> {
// SpringUtils.getBean(RedisCache.class).setCacheObject(RedisCahceKey.STORE_STATUS + "::" + RedisCahceKey.STORE_STATUS + v.getStoreId(), v);
redisService.setCacheObject(RedisCahceKey.STORE_STATUS + "::" + RedisCahceKey.STORE_STATUS + v.getStoreId(), v);
});
}
/**
*
*
* @param parmMap ididremark
* @return AjaxResult
*/
@Override
public AjaxResult OrderCheckTransaction(Map<String, Object> parmMap) {
Object olikegoId = parmMap.getOrDefault("likegoId", null);
Object ostoreId = parmMap.getOrDefault("storeId", null);
if( ObjectUtils.isEmpty(olikegoId) || ObjectUtils.isEmpty(ostoreId) ){
logger.error("OrderCheckTransaction error with no likegoId:{} or storeId:{}", olikegoId, ostoreId);
return new AjaxResult(500, "请求异常,请联系客服");
}
String orderKey = RedisCahceKey.ORDER_INFO + "::" + olikegoId.toString();
// 查询本次要核销的信息,会员卡或赠卡信息
Object userLikeGoO = redisService.getCacheObject(orderKey);
SegchkUserLikego segchkUserLikego = null;
Object segchkProviderMgto = null;
if(ObjectUtils.isEmpty(userLikeGoO)){
logger.warn("OrderCheckTransaction no order cache for {}", olikegoId.toString());
segchkUserLikego = segchkUserIndexService.selectSegchkUserLikegoByLikegoId(Long.valueOf(String.valueOf(olikegoId)));
if(ObjectUtils.isEmpty(segchkUserLikego)) {
return new AjaxResult(500, "预约单失效,请用户重新添加");
}
else{
segchkProviderMgto = segchkProviderMgtService.selectSegchkProviderMgtByProviderId(segchkUserLikego.getProviderId());
int ttl = ((SegchkProviderMgt)segchkProviderMgto).getBookLiveHour() > 0 ? ((SegchkProviderMgt)segchkProviderMgto).getBookLiveHour() : -1;
if (DateUtils.getDatePoor(DateUtils.getNowDate(), segchkUserLikego.getModTime(), 1) > ttl){
return new AjaxResult(500, "预约单过期,请用户重新添加");
}
if(ttl > 0){
redisService.setCacheObject(RedisCahceKey.ORDER_INFO + "::" + segchkUserLikego.getLikegoId(), segchkUserLikego, ttl, TimeUnit.HOURS);
}
else {
redisService.setCacheObject(RedisCahceKey.ORDER_INFO + "::" + segchkUserLikego.getLikegoId(), segchkUserLikego);
}
}
}
else {
segchkUserLikego = (SegchkUserLikego) userLikeGoO;
}
Integer cardType = segchkUserLikego.getCardType();
Long storeId = segchkUserLikego.getStoreId();
segchkProviderMgto = segchkProviderMgto == null ? redisService.getCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + segchkUserLikego.getProviderId()): segchkProviderMgto;
SegchkProviderMgt segchkProviderMgt = null;
if(ObjectUtils.isEmpty(segchkProviderMgto)){
segchkProviderMgt = segchkProviderMgtService.selectSegchkProviderMgtByProviderId(segchkUserLikego.getProviderId());
}
segchkProviderMgt = (SegchkProviderMgt) segchkProviderMgto;
SegchkServiceOrderChkTestResp segchkServiceOrderChkTestResp = null;
try {
segchkServiceOrderChkTestResp = segchkUserIndexService.getOrderPreInfo(segchkUserLikego);
Integer isExpire = segchkServiceOrderChkTestResp.getIsExpire();
Integer cardStatus = segchkServiceOrderChkTestResp.getCardStatus();
Long cardId = segchkServiceOrderChkTestResp.getCardId();
Integer totalCount = segchkServiceOrderChkTestResp.getTotalCount();
Integer hasLeftCount = segchkServiceOrderChkTestResp.getHasLeftCount();
Integer mgtState = segchkServiceOrderChkTestResp.getMgtState();
Integer canFree = segchkServiceOrderChkTestResp.getCanFree();
Integer vipLeftCount = segchkServiceOrderChkTestResp.getVipLeftCount();
if(isExpire == 1 || cardStatus != 0){
logger.warn("OrderCheckTransaction the card({}) with likego({}) is expire", cardId, olikegoId.toString());
lostOrder(segchkUserLikego);
return new AjaxResult(500, "该预约单所用卡已失效");
}
else if(totalCount == 0){
logger.warn("OrderCheckTransaction the store({}) no longer support the card({}) with likego({})", storeId, cardId, olikegoId.toString());
lostOrder(segchkUserLikego);
return new AjaxResult(500, "本店已不支持该类型卡核销");
}
else if(hasLeftCount <= 0 || vipLeftCount < 1){
logger.warn("OrderCheckTransaction the card({}) with likego({}) had check over the store", cardId, olikegoId.toString());
return new AjaxResult(500, "该卡已在本店无可用权益次数");
}
Integer canGiveSelf = segchkProviderMgt.getCanGiveSelf();
if(canGiveSelf == 0) {
segchkServiceOrderChkTestResp.setCanFree(0);
}
segchkServiceOrderChkTestResp.setLikegoId(segchkUserLikego.getLikegoId());
segchkServiceOrderChkTestResp.setCardType(cardType);
segchkServiceOrderChkTestResp.setMgtState(segchkUserLikego.getMgtState());
segchkServiceOrderChkTestResp.setStoreId(segchkUserLikego.getStoreId());
switch (cardType){
case 0: {
if(mgtState == 0 && vipLeftCount == 1){
// 如果用户只有当前会员卡,并且该卡只有当前一次时,说明用户本次核销后不再有可用的会员卡,则不可以赠卡,
segchkServiceOrderChkTestResp.setCanFree(0);
break;
}
// 会员卡的判断处理
if(canGiveSelf == 1 && canFree >= 1){
// 如果只允许商家针对一个用户只能有一张卡且该用户已有该商家的可使用赠卡时,不可以再赠卡
segchkServiceOrderChkTestResp.setCanFree(0);
}
else if((canGiveSelf == 1 && canFree == 0) || canGiveSelf == 2){
segchkServiceOrderChkTestResp.setCanFree(1);
}
else {
segchkServiceOrderChkTestResp.setCanFree(0);
segchkServiceOrderChkTestResp.setSegchkRecommenderStoreLableWebList(null);
}
break;
}
case 1:
case 2: {
// 当该预约单为赠卡或优惠卡时,首先要判断该用户是否有可用的会员卡,如果没有可用的会员卡,则直接不可赠卡
if(mgtState < 1) {
segchkServiceOrderChkTestResp.setCanFree(0);
break;
}
// 针对使用赠卡的预约单
if(canGiveSelf == 1 && hasLeftCount > 1) {
// 如果只允许商家用户持有一张卡,但是已持有的卡除了本次使用的次数,还有剩余的次数,则不允许再赠卡
segchkServiceOrderChkTestResp.setCanFree(0);
}
else {
segchkServiceOrderChkTestResp.setCanFree(1);
}
break;
}
default: segchkServiceOrderChkTestResp.setCanFree(0);break;
}
} catch (Exception e) {
e.printStackTrace();
return new AjaxResult(400, "核销异常");
}
// 结合卡片信息,及运营商管理,判断是否具备赠卡条件
// 结合赠卡决定,判断是否需要查询该商家可以赠送的卡
Object cacheObject = redisService.getCacheObject(RedisCahceKey.PROVIDER_INFO + ":FIRST_CHECK_REWARD:" + segchkUserLikego.getProviderId());
Boolean stoRewardWithChk = ObjectUtils.isEmpty(cacheObject) ? false : new Boolean(String.valueOf(cacheObject));
// 进行核销
int ret = segchkUserIndexService.OrderCheckTransaction(segchkServiceOrderChkTestResp, segchkUserLikego.getLikegoId(), stoRewardWithChk);
if(segchkServiceOrderChkTestResp.getCanFree() == 0){
segchkServiceOrderChkTestResp.setSegchkRecommenderStoreLableWebList(null);
// 不能赠卡则从redis中删除订单信息
redisService.deleteObject(orderKey);
}
else {
SegchkRecommenderStoreLableWeb lable = new SegchkRecommenderStoreLableWeb();
lable.setLableId(0);
lable.setLableTypeId(1);
lable.setLableName("本店尊享");
segchkServiceOrderChkTestResp.setSegchkRecommenderStoreLableWebList(Arrays.asList(lable));
// 在redis中缓存可以赠卡的订单号
redisService.setCacheObject(RedisCahceKey.GIVE_FREE_CARD + "::" + segchkServiceOrderChkTestResp.getLikegoId(), olikegoId);
// 如果可以赠卡,则将订单状态进行更新,同时订单允许赠卡
segchkUserLikego.setMgtState(2);
segchkUserLikego.setCanGiveSelf(1);
redisService.setCacheObject(orderKey, segchkUserLikego);
}
return ret == 3 ? new AjaxResult(200, "核销成功", segchkServiceOrderChkTestResp) : new AjaxResult(500, "核销失败");
}
private void lostOrder(SegchkUserLikego segchkUserLikego) {
segchkUserLikego.setMgtState(1);
int ret = segchkUserIndexService.updateSegchkUserLikego(segchkUserLikego);
if(ret == 1){
String orderKey = RedisCahceKey.ORDER_INFO + "::" + segchkUserLikego.getLikegoId();
redisService.deleteObject(orderKey);
}
}
/**
*
*
* @param storeSelfCard likegoId, cardtype, ..
* @return AjaxResult
*/
@Override
public int giveStoreCard(StoreSelfCard storeSelfCard) {
if(ObjectUtils.isEmpty(storeSelfCard) || !storeSelfCard.isValidate()){
// 请求参数异常
logger.error("giveStoreCard request params is wrong with {}", storeSelfCard.toString());
return -1;
}
// 根据likegoid获取是否可赠卡标识及订单信息
Long reqlikegoId = storeSelfCard.getLikegoId();
Object cacheObject = redisService.getCacheObject(RedisCahceKey.GIVE_FREE_CARD + "::" + reqlikegoId);
if(ObjectUtils.isEmpty(cacheObject)) {
if(segchkUserIndexService.wetherCanGiveFree(reqlikegoId) != 1) return -2;
cacheObject = reqlikegoId;
redisService.setCacheObject(RedisCahceKey.GIVE_FREE_CARD + "::" + reqlikegoId, cacheObject);
}
Long likeGoId = Long.valueOf(String.valueOf(cacheObject));
String orderKey = RedisCahceKey.ORDER_INFO + "::" + reqlikegoId;
Object userLikeGoO = redisService.getCacheObject(orderKey);
if(ObjectUtils.isEmpty(userLikeGoO)) {
return -3;
}
SegchkUserLikego segchkUserLikego = (SegchkUserLikego)userLikeGoO;
if(segchkUserLikego.getStoreId() != storeSelfCard.getStoreId()){
return -4;
}
SegchkStoreSelfMgt segchkStoreSelfMgt = new SegchkStoreSelfMgt();
segchkStoreSelfMgt.setStoreId(storeSelfCard.getStoreId());
segchkStoreSelfMgt.setCardId(segchkUserLikego.getCardId());
segchkStoreSelfMgt.setUserId(segchkUserLikego.getUserId());
segchkStoreSelfMgt.setTypeId(storeSelfCard.getTypeId());
segchkStoreSelfMgt.setFreeCount(storeSelfCard.getTotalCount());
segchkStoreSelfMgt.setLableId(storeSelfCard.getTypeId() == 2 ? storeSelfCard.getLableId() : 0L);
segchkStoreSelfMgt.setFreeName(storeSelfCard.getTypeId() == 2 ? null : "赠卡");
segchkStoreSelfMgt.setFreeContent(storeSelfCard.getFreeContent());
segchkStoreSelfMgt.setLeftCount(storeSelfCard.getTotalCount());
segchkStoreSelfMgt.setProviderId(segchkUserLikego.getProviderId());
Integer ret = addStoreSelfCard(segchkStoreSelfMgt);
if(ret != 1){
logger.error("giveStoreCard failed with --- {}", segchkStoreSelfMgt.toString());
}
redisService.deleteObject(RedisCahceKey.GIVE_FREE_CARD + "::" + reqlikegoId);
redisService.deleteObject(orderKey);
return ret;
}
}

View File

@ -1,6 +1,9 @@
package com.ruoyi.segchk.service.impl;
import com.alibaba.fastjson.JSON;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.RedisCahceKey;
import com.ruoyi.common.utils.RedisUtil;
import com.ruoyi.order.service.impl.PaySupplier;
//import com.ruoyi.order.service.impl.WechatWithdrawSupplier;
import com.ruoyi.segchk.domain.*;
@ -22,12 +25,14 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.ExceptionHandler;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@ -113,12 +118,21 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService
@Autowired
private ISegchkUserAccountService segchkUserAccountService;
@Autowired
private ISegchkUserLikegoService segchkUserLikegoService;
/**
*
*/
@Autowired
private ILsPaySettingService paySetService;
@Autowired
private RedisUtil redisUtil;
@Autowired
private RedisCache redisService;
@Value("${segchk.cash.store_threshold:#{0.0}}")
private BigDecimal storeThreshold;
@ -255,11 +269,18 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService
*/
@Override
public List<SegchkServiceOrderWebReq> selectUserOrderPredCardListWebInfo(SegchkServiceOrderWebReq segchkServiceOrderWebReq) {
SegchkStoreStatus status = segchkStoreIndexService.getStatus(segchkServiceOrderWebReq.getProviderId(), segchkServiceOrderWebReq.getStoreId());
SegchkProviderMgt segchkProviderMgt = (SegchkProviderMgt)redisService.getCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + status.getProviderId());
logger.debug("get store status {}", status.toString());
AtomicInteger a = new AtomicInteger(-1);
/*
List<SegchkServiceOrderWebReq> segchkServiceOrderWebReqs = segchkUserIndexMapper.selectUserOrderPredCardListWebInfo(segchkServiceOrderWebReq);
// 如果返回结果是空则说明无会员卡或赠卡或用如果返回的结果中没有会员卡说明无可用卡如果返回的结果中存在会员卡的store_id为空的情况说明该赠卡可用但是该会员卡在该商家不可用;如果是会员卡的时候并且card_id也是空的情况说明该赠卡可用但是该会员卡在该商家已经超过了商家的核销次数
AtomicInteger a = new AtomicInteger(-1);
if(CollectionUtils.isEmpty(segchkServiceOrderWebReqs)
|| segchkServiceOrderWebReqs.stream().noneMatch(v -> v.getTypeId() == 0)){
|| (status.getUseSelfCardWithNovip() == 0 && segchkServiceOrderWebReqs.stream().noneMatch(v -> v.getTypeId() == 0))){
logger.debug("selectUserOrderPredCardListWebInfo with: {} --- {}", segchkServiceOrderWebReq.toString(), "this user no card can use in this store");
return new ArrayList<SegchkServiceOrderWebReq>();
}
@ -286,6 +307,30 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService
logger.debug("selectUserOrderPredCardListWebInfo with: {} --- {}{}", segchkServiceOrderWebReq.toString(), sb.toString(), segchkServiceOrderWebReqs1.size());
return segchkServiceOrderWebReqs1;
*/
// 拼接查询参数
Map<String, Object> parmMap = new HashMap<>();
parmMap.put("storeId", segchkServiceOrderWebReq.getStoreId());
parmMap.put("userId", segchkServiceOrderWebReq.getUserId());
parmMap.put("providerId", segchkServiceOrderWebReq.getProviderId());
parmMap.put("testFlag", null);
// 分别查询该用户在该商家可用的会员卡和赠卡
List<SegchkServiceOrderWebReq> userCanUseVIPforStore = segchkUserIndexMapper.getUserCanUseVIPforStore(parmMap);
List<SegchkServiceOrderWebReq> userCanUseSelfCardforStore = segchkUserIndexMapper.getUserCanUseSelfCardforStore(parmMap);
boolean no_vip = CollectionUtils.isEmpty(userCanUseVIPforStore);
boolean no_self = CollectionUtils.isEmpty(userCanUseSelfCardforStore);
if(no_vip && ( no_self || (!no_self && status.getUseSelfCardWithNovip() == 0 && segchkProviderMgt.getUseSelfCardWithNovip() == 0))){
logger.debug("selectUserOrderPredCardListWebInfo with: {} --- {}{}{}", parmMap.entrySet().parallelStream().map(v -> v.getKey() + ":" + v.getValue()).collect(Collectors.joining(",")), no_vip, no_self, "this user no card can use in this store");
return new ArrayList<SegchkServiceOrderWebReq>();
}
// 如果会员卡中的商家信息空,说明该商家不支持该会员卡;
// 如果该会员卡在该商家核销次数超过该商家针对该卡支持次数;
List<SegchkServiceOrderWebReq> userCanUseVIPforStore1 = userCanUseVIPforStore.parallelStream().filter(v -> !ObjectUtils.isEmpty(v.getStoreId()) && v.getHadChkCount() < v.getStoreChkCount()).collect(Collectors.toList());
CollectionUtils.mergeArrayIntoCollection((no_self ? new ArrayList<SegchkServiceOrderWebReq>().toArray() : userCanUseSelfCardforStore.toArray()), userCanUseVIPforStore1);
return userCanUseVIPforStore1;
}
/**
@ -313,9 +358,9 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService
}
@Override
public SegchkServiceOrderChkTestResp selectUserOrderPredInfo(Long likegoId) {
logger.debug("selectUserOrderPredInfo with: {}", likegoId.toString());
return segchkUserIndexMapper.selectUserOrderPredInfo(likegoId);
public SegchkServiceOrderChkTestResp selectUserOrderPredInfo(Map<String, Object> params) {
logger.debug("selectUserOrderPredInfo with: {}", params.get("likegoId").toString());
return segchkUserIndexMapper.selectUserOrderPredInfo((Long)params.get("likegoId"));
}
/**
@ -393,7 +438,9 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService
SegchkUserLikego segchkUserLikego = new SegchkUserLikego();
segchkUserLikego.setLikegoId(likegoId);
segchkUserLikego.setMgtState(2);
// 针对该订单设置赠卡标识
segchkUserLikego.setCanGiveSelf(segchkServiceOrderChkTestResp.getCanFree());
// 更新订单状态
ret += segchkUserLikegoMapper.updateSegchkUserLikego(segchkUserLikego);
logger.debug("OrderCheckTransaction update({}) likego({})"
, (ret == 3 ? "successed" : "failed")
@ -1307,6 +1354,130 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService
}
}
/**
*
*
* @param segchkUserLikego id
* @return
*/
@Override
public int insertSegchkUserLikego(SegchkUserLikego segchkUserLikego) {
int ret = segchkUserLikegoService.insertSegchkUserLikego(segchkUserLikego);
if(ret > 0){
segchkUserLikego = segchkUserLikegoService.selectSegchkUserLikegoByLikegoId(segchkUserLikego.getLikegoId());
Object cacheObject = redisService.getCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + segchkUserLikego.getProviderId());
int ttl = -1;
if(!ObjectUtils.isEmpty(cacheObject) && !ObjectUtils.isEmpty(((SegchkProviderMgt)cacheObject).getBookLiveHour())) {
int tmpttl = ((SegchkProviderMgt)cacheObject).getBookLiveHour();
ttl = tmpttl > 0 ? tmpttl : -1;
}
if(ttl > 0){
redisService.setCacheObject(RedisCahceKey.ORDER_INFO + "::" + segchkUserLikego.getLikegoId(), segchkUserLikego, ttl, TimeUnit.HOURS);
}
else {
redisService.setCacheObject(RedisCahceKey.ORDER_INFO + "::" + segchkUserLikego.getLikegoId(), segchkUserLikego);
}
}
return ret;
}
/**
*
*
* @param likegoIds id
* @return
*/
@Override
public int deleteSegchkUserLikegoByLikegoIds(Long[] likegoIds) {
return segchkUserLikegoService.deleteSegchkUserLikegoByLikegoIds(likegoIds);
}
/**
*
*
* @param segchkUserLikego
* @return SegchkServiceOrderChkTestResp
*/
@Override
public SegchkServiceOrderChkTestResp getOrderPreInfo(SegchkUserLikego segchkUserLikego) throws Exception{
Integer cardType = segchkUserLikego.getCardType();
switch (cardType) {
case 0: {
// 如果用户使用会员卡预约,则查询该会员卡相关信息
return getOrderPreInfoWithVIP(segchkUserLikego);
}
case 1: {
// 如果用户使用赠卡预约,则查询该卡相关信息
return getOrderPreInfoWithSelf(segchkUserLikego);
}
case 2: {
// 如果用户使用赠卡预约,则查询该卡相关信息
return getOrderPreInfoWithCoupon(segchkUserLikego);
}
default:
throw new IllegalStateException("Unexpected value: " + cardType);
}
}
/**
*
*
* @param segchkUserLikego
* @return SegchkServiceOrderChkTestResp
*/
@Override
public SegchkServiceOrderChkTestResp getOrderPreInfoWithVIP(SegchkUserLikego segchkUserLikego) {
return segchkUserIndexMapper.getOrderPreInfoWithVip(segchkUserLikego);
}
/**
*
*
* @param segchkUserLikego
* @return SegchkServiceOrderChkTestResp
*/
@Override
public SegchkServiceOrderChkTestResp getOrderPreInfoWithCoupon(SegchkUserLikego segchkUserLikego) {
return segchkUserIndexMapper.getOrderPreInfoWithCoupon(segchkUserLikego);
}
/**
* 使
*
* @param segchkUserLikego
* @return SegchkServiceOrderChkTestResp
*/
@Override
public SegchkServiceOrderChkTestResp getOrderPreInfoWithSelf(SegchkUserLikego segchkUserLikego) {
return segchkUserIndexMapper.getOrderPreInfoWithSelf(segchkUserLikego);
}
@Override
public SegchkUserLikego selectSegchkUserLikegoByLikegoId(Long likeGoId) {
return segchkUserLikegoService.selectSegchkUserLikegoByLikegoId(likeGoId);
}
@Override
public int wetherCanGiveFree(Long reqlikegoId) {
SegchkUserLikego segchkUserLikego = segchkUserLikegoService.selectSegchkUserLikegoByLikegoId(reqlikegoId);
if(ObjectUtils.isEmpty(segchkUserLikego) || segchkUserLikego.getCanGiveSelf() == null || segchkUserLikego.getCanGiveSelf() != 1) {
return 0;
}
return 1;
}
/**
*
*
* @param segchkUserLikego
* @return int
*/
@Override
public int updateSegchkUserLikego(SegchkUserLikego segchkUserLikego) {
return segchkUserLikegoService.updateSegchkUserLikego(segchkUserLikego);
}
/**
*

View File

@ -1,96 +0,0 @@
package com.ruoyi.segchk.service.impl;
import com.ruoyi.segchk.domain.SegchkUserLikego;
import com.ruoyi.segchk.mapper.SegchkUserLikegoMapper;
import com.ruoyi.segchk.service.ISegchkUserLikegoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* segService
*
* @author yinzhiying
* @date 2021-08-23
*/
@Service
public class SegchkUserLikegoServiceImpl implements ISegchkUserLikegoService
{
@Autowired
private SegchkUserLikegoMapper segchkUserLikegoMapper;
/**
* seg
*
* @param likegoId seg
* @return seg
*/
@Override
public SegchkUserLikego selectSegchkUserLikegoByLikegoId(Long likegoId)
{
return segchkUserLikegoMapper.selectSegchkUserLikegoByLikegoId(likegoId);
}
/**
* seg
*
* @param segchkUserLikego seg
* @return seg
*/
@Override
public List<SegchkUserLikego> selectSegchkUserLikegoList(SegchkUserLikego segchkUserLikego)
{
return segchkUserLikegoMapper.selectSegchkUserLikegoList(segchkUserLikego);
}
/**
* seg
*
* @param segchkUserLikego seg
* @return
*/
@Override
public int insertSegchkUserLikego(SegchkUserLikego segchkUserLikego)
{
// 此处根据用户id卡id卡类型卡标签商户id及运营商id生成预约二维码
segchkUserLikego.setQrCode(String.format("qrcode-%s-%s-%s-%s-%s", segchkUserLikego.getProviderId(), segchkUserLikego.getStoreId(), segchkUserLikego.getUserId(), segchkUserLikego.getCardId(), segchkUserLikego.getCardType()));
return segchkUserLikegoMapper.insertSegchkUserLikego(segchkUserLikego);
}
/**
* seg
*
* @param segchkUserLikego seg
* @return
*/
@Override
public int updateSegchkUserLikego(SegchkUserLikego segchkUserLikego)
{
return segchkUserLikegoMapper.updateSegchkUserLikego(segchkUserLikego);
}
/**
* seg
*
* @param likegoIds seg
* @return
*/
@Override
public int deleteSegchkUserLikegoByLikegoIds(Long[] likegoIds)
{
return segchkUserLikegoMapper.deleteSegchkUserLikegoByLikegoIds(likegoIds);
}
/**
* seg
*
* @param likegoId seg
* @return
*/
@Override
public int deleteSegchkUserLikegoByLikegoId(Long likegoId)
{
return segchkUserLikegoMapper.deleteSegchkUserLikegoByLikegoId(likegoId);
}
}

View File

@ -0,0 +1,63 @@
package com.ruoyi.util.bean;
import com.ruoyi.common.core.redis.RedisCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class AppListenHandler {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private RedisCache redisCache;
@Autowired
public AppListenHandler() {
logger.info("开始进行计数缓存!");
}
@PostConstruct
public void init() throws Exception {
//将数据库中的数据写入redis
/*List<Article> articleList = articleService.queryAll();
articleList.forEach(article -> {
//将浏览量写入redis
//分别有浏览量,点赞数,评论数
HashMap<String, Object> h1 = new HashMap<>();
h1.put("viewNum",article.getViewNum());
h1.put("likeNum",article.getLikeNum());
h1.put("commentNum",article.getCommentNum());
redisUtil.zsAdd("commentNum",article.getArticleId().toString(),h1);
redisUtil.zsAdd("viewNum",article.getArticleId().toString(),h1);
redisUtil.zsAdd("likeNum",article.getArticleId().toString(),h1);
});*/
this.logger.info("已写入redis");
}
//关闭时操作
@PreDestroy
public void afterDestroy(){
System.out.println("关闭====================================");
//将redis中的数据一次性写入数据库
/*Set<DefaultTypedTuple> viewNum = redisUtil.zsReverseRangeWithScores("viewNum");
Set<DefaultTypedTuple> commentNum = redisUtil.zsReverseRangeWithScores("commentNum");
Set<DefaultTypedTuple> likeNum = redisUtil.zsReverseRangeWithScores("likeNum");
this.writeNum(viewNum,"viewNum");
this.writeNum(commentNum,"commentNum");
this.writeNum(likeNum,"likeNum");*/
this.logger.info("数据库拿出到redis完毕");
System.out.println("系统关闭===========reids->数据库更新完毕=================");
}
}

View File

@ -141,6 +141,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="providerId" column="provider_id"/>
</resultMap>
<resultMap id="SegchkStoreStatusResult" type="SegchkStoreStatus">
<result property="providerId" column="provider_id"/>
<result property="storeId" column="store_id"/>
<result property="serviceState" column="service_state"/>
<result property="withMsg" column="with_msg"/>
<result property="stateFlag" column="state_flag"/>
<result property="useSelfCardWithNovip" column="use_self_card_with_novip"/>
</resultMap>
<sql id="selectSegchkCarouseMgtVo1">
select provider_id, store_id, store_carousel, sort_id from segchk_carouse_mgt
</sql>
@ -553,6 +562,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
(select provider_id, store_id, store_name, store_phone, service_state, saler_id, store_addr, store_lon, store_lat, on_service, detail from segchk_store_basic_info where provider_id = #{providerId} and store_id = #{storeId}) basic
left join
(select provider_id, store_id, vr_url, thumb_path, service_state from segchk_store_vr_info where provider_id = #{providerId} and store_id = #{storeId} and service_state = 0) vrinfo on vrinfo.store_id = basic.store_id and vrinfo.provider_id = basic.provider_id
left join
(select provider_id, store_id, store_carousel1, store_carousel2, store_carousel3, store_carousel4, store_carousel5, store_carousel6 from segchk_store_image where provider_id = #{providerId} and store_id = #{storeId}) img on img.store_id = basic.store_id and img.provider_id = basic.provider_id
left join (
<!-- # 查询商户的累积核消次数-->
@ -798,4 +808,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="getVipCardFromLikego" resultType="java.lang.Long">
select if(card_type = 0, card_id, (select segchk_store_self_mgt.card_id from segchk_store_self_mgt where segchk_store_self_mgt.free_card_id = segchk_user_likego.card_id) ) from segchk_user_likego where likego_id = #{likegoId};
</select>
<select id="getStatus" parameterType="java.util.Map" resultMap="SegchkStoreStatusResult">
select provider_id
, store_id
, service_state
, with_msg
, state_flag
, use_self_card_with_novip
from segchk_store_basic_info
where store_id = ${storeId}
<if test="providerId != '' and providerId != null">and provider_id = ${providerId}</if>
</select>
<select id="getAllStatus" resultMap="SegchkStoreStatusResult">
select provider_id
, store_id
, service_state
, with_msg
, state_flag
, use_self_card_with_novip
from segchk_store_basic_info
</select>
</mapper>

View File

@ -131,6 +131,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="lableId" column="lable_id"/>
<result property="typeId" column="type_id"/>
<result property="cardName" column="card_name"/>
<result property="storeChkCount" column="store_chk_count"/>
<result property="hadChkCount" column="had_chk_count"/>
<result property="leftCount" column="left_count"/>
</resultMap>
<resultMap type="SegchkServiceOrderChkResp" id="SegchkServiceOrderChkRespResult">
@ -155,6 +158,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="cardName" column="card_name"/>
<result property="totalCount" column="total_count"/>
<result property="hasLeftCount" column="has_left_count"/>
<result property="vipLeftCount" column="vip_left_count"/>
<result property="cardStatus" column="card_status"/>
<result property="canFree" column="can_free"/>
<result property="isExpire" column="is_expire"/>
@ -782,6 +786,101 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join
(select * from segchk_store_chk_mgt where store_id = #{storeId}) sscm on suv.card_type_id = sscm.card_type_id;
</select>
<select id="getUserCanUseVIPforStore" parameterType="java.util.Map" resultMap="SegchkServiceOrderWebRespResult">
select
suv.card_id
, suv.card_type_id as lable_id
, suv.user_id
, suv.provider_id
, suv.left_count
, ifnull(sscm.chk_count, 0) as store_chk_count
, sscm.store_id
, ifnull(ssc.had_check_cnt, 0) as had_chk_count
, 0 as type_id
, concat(scc.card_type_name, '会员卡') as card_name
from
(select * from segchk_user_vip where provider_id = #{providerId} and user_id = #{userId} and left_count > 0 and status = 0
<if test="testFlag == null"> and effective_time <![CDATA[ > ]]> now() </if>
) suv
left join
-- # 查询该商家是否支持该会员卡,如果不支持则相关的数据为null
(select * from segchk_store_chk_mgt where provider_id = #{providerId} and store_id = #{storeId}) sscm on sscm.provider_id = suv.provider_id and sscm.card_type_id = suv.card_type_id
left join
-- # 查询该用户在该商家每张卡的核销次数如果没有。则返回为null
(select count(1) as had_check_cnt, any_value(provider_id) as provider_id, any_value(user_id) as user_id, card_id, card_type_id from segchk_service_chk where provider_id = #{providerId} and store_id = #{storeId} and user_id = #{userId} group by card_id, card_type_id) ssc on ssc.provider_id = suv.provider_id and ssc.user_id = suv.user_id and ssc.card_id = suv.card_id and ssc.card_type_id = suv.card_type_id
left join
(select * from segchk_charge_card where provider_id = #{providerId}) scc on scc.provider_id = suv.provider_id and scc.card_type_id = suv.card_type_id
</select>
<select id="getUserCanUseSelfCardforStore" parameterType="java.util.Map" resultMap="SegchkServiceOrderWebRespResult">
select free_card_id as card_id, provider_id, user_id, lable_id, type_id, free_name as card_name, left_count, store_id, free_count as store_chk_count, (free_count - left_count) as had_chk_count
from segchk_store_self_mgt
where provider_id = #{providerId} and store_id = #{storeId}
and user_id = #{userId} and left_count <![CDATA[ > ]]> 0
and status = 0
</select>
<select id="getOrderPreInfoWithVip" parameterType="SegchkUserLikego" resultMap="SegchkServiceOrderChkTestRespResult">
select
suv.card_id
, suv.card_type_id
, suv.user_id
, suv.provider_id
, suv.is_expire
, suv.left_count as vip_left_count
, (sscm.total_count - ifnull(ssc.use_count, 0)) as has_left_count
, sscm.total_count
, suv.status as card_status
, scc.card_name
, ifnull(sssm.can_free, 0) as can_free
-- 临时用 mgt_state 返回该用户其他会员卡数量,一般情况下只有一张有效的会员卡
, suv1.oth_count as mgt_state
-- , sssm.total_card_count
from
(select card_id, card_type_id, user_id, provider_id, if(effective_time <![CDATA[ >= ]]> now(), 0, 1) as is_expire, use_count, left_count, (use_count + segchk_user_vip.left_count) as total_count, status from segchk_user_vip where card_id = #{cardId} and user_id = #{userId} and card_type_id = #{lableId}) suv
left join
(select provider_id, card_type_id, concat(card_type_name, '会员卡') as card_name from segchk_charge_card where provider_id = #{providerId} and card_type_id = #{lableId}) scc on scc.provider_id = suv.provider_id and scc.card_type_id = suv.card_type_id
left join
(select card_type_id, ifnull(chk_count, 0) as total_count from segchk_store_chk_mgt where store_id = #{storeId} and card_type_id = #{lableId}) sscm on sscm.card_type_id = suv.card_type_id
left join
(select count(1) as use_count, card_id from segchk_service_chk where provider_id = #{providerId} and card_id = #{cardId} and user_id = #{userId} and card_type_id = #{lableId} and store_id = #{storeId}) ssc on ssc.card_id = suv.card_id
left join
(select #{userId} as user_id, #{storeId} as store_id
-- , count(1) as total_card_count
, count(if(store_id = #{storeId}, true, null)) as can_free from segchk_store_self_mgt where provider_id = #{providerId} and user_id = #{userId} and status = 0 and left_count <![CDATA[ > ]]> 0) sssm on sssm.user_id = suv.user_id
left join
(select #{userId} as user_id, count(1) as oth_count from segchk_user_vip where provider_id = #{providerId} and user_id = #{userId} and status = 0 and left_count <![CDATA[ > ]]> 0 and card_id != #{cardId} and effective_time <![CDATA[ >= ]]> now()) suv1 on suv.user_id = suv1.user_id
</select>
<select id="getOrderPreInfoWithSelf" parameterType="SegchkUserLikego" resultMap="SegchkServiceOrderChkTestRespResult">
select
sssm.card_id, sssm.is_expire, sssm.store_id
, sssm.provider_id, sssm.user_id, sssm.vip_card
, sssm.total_count, sssm.card_name, sssm.has_left_count
, sssm.card_status
, sssm1.oth_count, sssm1.can_free
-- 临时使用mgt_state返回用户的有效会员卡数量
, ifnull(suv.vip_count, 0) as mgt_state
from
(select free_card_id as card_id, if(expiration_date <![CDATA[ >= ]]> now(), 0, 1) as is_expire, store_id, provider_id, user_id, card_id as vip_card, lable_id as card_type_id, free_count as total_count, free_name as card_name, left_count as has_left_count, status as card_status from segchk_store_self_mgt where free_card_id = #{cardId}) sssm
left join
(select user_id, count(if(store_id != #{storeId}, true, null)) as oth_count, count(if(#{storeId} = store_id and free_card_id != #{cardId}, true, null)) as can_free from segchk_store_self_mgt where user_id = #{userId} and status = 0 and left_count <![CDATA[ > ]]> 0) sssm1 on sssm1.user_id = sssm.user_id
left join
(select user_id, count(1) as vip_count from segchk_user_vip where user_id = #{userId} and status = 0 and left_count <![CDATA[ > ]]> 0) suv on suv.user_id = sssm.user_id
</select>
<select id="getOrderPreInfoWithCoupon" parameterType="SegchkUserLikego" resultMap="SegchkServiceOrderChkTestRespResult">
select
sssm.card_id, sssm.is_expire, sssm.store_id
, sssm.provider_id, sssm.user_id, sssm.vip_card
, sssm.total_count, sssm.card_name, sssm.has_left_count
, sssm.card_status
, sssm1.oth_count, sssm1.can_free
-- 临时使用mgt_state返回用户的有效会员卡数量
, ifnull(suv.vip_count, 0) as mgt_state
from
(select free_card_id as card_id, if(expiration_date <![CDATA[ >= ]]> now(), 0, 1) as is_expire, store_id, provider_id, user_id, card_id as vip_card, lable_id as card_type_id, free_count as total_count, free_name as card_name, left_count as has_left_count, status as card_status from segchk_store_self_mgt where free_card_id = #{cardId}) sssm
left join
(select user_id, count(if(store_id != #{storeId}, true, null)) as oth_count, count(if(#{storeId} = store_id and free_card_id != #{cardId}, true, null)) as can_free from segchk_store_self_mgt where user_id = #{userId} and status = 0 and left_count <![CDATA[ > ]]> 0) sssm1 on sssm1.user_id = sssm.user_id
left join
(select user_id, count(1) as vip_count from segchk_user_vip where user_id = #{userId} and status = 0 and left_count <![CDATA[ > ]]> 0) suv on suv.user_id = sssm.user_id
</select>
<insert id="updateSegchkUserWechat" parameterType="SegchkUserWechat">
insert into segchk_user_wechat

View File

@ -0,0 +1,332 @@
package com.ruoyi.segchk;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.segchk.domain.SegchkFlushCnt;
import com.ruoyi.segchk.domain.SegchkStoreCntCtrl;
import com.ruoyi.segchk.domain.StoreSelfCard;
import com.ruoyi.segchk.utils.RateRandomNumber;
import com.weixin.pay.util.AESUtil;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Import;
import org.springframework.util.ObjectUtils;
import test.core.ut.BaseDbAndRedisUnitTest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Slf4j
public class TmpTest extends BaseDbAndRedisUnitTest {
@Test
@DisplayName("测试赠卡验证")
public void test1(){
StoreSelfCard a = new StoreSelfCard();
a.setLikegoId(1L);
a.setTypeId(2);
a.setLableId(3L);
a.setTotalCount(10);
a.setFreeContent("aaaaa");
boolean validate = a.isValidate();
System.out.println(validate);
// this.likegoId != null && this.typeId != null && (this.typeId == 2 && this.lableId != null) && this.totalCount != null && (this.typeId == 1 && this.freeContent != null);
}
@Test
@DisplayName("测试加密")
public void test2() throws Exception {
String encryptData = AESUtil.encryptData("432871");
System.out.println(encryptData);
String decryptData = AESUtil.decryptData(encryptData);
System.out.println(decryptData);
System.out.println(decryptData.equals("432871"));
}
@Test
public void test3() throws Exception {
String a = null;
Map map = JSON.parseObject(null, Map.class);
String b = "";
Map map1 = JSON.parseObject(b, Map.class);
String c = "{'a': 'qweqweqw'}";
Map map2 = JSON.parseObject(c, Map.class);
System.out.println(StringUtils.format("over {}{}{}", map, map1, map2));
String params = "{\"providerId\":2,\"storeIds\":\"2,3,5\",\"probability\":1.6,\"step\":2L}";
String params1 = "{\"providerId\":2,\"probability\":1.6,\"step\":2}";
String params2 = "{\"probability\":1.6,\"step\":2}";
String params3 = "{\"providerId\":2,\"storeIds\":\"2,3,5\",\"probability\":1.6,\"step\":2,\"field\":[1,2]}";
String params4 = "{}";
Map map3 = JSON.parseObject(params2, Map.class);
Long providerId = Long.valueOf(String.valueOf(map3.getOrDefault("providerId", 0)));
String storeIds = String.valueOf(map3.getOrDefault("storeId", null));
Double probability = Double.valueOf(String.valueOf(map3.getOrDefault("probability", 1.0)));
Long step = Long.valueOf(String.valueOf(map3.getOrDefault("step", 1)));
System.out.println(map3);
System.out.println(StringUtils.format("provider {}, stores {}, probability {}, step {}", providerId, storeIds, probability, step));
SegchkFlushCnt segchkFlushCnt = JSON.parseObject(params4, SegchkFlushCnt.class);
System.out.println(StringUtils.format("ret SegchkFlushCnt {}", segchkFlushCnt.toString()));
}
@Test
public void test4(){
List<Double> separates = new ArrayList<Double>();
separates.add(1.0);
separates.add(10.0);
List<Integer> percents = new ArrayList<Integer>();
percents.add(90);
percents.add(9);
percents.add(1);
for(int i=0;i<100;i++) {
double number = RateRandomNumber.produceRateRandomNumber(0.1, 100, separates, percents);
System.out.println(String.format("%.2f",number));
}
}
@Test
public void test5(){
//Map<String,List<Integer>>
Map<String, List<Integer>> collect = Stream.of(-6, -7, -8, -9, 1, 2, 3, 4, 5, 6)
.collect(Collectors.groupingBy(integer -> {
if (integer < 0) {
return "小于";
} else if (integer == 0) {
return "等于";
} else {
return "大于";
}
}
));
//Map<String,Set<Integer>>
//自定义下游收集器
Map<String, Set<Integer>> collect1 = Stream.of(-6, -7, -8, -9, 1, 2, 3, 4, 5, 6)
.collect(Collectors.groupingBy(integer -> {
if (integer < 0) {
return "小于";
} else if (integer == 0) {
return "等于";
} else {
return "大于";
}
}
, Collectors.toSet()));
//Map<String,Set<Integer>>
//自定义map容器 和 下游收集器
LinkedHashMap<String, Set<Integer>> collect2 = Stream.of(-6, -7, -8, -9, 1, 2, 3, 4, 5, 6)
.collect(Collectors.groupingBy(integer -> {
if (integer < 0) {
return "小于";
} else if (integer == 0) {
return "等于";
} else {
return "大于";
}
}
, LinkedHashMap::new, Collectors.toSet()));
System.out.println(collect);
System.out.println(collect1);
System.out.println(collect2);
}
@Test
public void test6(){
HashMap<Object, Object> map = new HashMap();
map.put("a:2:1",9);
map.put("a:2:2",6);
map.put("a:2:3",15);
map.put("a:3:4",18);
map.put("a:3:5",16);
map.put("b:2:1",15);
map.put("b:2:3",54);
map.put("b:3:6",54);
HashMap<Object, Object> map1 = new HashMap();
map1.put("c:3:5",4);
map1.put("c:2:1",5);
map1.put("d:2:3",357);
map1.put("d:3:6",57);
ConcurrentMap<Long, List<SegchkStoreCntCtrl>> collect = map.entrySet().parallelStream().map(v -> {
String[] split = v.getKey().toString().split(":");
SegchkStoreCntCtrl tmp = new SegchkStoreCntCtrl();
tmp.setStoreId(Long.valueOf(split[2]));
tmp.setProviderId(Long.valueOf(split[1]));
if (split[0].equalsIgnoreCase("a")) {
tmp.setBrowseCnt((Integer) v.getValue());
} else if (split[0].equalsIgnoreCase("b")) {
tmp.setCollectCnt((Integer) v.getValue());
}
return tmp;
}).collect(Collectors.groupingByConcurrent(SegchkStoreCntCtrl::getStoreId
, Collectors.toList()
/*, Collectors.reducing(new SegchkStoreCntCtrl(), (a, item) -> {
SegchkStoreCntCtrl tmp = ObjectUtils.isEmpty(a) ? new SegchkStoreCntCtrl() : a;
if (!ObjectUtils.isEmpty(item.getProviderId())) {
tmp.setProviderId(item.getProviderId());
}
if (!ObjectUtils.isEmpty(item.getStoreId())) {
tmp.setStoreId(item.getStoreId());
}
if (!ObjectUtils.isEmpty(item.getProviderId())) {
tmp.setProviderId(item.getProviderId());
}
if (!ObjectUtils.isEmpty(item.getBrowseCnt())) {
tmp.setBrowseCnt(item.getBrowseCnt());
}
if (!ObjectUtils.isEmpty(item.getCollectCnt())) {
tmp.setCollectCnt(item.getCollectCnt());
}
return tmp;
}*/
));
/*collect.forEach((storeId, o) -> {
SegchkStoreCntCtrl segchkStoreCntCtrl = o.parallelStream().reduce((a, item) -> {
SegchkStoreCntCtrl tmp = ObjectUtils.isEmpty(a) ? new SegchkStoreCntCtrl() : a;
if (!ObjectUtils.isEmpty(item.getProviderId())) {
tmp.setProviderId(item.getProviderId());
}
if (!ObjectUtils.isEmpty(item.getStoreId())) {
tmp.setStoreId(item.getStoreId());
}
if (!ObjectUtils.isEmpty(item.getProviderId())) {
tmp.setProviderId(item.getProviderId());
}
if (!ObjectUtils.isEmpty(item.getBrowseCnt())) {
tmp.setBrowseCnt(item.getBrowseCnt());
}
if (!ObjectUtils.isEmpty(item.getCollectCnt())) {
tmp.setCollectCnt(item.getCollectCnt());
}
return tmp;
}).get();
return;
});*/
System.out.println(collect);
List<SegchkStoreCntCtrl> collect1 = collect.entrySet().parallelStream().map(entry -> {
Optional<SegchkStoreCntCtrl> reduce = entry.getValue().stream().reduce((ret, item) -> {
SegchkStoreCntCtrl tmp = ObjectUtils.isEmpty(ret) ? new SegchkStoreCntCtrl() : ret;
if (!ObjectUtils.isEmpty(item.getProviderId())) {
tmp.setProviderId(item.getProviderId());
}
if (!ObjectUtils.isEmpty(item.getStoreId())) {
tmp.setStoreId(item.getStoreId());
}
if (!ObjectUtils.isEmpty(item.getProviderId())) {
tmp.setProviderId(item.getProviderId());
}
if (!ObjectUtils.isEmpty(item.getBrowseCnt())) {
tmp.setBrowseCnt(item.getBrowseCnt());
}
if (!ObjectUtils.isEmpty(item.getCollectCnt())) {
tmp.setCollectCnt(item.getCollectCnt());
}
return tmp;
});
return reduce;
}).filter(opt -> opt.isPresent()).map(opt -> opt.get()).collect(Collectors.toList());
System.out.println(collect1);
ConcurrentMap<Long, List<SegchkStoreCntCtrl>> collect2 = Stream.concat(map.entrySet().stream(), map1.entrySet().stream()).map(v -> {
String[] split = v.getKey().toString().split(":", -1);
Integer cnt = (Integer) v.getValue();
Long providerId = Long.valueOf(split[1]);
Long storeId = Long.valueOf(split[2]);
SegchkStoreCntCtrl tmp = new SegchkStoreCntCtrl();
tmp.setProviderId(providerId);
tmp.setStoreId(storeId);
if (split[0].equalsIgnoreCase("a")) {
tmp.setBrowseCnt(cnt);
} else if (split[0].equalsIgnoreCase("b")) {
tmp.setCollectCnt(cnt);
} else if (split[0].equalsIgnoreCase("c")) {
tmp.setBrowseCnt1(cnt);
} else if (split[0].equalsIgnoreCase("d")) {
tmp.setCollectCnt1(cnt);
}
return tmp;
}).parallel().collect(Collectors.groupingByConcurrent(v -> v.getStoreId(), Collectors.toList()));
System.out.println(collect2);
List<SegchkStoreCntCtrl> collect3 = collect2.entrySet().parallelStream().map(entry -> {
Optional<SegchkStoreCntCtrl> reduce = entry.getValue().stream().reduce((ret, item) -> {
SegchkStoreCntCtrl tmp = ObjectUtils.isEmpty(ret) ? new SegchkStoreCntCtrl() : ret;
if (!ObjectUtils.isEmpty(item.getProviderId())) {
tmp.setProviderId(item.getProviderId());
}
if (!ObjectUtils.isEmpty(item.getStoreId())) {
tmp.setStoreId(item.getStoreId());
}
if (!ObjectUtils.isEmpty(item.getProviderId())) {
tmp.setProviderId(item.getProviderId());
}
if (!ObjectUtils.isEmpty(item.getBrowseCnt())) {
tmp.setBrowseCnt(item.getBrowseCnt());
}
if (!ObjectUtils.isEmpty(item.getCollectCnt())) {
tmp.setCollectCnt(item.getCollectCnt());
}
return tmp;
});
return reduce;
}).filter(opt -> opt.isPresent()).map(opt -> opt.get()).collect(Collectors.toList());
System.out.println(collect3);
}
@Test
@DisplayName("测试对象map聚合")
public void test7(){
SegchkStoreCntCtrl a = new SegchkStoreCntCtrl();
a.setProviderId(1L);
a.setStoreId(1L);
a.setBookCnt(2);
a.setBookCnt1(3);
a.setCollectCnt(3);
a.setCollectCnt1(4);
a.setBrowseCnt(5);
SegchkStoreCntCtrl b = new SegchkStoreCntCtrl();
b.setProviderId(1L);
b.setStoreId(2L);
b.setBookCnt(6);
b.setBookCnt1(7);
b.setCollectCnt(8);
b.setCollectCnt1(9);
b.setBrowseCnt1(10);
List<SegchkStoreCntCtrl> list = new ArrayList<SegchkStoreCntCtrl>();
list.add(a);
list.add(b);
List<Map> mapList = list.parallelStream().map(v -> v.getRedisMap(0)).collect(Collectors.toList());
Map<String, Integer> tmpmap = new HashMap<String, Integer>();
tmpmap.put("collect_cnt:1:2", 11);
mapList.add(tmpmap);
Map<String, Integer> collect = (Map<String, Integer>) mapList
.stream()
.flatMap(v -> v.entrySet().stream())
.map(v -> (Map.Entry<String, Integer>) v)
.collect(Collectors.toMap(
v1 -> ((Map.Entry<String, Integer>) v1).getKey()
, v1 -> ((Map.Entry<String, Integer>) v1).getValue()
, (m, n) -> m >= n ? m : n));
/*.collect(Collectors.toConcurrentMap(v1 -> ((Map.Entry<String, Integer>) v1).getKey()
, v1 -> ((Map.Entry<String, Integer>) v1).getValue()));*/
/*.collect(HashMap::new, (x, y) -> {
Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>) y;
((HashMap<String, Integer>) x).put(entry.getKey(), entry.getValue());
}, HashMap::putAll);*/
System.out.println(collect);
}
}

View File

@ -0,0 +1,67 @@
package com.ruoyi.segchk.mapper;
import com.ruoyi.framework.config.MyBatisConfig;
import com.ruoyi.segchk.domain.SegchkUserWebReq;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.ActiveProfiles;
import test.core.ut.BaseDbAndRedisUnitTest;
import javax.annotation.Resource;
import static org.junit.jupiter.api.Assertions.*;
@Import({SegchkProviderIndexMapper.class, SegchkUserWebReq.class, MyBatisConfig.class})
//@ActiveProfiles("unit-test")
@ComponentScan(basePackages = "com.ruoyi.segchk.**.*Mapper")
class SegchkProviderIndexMapperTest extends BaseDbAndRedisUnitTest {
@Autowired
private SegchkProviderIndexMapper segchkProviderIndexMapper;
@BeforeEach
void setUp() {
}
@AfterEach
void tearDown() {
}
@Test
@DisplayName("selectSegchkProviderWebInfo")
void selectSegchkProviderWebInfo() {
SegchkUserWebReq segchkUserWebReq = new SegchkUserWebReq();
segchkUserWebReq.setProviderId(3L);
segchkProviderIndexMapper.selectSegchkProviderWebInfo(segchkUserWebReq);
}
@Test
void selectSegchkStoreServiceList() {
}
@Test
void selectSegchkStoreSaleList() {
}
@Test
void selectSegchkStoreServiceDetails() {
}
@Test
void selectSegchkStoreSaleDetails() {
}
@Test
void selectProviderOpenIdById() {
}
@Test
void selectSegchkProviderName() {
}
}

View File

@ -0,0 +1,41 @@
package com.ruoyi.segchk.service.impl;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.segchk.domain.SegchkStoreStatus;
import com.ruoyi.segchk.mapper.SegchkStoreIndexMapper;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import;
import test.core.ut.BaseDbAndRedisUnitTest;
import javax.annotation.Resource;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.*;
@Slf4j
@Import({ISegchkStoreIndexServiceImpl.class, RedisCache.class})
@ComponentScan(basePackages = {"com.ruoyi.segchk.mapper"})
class ISegchkStoreIndexServiceImplTest extends BaseDbAndRedisUnitTest {
// @Resource
// private ISegchkStoreIndexServiceImpl segchkStoreIndexService;
@Resource
private RedisCache redisService;
@Test
void testRediswithBoolean() {
Boolean aaa = true;
redisService.setCacheObject("test:boolean:true", aaa);
}
@Test
void orderCheckTransaction() {
System.out.println("adsfadf");
}
}

View File

@ -0,0 +1,34 @@
package com.ruoyi.segchk.service.impl;
import com.ruoyi.common.core.redis.RedisCache;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.Import;
import test.core.ut.BaseDbAndRedisUnitTest;
import javax.annotation.Resource;
@Import({RedisCache.class})
public class SegchkProviderIndexServiceImplTest extends BaseDbAndRedisUnitTest {
@Resource
private RedisCache redisService;
@Test
public void test1(){
System.out.println("adfsd");
Boolean aaa = true;
redisService.setCacheObject("test:boolean:true", aaa);
}
@Test
public void test2() throws ClassNotFoundException {
String type = "java.lang.Boolean";
Object a = true;
Class cast = Class.forName(type).getClass().cast(a);
}
}

View File

@ -0,0 +1,59 @@
spring:
main:
lazy-initialization: true # 开启懒加载,加快速度
banner-mode: off # 单元测试,禁用 Banner
--- #################### 数据库相关配置 ####################
spring:
# 数据源配置项
datasource:
name: ruoyi-vue-pro
url: jdbc:mysql://192.168.2.30:8306/kaletest?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
driver-class-name: com.mysql.cj.jdbc.Driver
username: kaletest_yinzy
password: XMG2-Rel.2
druid:
async-init: true # 单元测试,异步初始化 Druid 连接池,提升启动速度
initial-size: 1 # 单元测试,配置为 1提升启动速度
# sql:
# init:
# schema-locations: classpath:/sql/create_tables.sql
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
redis:
host: 192.168.2.40 # 地址
port: 63795 # 端口(单元测试,使用 16379 端口)
database: 3 # 数据库索引
# 密码
password: seg_123456
# 连接超时时间
timeout: 10s
mybatis:
lazy-initialization: true # 单元测试,设置 MyBatis Mapper 延迟加载,加速每个单元测试
# 搜索指定包别名
typeAliasesPackage: com.ruoyi.**.domain
# 配置mapper的扫描找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml
--- #################### 定时任务相关配置 ####################
--- #################### 配置中心相关配置 ####################
--- #################### 服务保障相关配置 ####################
# Lock4j 配置项(单元测试,禁用 Lock4j
# Resilience4j 配置项
--- #################### 监控相关配置 ####################
--- #################### 芋道相关配置 ####################
# 芋道配置项,设置当前项目所有自定义的配置
yudao:
info:
base-package: cn.iocoder.yudao.module

View File

@ -0,0 +1,4 @@
<configuration>
<!-- 引用 Spring Boot 的 logback 基础配置 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
</configuration>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="true"/> <!-- 全局映射器启用缓存 -->
<setting name="useGeneratedKeys" value="true"/> <!-- 允许 JDBC 支持自动生成主键 -->
<setting name="defaultExecutorType" value="REUSE"/> <!-- 配置默认的执行器 -->
<setting name="logImpl" value="SLF4J"/> <!-- 指定 MyBatis 所用日志的具体实现 -->
<!-- <setting name="mapUnderscoreToCamelCase" value="true"/> 驼峰式命名 -->
</settings>
</configuration>

View File

@ -0,0 +1,4 @@
package com.ruoyi.segchk.core;
public @interface TestImpl {
}

View File

@ -0,0 +1,63 @@
package com.ruoyi.segchk.domain;
import java.util.ArrayList;
public class SegchkFlushCnt {
private Long providerId = 0L;
private String storeIds = null;
private Double probability = 1.0;
private Integer step = 1;
private ArrayList<Long> field = null;
public String getStoreIds() {
return storeIds;
}
public ArrayList<Long> getField() {
return field;
}
public void setField(ArrayList<Long> field) {
this.field = field;
}
public Long getProviderId() {
return providerId;
}
public void setProviderId(Long providerId) {
this.providerId = providerId;
}
public Double getProbability() {
return probability;
}
public void setProbability(Double probability) {
this.probability = probability;
}
public Integer getStep() {
return step;
}
public void setStep(Integer step) {
this.step = step;
}
public void setStoreIds(String storeIds) {
this.storeIds = storeIds;
}
@Override
public String toString() {
return "SegchkFlushCnt{" +
"providerId=" + providerId +
", storeIds='" + storeIds + '\'' +
", probability=" + probability +
", step=" + step +
", field=" + field +
'}';
}
}

View File

@ -1,91 +0,0 @@
package com.ruoyi.segchk.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.Date;
/**
* seg segchk_user_reward
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkMsgWebResp extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 消息类型0系统消息1交易消息2提醒消息3评价消息4核消消息 */
@Excel(name = "消息类型0系统消息1交易消息2提醒消息3评价消息4核消消息")
private String msgType;
/** 消息内容 */
@Excel(name = "消息内容")
private String msgContent;
/** 消息标题 */
@Excel(name = "消息标题")
private String msgTitle;
/** 消息状态0未发送1未读2已读3删除 */
@Excel(name = "消息状态0未发送1未读2已读3删除")
private String msgFlag;
/** 接收时间 */
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@Excel(name = "接收时间", width = 30, dateFormat = "yyyy-MM-dd hh:mm:ss")
private Date fromTime;
public String getMsgType() {
return msgType;
}
public void setMsgType(String msgType) {
this.msgType = msgType;
}
public String getMsgContent() {
return msgContent;
}
public void setMsgContent(String msgContent) {
this.msgContent = msgContent;
}
public String getMsgTitle() {
return msgTitle;
}
public void setMsgTitle(String msgTitle) {
this.msgTitle = msgTitle;
}
public String getMsgFlag() {
return msgFlag;
}
public void setMsgFlag(String msgFlag) {
this.msgFlag = msgFlag;
}
public Date getFromTime() {
return fromTime;
}
public void setFromTime(Date fromTime) {
this.fromTime = fromTime;
}
@Override
public String toString() {
return "SegchkMsgWebResp{" +
"msgType='" + msgType + '\'' +
", msgContent='" + msgContent + '\'' +
", msgTitle='" + msgTitle + '\'' +
", msgFlag='" + msgFlag + '\'' +
", fromTime=" + fromTime +
'}';
}
}

View File

@ -0,0 +1,124 @@
package com.ruoyi.segchk.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* seg segchk_provider_cnt_ctrl
*
* @author yinzhiying
* @date 2022-06-26
*/
public class SegchkProviderCntCtrl extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** vr标识全局唯一 */
private Long cntId;
/** 运营商id全局唯一 */
@Excel(name = "运营商id全局唯一")
private Long providerId;
/** 浏览量,大于0表示生效 */
@Excel(name = "浏览量,大于0表示生效")
private Integer browseCnt;
/** 收藏次数,大于0表示生效 */
@Excel(name = "收藏次数,大于0表示生效")
private Integer collectCnt;
/** 预约次数0无效1有效 */
@Excel(name = "预约次数0无效1有效")
private Integer bookCnt;
/** 管理状态0有效1失效 */
@Excel(name = "管理状态0有效1失效")
private String mgtState;
/** 创建或修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date modTime;
public void setCntId(Long cntId)
{
this.cntId = cntId;
}
public Long getCntId()
{
return cntId;
}
public void setProviderId(Long providerId)
{
this.providerId = providerId;
}
public Long getProviderId()
{
return providerId;
}
public void setBrowseCnt(Integer browseCnt)
{
this.browseCnt = browseCnt;
}
public Integer getBrowseCnt()
{
return browseCnt;
}
public void setCollectCnt(Integer collectCnt)
{
this.collectCnt = collectCnt;
}
public Integer getCollectCnt()
{
return collectCnt;
}
public void setBookCnt(Integer bookCnt)
{
this.bookCnt = bookCnt;
}
public Integer getBookCnt()
{
return bookCnt;
}
public void setMgtState(String mgtState)
{
this.mgtState = mgtState;
}
public String getMgtState()
{
return mgtState;
}
public void setModTime(Date modTime)
{
this.modTime = modTime;
}
public Date getModTime()
{
return modTime;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("cntId", getCntId())
.append("providerId", getProviderId())
.append("browseCnt", getBrowseCnt())
.append("collectCnt", getCollectCnt())
.append("bookCnt", getBookCnt())
.append("mgtState", getMgtState())
.append("modTime", getModTime())
.toString();
}
}

View File

@ -2,6 +2,9 @@ package com.ruoyi.segchk.domain;
import java.util.List;
import java.util.Date;
import java.util.StringJoiner;
import java.util.stream.Collectors;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@ -50,6 +53,18 @@ public class SegchkProviderMgt extends BaseEntity
@Excel(name = "状态0正常1失效2删除")
private Integer flagId;
/** 非会员能否使用赠卡,默认否0;能1 */
@Excel(name = "默认否0;能1")
private Integer useSelfCardWithNovip;
/** 是否允许商家赠卡,0否1一个用户只能持有一张2用户可持有多张 */
@Excel(name = "商家赠卡用户")
private Integer canGiveSelf;
/** 用户预约的有效时长小时0长期正数有效 */
@Excel(name = "用户预约的有效时长")
private Integer bookLiveHour;
/** 区县行政代码 */
@Excel(name = "区县行政代码")
private Integer districtId;
@ -162,6 +177,14 @@ public class SegchkProviderMgt extends BaseEntity
this.wechatId = wechatId;
}
public Integer getUseSelfCardWithNovip() {
return useSelfCardWithNovip;
}
public void setUseSelfCardWithNovip(Integer useSelfCardWithNovip) {
this.useSelfCardWithNovip = useSelfCardWithNovip;
}
@Override
public String toString() {
return "SegchkProviderMgt{" +
@ -173,9 +196,26 @@ public class SegchkProviderMgt extends BaseEntity
", iconUrl='" + iconUrl + '\'' +
", phoneNo='" + phoneNo + '\'' +
", flagId=" + flagId +
", useSelfCardWithNovip=" + useSelfCardWithNovip +
", districtId=" + districtId +
", delTime=" + delTime +
", segchkLableMgtList=" + segchkLableMgtList +
", segchkLableMgtList=" + segchkLableMgtList.stream().map(x -> x.getCardTypeName()).collect(Collectors.joining(",")) +
'}';
}
public Integer getCanGiveSelf() {
return canGiveSelf;
}
public void setCanGiveSelf(Integer canGiveSelf) {
this.canGiveSelf = canGiveSelf;
}
public Integer getBookLiveHour() {
return bookLiveHour;
}
public void setBookLiveHour(Integer bookLiveHour) {
this.bookLiveHour = bookLiveHour;
}
}

View File

@ -1,182 +0,0 @@
package com.ruoyi.segchk.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.List;
/**
* seg segchk_recommender_storeweb
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkRecommenderStoreWebResp extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 运营商id全局唯一 */
@Excel(name = "运营商id全局唯一")
private Long providerId;
/** 商家id全局唯一 */
@Excel(name = "商家id全局唯一")
private Long storeId;
/** 商家名称 */
@Excel(name = "商家名称")
private String storeName;
/** 商户显示序号 */
@Excel(name = "商户显示序号")
private Integer storeSort;
/** 商户列表模式时的图标 */
@Excel(name = "商户列表模式时的图标")
private String storeIcon;
/** 商户的大图标 */
@Excel(name = "商户的大图标")
private String storeGificon;
/** 商户经度 */
@Excel(name = "商户经度")
private BigDecimal storeLon;
/** 商户纬度 */
@Excel(name = "商户纬度")
private BigDecimal storeLat;
/** 商户累积核消次数 */
@Excel(name = "商户累积核消次数")
private Integer chkCount;
/** 商户平均星评 */
@Excel(name = "商户平均星评")
private BigDecimal starAvg;
/** 用户距离 */
@Excel(name = "用户距离")
private BigDecimal userDist;
/** 商户标签列表 */
@Valid
private List<SegchkRecommenderStoreLableWeb> lables;
public Long getProviderId() {
return providerId;
}
public void setProviderId(Long providerId) {
this.providerId = providerId;
}
public Long getStoreId() {
return storeId;
}
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
public Integer getStoreSort() {
return storeSort;
}
public void setStoreSort(Integer storeSort) {
this.storeSort = storeSort;
}
public String getStoreIcon() {
return storeIcon;
}
public void setStoreIcon(String storeIcon) {
this.storeIcon = storeIcon;
}
public String getStoreGificon() {
return storeGificon;
}
public void setStoreGificon(String storeGificon) {
this.storeGificon = storeGificon;
}
public BigDecimal getStoreLon() {
return storeLon;
}
public void setStoreLon(BigDecimal storeLon) {
this.storeLon = storeLon;
}
public BigDecimal getStoreLat() {
return storeLat;
}
public void setStoreLat(BigDecimal storeLat) {
this.storeLat = storeLat;
}
public Integer getChkCount() {
return chkCount;
}
public void setChkCount(Integer chkCount) {
this.chkCount = chkCount;
}
public BigDecimal getStarAvg() {
return starAvg;
}
public void setStarAvg(BigDecimal starAvg) {
this.starAvg = starAvg;
}
public List<SegchkRecommenderStoreLableWeb> getLables() {
return lables;
}
public void setLables(List<SegchkRecommenderStoreLableWeb> lables) {
this.lables = lables;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
@Override
public String toString() {
return "SegchkRecommenderStoreWebResp{" +
"providerId=" + providerId +
", storeId=" + storeId +
", storeName=" + storeName +
", storeSort=" + storeSort +
", storeIcon='" + storeIcon + '\'' +
", storeGificon='" + storeGificon + '\'' +
", storeLon=" + storeLon +
", storeLat=" + storeLat +
", chkCount=" + chkCount +
", starAvg=" + starAvg +
", lables=" + lables +
", userDist=" + userDist +
'}';
}
public BigDecimal getUserDist() {
return userDist;
}
public void setUserDist(BigDecimal userDist) {
this.userDist = userDist;
}
}

View File

@ -1,90 +0,0 @@
package com.ruoyi.segchk.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.Date;
/**
* seg segchk_user_basic_info
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkServiceAndSaleDetailWebResp extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 创建或修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date modTime;
/** 会员卡号 */
@Excel(name = "会员卡号")
private Long cardId;
/** 卡类型名称 */
@Excel(name = "卡类型名称")
private String cardName;
/** 商家名称 */
@Excel(name = "商家名称")
private String storeName;
/** 统计结果 */
@Excel(name = "统计结果")
private Long staticCount;
public Date getModTime() {
return modTime;
}
public void setModTime(Date modTime) {
this.modTime = modTime;
}
public Long getCardId() {
return cardId;
}
public void setCardId(Long cardId) {
this.cardId = cardId;
}
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public Long getStaticCount() {
return staticCount;
}
public void setStaticCount(Long staticCount) {
this.staticCount = staticCount;
}
@Override
public String toString() {
return "SegchkServiceAndSaleDetailWebResp{" +
"modTime=" + modTime +
", cardId=" + cardId +
", cardName='" + cardName + '\'' +
", storeName='" + storeName + '\'' +
", staticCount=" + staticCount +
'}';
}
}

View File

@ -1,98 +0,0 @@
package com.ruoyi.segchk.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* seg segchk_user_basic_info
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkServiceAndSaleWebReq extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 运营商id全局唯一 */
@Excel(name = "运营商id全局唯一")
private Long providerId;
/** 商户id */
@Excel(name = "商户id")
private Long storeId;
/** 统计等级0按月统计1按月查询统计 */
@Excel(name = "统计等级")
private Integer staticLevel;
/** 统计月份只在staticLevel为1时有效,0时为统计的月数 */
@Excel(name = "统计月份")
private String staticMonth;
/** 用户身份0运营商1商家 */
@Excel(name = "用户身份")
private Integer userLevel;
/** 数据源选择0核消1售卡 */
@Excel(name = "数据源选择")
private Integer srcFlag;
public Long getProviderId() {
return providerId;
}
public void setProviderId(Long providerId) {
this.providerId = providerId;
}
public Long getStoreId() {
return storeId;
}
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
public Integer getStaticLevel() {
return staticLevel;
}
public void setStaticLevel(Integer staticLevel) {
this.staticLevel = staticLevel;
}
public String getStaticMonth() {
return staticMonth;
}
public void setStaticMonth(String staticMonth) {
this.staticMonth = staticMonth;
}
public Integer getUserLevel() {
return userLevel;
}
public void setUserLevel(Integer userLevel) {
this.userLevel = userLevel;
}
@Override
public String toString() {
return "SegchkServiceAndSaleWebReq{" +
"providerId=" + providerId +
", storeId=" + storeId +
", staticLevel='" + staticLevel + '\'' +
", staticMonth='" + staticMonth + '\'' +
", userLevel=" + userLevel +
'}';
}
public Integer getSrcFlag() {
return srcFlag;
}
public void setSrcFlag(Integer srcFlag) {
this.srcFlag = srcFlag;
}
}

View File

@ -1,61 +0,0 @@
package com.ruoyi.segchk.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* seg segchk_user_basic_info
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkServiceAndSaleWebResp extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 统计月份只在staticLevel为1时有效 */
@Excel(name = "统计月份")
private String staticMonth;
/** staticMonth与staticMonth同义只是为yyyy-mm-01使用查询具备详单时使用 */
@Excel(name = "统计月份")
private String queryMon;
/** 统计结果 */
@Excel(name = "统计结果")
private Long staticCount;
public String getStaticMonth() {
return staticMonth;
}
public void setStaticMonth(String staticMonth) {
this.staticMonth = staticMonth;
}
public Long getStaticCount() {
return staticCount;
}
public void setStaticCount(Long staticCount) {
this.staticCount = staticCount;
}
public String getQueryMon() {
return queryMon;
}
public void setQueryMon(String queryMon) {
this.queryMon = queryMon;
}
@Override
public String toString() {
return "SegchkServiceAndSaleWebResp{" +
"staticMonth='" + staticMonth + '\'' +
", queryMon='" + queryMon + '\'' +
", staticCount=" + staticCount +
'}';
}
}

View File

@ -1,116 +0,0 @@
package com.ruoyi.segchk.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.Date;
/**
* seg segchk_service_comment
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkServiceCommentWebResp extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 商家id全局唯一 */
@Excel(name = "商家id全局唯一")
private Long storeId;
/** 星级评价 */
@Excel(name = "星级评价")
private Integer starLevel;
/** 评价内容 */
@Excel(name = "评价内容")
private String contentText;
/** 创建或修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date modTime;
/** 运营商id全局唯一 */
@Excel(name = "运营商id全局唯一")
private Long providerId;
/** 充值卡id */
@Excel(name = "充值卡名称")
private String cardName;
/** 用户id全局唯一 */
@Excel(name = "用户id全局唯一")
private String userName;
public Long getStoreId() {
return storeId;
}
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
public Integer getStarLevel() {
return starLevel;
}
public void setStarLevel(Integer starLevel) {
this.starLevel = starLevel;
}
public String getContentText() {
return contentText;
}
public void setContentText(String contentText) {
this.contentText = contentText;
}
public Date getModTime() {
return modTime;
}
public void setModTime(Date modTime) {
this.modTime = modTime;
}
public Long getProviderId() {
return providerId;
}
public void setProviderId(Long providerId) {
this.providerId = providerId;
}
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String toString() {
return "SegchkServiceCommentWebResp{" +
"storeId=" + storeId +
", starLevel=" + starLevel +
", contentText='" + contentText + '\'' +
", modTime=" + modTime +
", providerId=" + providerId +
", cardName='" + cardName + '\'' +
", userName='" + userName + '\'' +
'}';
}
}

View File

@ -50,14 +50,18 @@ public class SegchkServiceOrderChkTestResp extends BaseEntity
@Excel(name = "我想去订单核消卡名称")
private String cardName;
/** 我想去订单核消卡可使用次数 */
/** 我想去订单核消卡针对该商家可使用次数 */
@Excel(name = "我想去订单核消卡可使用次数")
private Integer totalCount;
/** 我想去订单核消卡剩余次数 */
/** 我想去订单核消卡针对该商家剩余次数 */
@Excel(name = "我想去订单核消卡剩余次数")
private Integer hasLeftCount;
/** 我想去订单会员卡剩余次数 */
@Excel(name = "会员卡剩余次数")
private Integer vipLeftCount;
/** 我想去订单核消卡状态 */
@Excel(name = "我想去订单核消卡状态")
private Integer cardStatus;
@ -204,6 +208,7 @@ public class SegchkServiceOrderChkTestResp extends BaseEntity
", cardName='" + cardName + '\'' +
", totalCount=" + totalCount +
", hasLeftCount=" + hasLeftCount +
", vipLeftCount=" + vipLeftCount +
", cardStatus=" + cardStatus +
", canFree=" + canFree +
", isExpire=" + isExpire +
@ -219,4 +224,12 @@ public class SegchkServiceOrderChkTestResp extends BaseEntity
public void setLikegoId(Long likegoId) {
this.likegoId = likegoId;
}
public Integer getVipLeftCount() {
return vipLeftCount;
}
public void setVipLeftCount(Integer vipLeftCount) {
this.vipLeftCount = vipLeftCount;
}
}

View File

@ -1,112 +0,0 @@
package com.ruoyi.segchk.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* seg segchk_user_basic_info
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkServiceOrderWebReq extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 运营商id */
@Excel(name = "运营商id")
private Long providerId;
/** 商户id */
@Excel(name = "商户id")
private Long storeId;
/** 用户id */
@Excel(name = "用户id")
private Long userId;
/** 卡id */
@Excel(name = "卡id")
private Long cardId;
/** 会员卡或优惠券下的标签id */
@Excel(name = "会员卡或优惠券下的标签id")
private Integer lableId;
/** 卡类型 0 会员卡1赠卡2优惠券 */
@Excel(name = "卡类型")
private Integer typeId;
/** 卡名称 */
@Excel(name = "卡名称")
private String cardName;
public Long getProviderId() {
return providerId;
}
public void setProviderId(Long providerId) {
this.providerId = providerId;
}
public Long getStoreId() {
return storeId;
}
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getCardId() {
return cardId;
}
public void setCardId(Long cardId) {
this.cardId = cardId;
}
public Integer getLableId() {
return lableId;
}
public void setLableId(Integer lableId) {
this.lableId = lableId;
}
public Integer getTypeId() {
return typeId;
}
public void setTypeId(Integer typeId) {
this.typeId = typeId;
}
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
@Override
public String toString() {
return "SegchkServiceOrderWebReq{" +
"providerId=" + providerId +
", storeId=" + storeId +
", userId=" + userId +
", cardId=" + cardId +
", lableId=" + lableId +
", typeId=" + typeId +
", cardName='" + cardName + '\'' +
'}';
}
}

View File

@ -3,6 +3,8 @@ package com.ruoyi.segchk.domain;
import java.math.BigDecimal;
import java.util.List;
import java.util.Date;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@ -95,6 +97,10 @@ public class SegchkStoreBasicInfo extends BaseEntity
@Excel(name = "是否人工干预0自动1人工")
private String stateFlag;
/** 非会员能否使用赠卡,默认否0;能1 */
@Excel(name = "默认否0;能1")
private Integer useSelfCardWithNovip;
/** 商家经度 */
@Excel(name = "商家经度")
private BigDecimal storeLon;
@ -111,11 +117,17 @@ public class SegchkStoreBasicInfo extends BaseEntity
@Excel(name = "商家描述详情")
private String detail;
/** 商家VR地址 */
@Excel(name = "商家VR地址")
private String vrPath;
/** 创建或修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date modTime;
private SegchkStoreCntCtrl segchkStoreCntCtrl = null;
/** seg商家图片信息信息 */
private List<SegchkStoreImage> segchkStoreImageList;
@ -400,15 +412,51 @@ public class SegchkStoreBasicInfo extends BaseEntity
", cashDay=" + cashDay +
", serviceDownThreshold=" + serviceDownThreshold +
", stateFlag='" + stateFlag + '\'' +
", useSelfCardWithNovip='" + useSelfCardWithNovip + '\'' +
", storeLon=" + storeLon +
", storeLat=" + storeLat +
", onService='" + onService + '\'' +
", detail='" + detail + '\'' +
", modTime=" + modTime +
", segchkStoreImageList=" + segchkStoreImageList +
", segchkStoreChkMgtList=" + segchkStoreChkMgtList +
", segchkStoreLableMgtList=" + segchkStoreLableMgtList +
", segchkStoreSecurityList=" + segchkStoreSecurityList +
'}';
}
public String getVrPath() {
return vrPath;
}
public void setVrPath(String vrPath) {
this.vrPath = vrPath;
}
public String getVRInfo(){
return "SegchkStoreVRInfo{" +
"providerId=" + providerId +
", storeId=" + storeId +
", vrPath='" + vrPath +
'}';
}
public Integer getUseSelfCardWithNovip() {
return useSelfCardWithNovip;
}
public void setUseSelfCardWithNovip(Integer useSelfCardWithNovip) {
this.useSelfCardWithNovip = useSelfCardWithNovip;
}
public SegchkStoreCntCtrl getSegchkStoreCntCtrl() {
return segchkStoreCntCtrl;
}
public void setSegchkStoreCntCtrl(SegchkStoreCntCtrl segchkStoreCntCtrl) {
this.segchkStoreCntCtrl = segchkStoreCntCtrl;
}
public void setStoreCount(Long providerId, SegchkProviderCntCtrl segchkProviderCntCtrl, Map<Object, Object> wechatCount, Map<Object, Object> wechatCount1) {
this.segchkStoreCntCtrl = new SegchkStoreCntCtrl();
this.segchkStoreCntCtrl.setProviderId(providerId);
this.segchkStoreCntCtrl.setStoreId(this.storeId);
this.segchkStoreCntCtrl.setAllCnt(segchkProviderCntCtrl, wechatCount, wechatCount1);
}
}

View File

@ -0,0 +1,240 @@
package com.ruoyi.segchk.domain;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.utils.StringUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* seg segchk_store_cnt_ctrl
*
* @author yinzhiying
* @date 2022-06-26
*/
public class SegchkStoreCntCtrl extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** vr标识全局唯一 */
private Long cntId;
/** 运营商id全局唯一 */
@Excel(name = "运营商id全局唯一")
private Long providerId;
/** 商家ID全局唯一 */
@Excel(name = "商家ID全局唯一")
private Long storeId;
/** 浏览量,大于0表示生效 */
@Excel(name = "浏览量,大于0表示生效")
private Integer browseCnt;
/** 浏览备份 */
@Excel(name = "浏览备份")
private Integer browseCnt1;
/** 收藏次数,大于0表示生效 */
@Excel(name = "收藏次数,大于0表示生效")
private Integer collectCnt;
/** 收藏备份 */
@Excel(name = "收藏备份")
private Integer collectCnt1;
/** 预约次数 */
@Excel(name = "预约次数")
private Integer bookCnt;
/** 预约次数 */
@Excel(name = "预约次数")
private Integer bookCnt1;
/** 管理状态0有效1失效 */
@Excel(name = "管理状态0有效1失效")
private String mgtState;
/** 创建或修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date modTime;
public static Integer getRedisStoreCnt(String key, Long providerId, int segchkProviderCntCtrl, Map<Object, Object> wechatCount, Map<Object, Object> wechatCount1) {
return null;
}
protected static Integer getRedisStoreCnt(String key, Long providerId, Long storeId, Map<Object, Object> map) {
return ObjectUtils.isEmpty(map) ? 0 : (Integer) map.getOrDefault(StringUtils.format("{}:{}:{}", key, providerId, storeId), 0);
}
public void setCntId(Long cntId)
{
this.cntId = cntId;
}
public Long getCntId()
{
return cntId;
}
public void setProviderId(Long providerId)
{
this.providerId = providerId;
}
public Long getProviderId()
{
return providerId;
}
public void setStoreId(Long storeId)
{
this.storeId = storeId;
}
public Long getStoreId()
{
return storeId;
}
public void setBrowseCnt(Integer browseCnt)
{
this.browseCnt = browseCnt;
}
public Integer getBrowseCnt()
{
return browseCnt;
}
public void setBrowseCnt1(Integer browseCnt1)
{
this.browseCnt1 = browseCnt1;
}
public Integer getBrowseCnt1()
{
return browseCnt1;
}
public void setCollectCnt(Integer collectCnt)
{
this.collectCnt = collectCnt;
}
public Integer getCollectCnt()
{
return collectCnt;
}
public void setCollectCnt1(Integer collectCnt1)
{
this.collectCnt1 = collectCnt1;
}
public Integer getCollectCnt1()
{
return collectCnt1;
}
public void setBookCnt(Integer bookCnt)
{
this.bookCnt = bookCnt;
}
public Integer getBookCnt()
{
return bookCnt;
}
public void setBookCnt1(Integer bookCnt1)
{
this.bookCnt1 = bookCnt1;
}
public Integer getBookCnt1()
{
return bookCnt1;
}
public void setMgtState(String mgtState)
{
this.mgtState = mgtState;
}
public String getMgtState()
{
return mgtState;
}
public void setModTime(Date modTime)
{
this.modTime = modTime;
}
public Date getModTime()
{
return modTime;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("cntId", getCntId())
.append("providerId", getProviderId())
.append("storeId", getStoreId())
.append("browseCnt", getBrowseCnt())
.append("browseCnt1", getBrowseCnt1())
.append("collectCnt", getCollectCnt())
.append("collectCnt1", getCollectCnt1())
.append("bookCnt", getBookCnt())
.append("bookCnt1", getBookCnt1())
.append("mgtState", getMgtState())
.append("modTime", getModTime())
.toString();
}
public Map getRedisMap(int flag){
Map map = new HashMap<>();
if(flag == 0){
if (!ObjectUtils.isEmpty(this.bookCnt)) {
map.put("book_cnt" + ":" + this.providerId + ":" + this.storeId, this.bookCnt);
}
if (!ObjectUtils.isEmpty(this.browseCnt)) {
map.put("browse_cnt" + ":" + this.providerId + ":" + this.storeId, this.browseCnt);
}
if (!ObjectUtils.isEmpty(this.collectCnt)) {
map.put("collect_cnt" + ":" + this.providerId + ":" + this.storeId, this.collectCnt);
}
}
else {
if (!ObjectUtils.isEmpty(this.bookCnt1)) {
map.put("book_cnt1" + ":" + this.providerId + ":" + this.storeId, this.bookCnt1);
}
if (!ObjectUtils.isEmpty(this.browseCnt1)) {
map.put("browse_cnt1" + ":" + this.providerId + ":" + this.storeId, this.browseCnt1);
}
if (!ObjectUtils.isEmpty(this.collectCnt1)) {
map.put("collect_cnt1" + ":" + this.providerId + ":" + this.storeId, this.collectCnt1);
}
}
return map;
}
public void setAllCnt(SegchkProviderCntCtrl segchkProviderCntCtrl, Map<Object, Object> wechatCount, Map<Object, Object> wechatCount1) {
this.setBrowseCnt(getRedisStoreCnt("browse_cnt", this.providerId, this.storeId, wechatCount));
this.setCollectCnt(getRedisStoreCnt("collect_cnt", this.providerId, this.storeId, wechatCount));
this.setBookCnt(getRedisStoreCnt("book_cnt", this.providerId, this.storeId, wechatCount));
this.setBrowseCnt1(getRedisStoreCnt("browse_cnt1", this.providerId, this.storeId, wechatCount1));
this.setCollectCnt1(getRedisStoreCnt("collect_cnt1", this.providerId, this.storeId, wechatCount1));
this.setBookCnt1(getRedisStoreCnt("book_cnt1", this.providerId, this.storeId, wechatCount1));
}
public long updateBrowse() {
return this.browseCnt - this.browseCnt1;
}
public long updateCollect() {
return this.collectCnt - this.collectCnt1;
}
public long updateBook() {
return this.bookCnt - this.bookCnt1;
}
}

View File

@ -0,0 +1,123 @@
package com.ruoyi.segchk.domain;
import com.ruoyi.common.annotation.Excel;
import org.springframework.util.ObjectUtils;
import java.util.Map;
/**
* seg segchk_store_cnt_ctrl
*
* @author yinzhiying
* @date 2022-06-26
*/
public class SegchkStoreCntResp extends SegchkStoreCntCtrl {
private static final long serialVersionUID = 1L;
/**
* vr
*/
private Long cntId;
/**
* id
*/
@Excel(name = "运营商id全局唯一")
private Long providerId;
/**
* ID
*/
@Excel(name = "商家ID全局唯一")
private Long storeId;
/**
* ,0
*/
@Excel(name = "浏览量,大于0表示生效")
private Integer browseCnt = 0;
/**
* ,0
*/
@Excel(name = "收藏次数,大于0表示生效")
private Integer collectCnt = 0;
/**
*
*/
@Excel(name = "预约次数")
private Integer bookCnt = 0;
public Long getCntId() {
return this.cntId;
}
public void setCntId(Long cntId) {
this.cntId = cntId;
}
public Long getProviderId() {
return this.providerId;
}
public void setProviderId(Long providerId) {
this.providerId = providerId;
}
public Long getStoreId() {
return this.storeId;
}
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
public Integer getBrowseCnt() {
return this.browseCnt;
}
public void setBrowseCnt(Integer browseCnt) {
this.browseCnt = browseCnt;
}
public Integer getCollectCnt() {
return this.collectCnt;
}
public void setCollectCnt(Integer collectCnt) {
this.collectCnt = collectCnt;
}
public Integer getBookCnt() {
return this.bookCnt;
}
public void setBookCnt(Integer bookCnt) {
this.bookCnt = bookCnt;
}
@Override
public String toString() {
return "SegchkStoreCntResp{{" + super.toString() + "}, "
+ "serialVersionUID=" + serialVersionUID + ", "
+ "cntId=" + cntId + ", "
+ "providerId=" + providerId + ", "
+ "storeId=" + storeId + ", "
+ "browseCnt=" + browseCnt + ", "
+ "collectCnt=" + collectCnt + ", "
+ "bookCnt=" + bookCnt + "}";
}
@Override
public void setAllCnt(SegchkProviderCntCtrl segchkProviderCntCtrl, Map<Object, Object> wechatCount, Map<Object, Object> wechatCount1) {
this.setBrowseCnt(SegchkStoreCntCtrl.getRedisStoreCnt("browse_cnt", this.providerId, this.storeId, wechatCount)
+ ((ObjectUtils.isEmpty(segchkProviderCntCtrl) || segchkProviderCntCtrl.getBrowseCnt() == 0) ? 0 : SegchkStoreCntCtrl.getRedisStoreCnt("browse_cnt1", this.providerId, this.storeId, wechatCount1)));
this.setCollectCnt(SegchkStoreCntCtrl.getRedisStoreCnt("collect_cnt", this.providerId, this.storeId, wechatCount)
+ ((ObjectUtils.isEmpty(segchkProviderCntCtrl) || segchkProviderCntCtrl.getCollectCnt() == 0) ? 0 : SegchkStoreCntCtrl.getRedisStoreCnt("collect_cnt1", this.providerId, this.storeId, wechatCount1)));
this.setBookCnt(SegchkStoreCntCtrl.getRedisStoreCnt("book_cnt", this.providerId, this.storeId, wechatCount)
+ ((ObjectUtils.isEmpty(segchkProviderCntCtrl) || segchkProviderCntCtrl.getBookCnt() == 0) ? 0 : SegchkStoreCntCtrl.getRedisStoreCnt("book_cnt1", this.providerId, this.storeId, wechatCount1)));
}
}

View File

@ -1,209 +0,0 @@
package com.ruoyi.segchk.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.List;
/**
* seg segchk_recommender_storeweb
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkStoreIndexWebResp extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 运营商id全局唯一 */
@Excel(name = "运营商id全局唯一")
private Long providerId;
/** 商家id全局唯一 */
@Excel(name = "商家id全局唯一")
private Long storeId;
/** 商家名称 */
@Excel(name = "商家名称")
private String storeName;
/** 商家状态 */
@Excel(name = "商家状态")
private String serviceState;
/** 商户显示序号 */
@Excel(name = "商户显示序号")
private Integer storeSort;
/** 商户列表模式时的图标 */
@Excel(name = "商户列表模式时的图标")
private String storeIcon;
/** 商户的大图标 */
@Excel(name = "商户的大图标")
private String storeGificon;
/** 商户经度 */
@Excel(name = "商户经度")
private BigDecimal storeLon;
/** 商户纬度 */
@Excel(name = "商户纬度")
private BigDecimal storeLat;
/** 用户距离 */
@Excel(name = "用户距离")
private BigDecimal userDist;
/** 商户累积核消次数 */
@Excel(name = "商户累积核消次数")
private Integer chkCount;
/** 商户平均星评 */
@Excel(name = "商户平均星评")
private BigDecimal starAvg;
/** 在线状态 */
@Excel(name = "对应的销售id")
private Integer salerId;
/** 商户标签列表 */
@Valid
private List<SegchkRecommenderStoreLableWeb> lables;
public Long getProviderId() {
return providerId;
}
public void setProviderId(Long providerId) {
this.providerId = providerId;
}
public Long getStoreId() {
return storeId;
}
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
public Integer getStoreSort() {
return storeSort;
}
public void setStoreSort(Integer storeSort) {
this.storeSort = storeSort;
}
public String getStoreIcon() {
return storeIcon;
}
public void setStoreIcon(String storeIcon) {
this.storeIcon = storeIcon;
}
public String getStoreGificon() {
return storeGificon;
}
public void setStoreGificon(String storeGificon) {
this.storeGificon = storeGificon;
}
public BigDecimal getStoreLon() {
return storeLon;
}
public void setStoreLon(BigDecimal storeLon) {
this.storeLon = storeLon;
}
public BigDecimal getStoreLat() {
return storeLat;
}
public void setStoreLat(BigDecimal storeLat) {
this.storeLat = storeLat;
}
public Integer getChkCount() {
return chkCount;
}
public void setChkCount(Integer chkCount) {
this.chkCount = chkCount;
}
public BigDecimal getStarAvg() {
return starAvg;
}
public void setStarAvg(BigDecimal starAvg) {
this.starAvg = starAvg;
}
public List<SegchkRecommenderStoreLableWeb> getLables() {
return lables;
}
public void setLables(List<SegchkRecommenderStoreLableWeb> lables) {
this.lables = lables;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public String getServiceState() {
return serviceState;
}
public void setServiceState(String serviceState) {
this.serviceState = serviceState;
}
public Integer getSalerId() {
return salerId;
}
public void setSalerId(Integer salerId) {
this.salerId = salerId;
}
@Override
public String toString() {
return "SegchkStoreIndexWebResp{" +
"providerId=" + providerId +
", storeId=" + storeId +
", storeName='" + storeName + '\'' +
", serviceState='" + serviceState + '\'' +
", storeSort=" + storeSort +
", storeIcon='" + storeIcon + '\'' +
", storeGificon='" + storeGificon + '\'' +
", storeLon=" + storeLon +
", storeLat=" + storeLat +
", chkCount=" + chkCount +
", starAvg=" + starAvg +
", salerId=" + salerId +
", lables=" + lables +
", userDist=" + userDist +
'}';
}
public BigDecimal getUserDist() {
return userDist;
}
public void setUserDist(BigDecimal userDist) {
this.userDist = userDist;
}
}

View File

@ -26,6 +26,11 @@ public class SegchkStoreSelfMgt extends BaseEntity
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date modTime;
/** 截止时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "截止时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date expirationDate;
/** 商家id全局唯一 */
@Excel(name = "商家id全局唯一")
private Long storeId;
@ -193,6 +198,7 @@ public class SegchkStoreSelfMgt extends BaseEntity
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("freeCardId", getFreeCardId())
.append("modTime", getModTime())
.append("expirationDate", getExpirationDate())
.append("storeId", getStoreId())
.append("providerId", getProviderId())
.append("userId", getUserId())
@ -206,4 +212,12 @@ public class SegchkStoreSelfMgt extends BaseEntity
.append("status", getStatus())
.toString();
}
public Date getExpirationDate() {
return expirationDate;
}
public void setExpirationDate(Date expirationDate) {
this.expirationDate = expirationDate;
}
}

View File

@ -0,0 +1,103 @@
package com.ruoyi.segchk.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
/**
* seg
*
* @author yinzhiying
* @date 2021-08-23
*/
public class SegchkStoreStatus extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 运营商id全局唯一 */
@Excel(name = "运营商id全局唯一")
private Long providerId;
/** 商家id全局唯一 */
private Long storeId;
/** 服务状态0在线1下线 */
@Excel(name = "服务状态0在线1下线")
private String serviceState;
/** 是否发送通知消息0发送1不发送 */
@Excel(name = "是否发送通知消息0发送1不发送")
private String withMsg;
/** 是否人工干预0自动1人工 */
@Excel(name = "是否人工干预0自动1人工")
private String stateFlag;
/** 非会员能否使用赠卡,默认否0;能1 */
@Excel(name = "默认否0;能1")
private Integer useSelfCardWithNovip;
public Long getProviderId() {
return providerId;
}
public void setProviderId(Long providerId) {
this.providerId = providerId;
}
public Long getStoreId() {
return storeId;
}
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
public String getServiceState() {
return serviceState;
}
public void setServiceState(String serviceState) {
this.serviceState = serviceState;
}
public String getWithMsg() {
return withMsg;
}
public void setWithMsg(String withMsg) {
this.withMsg = withMsg;
}
public String getStateFlag() {
return stateFlag;
}
public void setStateFlag(String stateFlag) {
this.stateFlag = stateFlag;
}
public Integer getUseSelfCardWithNovip() {
return useSelfCardWithNovip;
}
public void setUseSelfCardWithNovip(Integer useSelfCardWithNovip) {
this.useSelfCardWithNovip = useSelfCardWithNovip;
}
@Override
public String toString() {
return "SegchkStoreStatus{" +
"providerId=" + providerId +
", storeId=" + storeId +
", serviceState='" + serviceState + '\'' +
", withMsg='" + withMsg + '\'' +
", stateFlag='" + stateFlag + '\'' +
", useSelfCardWithNovip=" + useSelfCardWithNovip +
'}';
}
}

View File

@ -0,0 +1,123 @@
package com.ruoyi.segchk.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.StringJoiner;
/**
* seg segchk_store_basic_info
*
* @author yinzhiying
* @date 2021-08-23
*/
public class SegchkStoreVrInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 运营商id全局唯一 */
@Excel(name = "运营商id全局唯一")
private Long providerId;
/** 商家id全局唯一 */
private Long storeId;
/** VR id全局唯一 */
private Long vrId;
/** VR地址 */
@Excel(name = "VR地址")
private String vrUrl;
/** 图标地址 */
@Excel(name = "图标地址")
private String thumbPath;
/** 服务状态0在线1下线 */
@Excel(name = "服务状态0在线1下线")
private String serviceState;
/** 创建或修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date modTime;
public void getfromBasic(SegchkStoreBasicInfo segchkStoreBasicInfo) {
this.providerId = segchkStoreBasicInfo.getProviderId();
this.storeId = segchkStoreBasicInfo.getStoreId();
this.vrUrl = segchkStoreBasicInfo.getVrPath();
}
public Long getProviderId() {
return providerId;
}
public void setProviderId(Long providerId) {
this.providerId = providerId;
}
public Long getStoreId() {
return storeId;
}
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
public Long getVrId() {
return vrId;
}
public void setVrId(Long vrId) {
this.vrId = vrId;
}
public String getVrUrl() {
return vrUrl;
}
public void setVrUrl(String vrUrl) {
this.vrUrl = vrUrl;
}
public String getThumbPath() {
return thumbPath;
}
public void setThumbPath(String thumbPath) {
this.thumbPath = thumbPath;
}
public String getServiceState() {
return serviceState;
}
public void setServiceState(String serviceState) {
this.serviceState = serviceState;
}
public Date getModTime() {
return modTime;
}
public void setModTime(Date modTime) {
this.modTime = modTime;
}
@Override
public String toString() {
return new StringJoiner(", ", SegchkStoreVrInfo.class.getSimpleName() + "[", "]")
.add("providerId=" + providerId)
.add("storeId=" + storeId)
.add("vrId=" + vrId)
.add("vrUrl='" + vrUrl + "'")
.add("thumbPath='" + thumbPath + "'")
.add("serviceState='" + serviceState + "'")
.add("modTime=" + modTime)
.toString();
}
}

View File

@ -1,66 +0,0 @@
package com.ruoyi.segchk.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.math.BigDecimal;
import java.util.Date;
/**
* seg segchk_user_reward
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkUserCashWebResp extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户id全局唯一 */
@Excel(name = "用户id全局唯一")
private BigDecimal cash;
/** 奖励卡号 */
@Excel(name = "奖励卡号")
private String retFlag;
/** 创建或修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd hh:mm:ss")
private Date modTime;
public BigDecimal getCash() {
return cash;
}
public void setCash(BigDecimal cash) {
this.cash = cash;
}
public String getRetFlag() {
return retFlag;
}
public void setRetFlag(String retFlag) {
this.retFlag = retFlag;
}
public Date getModTime() {
return modTime;
}
public void setModTime(Date modTime) {
this.modTime = modTime;
}
@Override
public String toString() {
return "SegchkUserCashWebResp{" +
"cash=" + cash +
", retFlag='" + retFlag + '\'' +
", modTime=" + modTime +
'}';
}
}

View File

@ -1,153 +0,0 @@
package com.ruoyi.segchk.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.math.BigDecimal;
/**
* seg SegchkUserChargeCard
*
* @author yinzhiying
* @date 2021-07-30
*/
public class SegchkUserChargeCard extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 运营商id */
@Excel(name = "运营商id")
private Long providerId;
/** 卡类型id */
@Excel(name = "卡类型id")
private Long cardTypeId;
/** 会员卡id */
@Excel(name = "会员卡id")
private Long cardId;
/** 会员卡名称 */
@Excel(name = "会员卡名称")
private String cardTypeName;
/** 已购买次数 */
@Excel(name = "已购买次数")
private Integer hadBuy;
/** 可购买次数 */
@Excel(name = "可购买次数")
private Integer buyCount;
/** 会员卡面值 */
@Excel(name = "会员卡面值")
private BigDecimal cardTypeValue;
/** 是否可以购买0可1有卡正在使用2购买次数超限 */
@Excel(name = "是否可以购买")
private Integer canBuy;
/** 会员卡权益次数 */
@Excel(name = "会员卡权益次数")
private Integer cardTypeChkcount;
/** 会员卡有效天数 */
@Excel(name = "会员卡有效天数")
private Integer effectiveTime;
public Long getProviderId() {
return providerId;
}
public void setProviderId(Long providerId) {
this.providerId = providerId;
}
public Long getCardTypeId() {
return cardTypeId;
}
public void setCardTypeId(Long cardTypeId) {
this.cardTypeId = cardTypeId;
}
public Long getCardId() {
return cardId;
}
public void setCardId(Long cardId) {
this.cardId = cardId;
}
public String getCardTypeName() {
return cardTypeName;
}
public void setCardTypeName(String cardTypeName) {
this.cardTypeName = cardTypeName;
}
public Integer getHadBuy() {
return hadBuy;
}
public void setHadBuy(Integer hadBuy) {
this.hadBuy = hadBuy;
}
public Integer getBuyCount() {
return buyCount;
}
public void setBuyCount(Integer buyCount) {
this.buyCount = buyCount;
}
public BigDecimal getCardTypeValue() {
return cardTypeValue;
}
public void setCardTypeValue(BigDecimal cardTypeValue) {
this.cardTypeValue = cardTypeValue;
}
public Integer getCanBuy() {
return canBuy;
}
public void setCanBuy(Integer canBuy) {
this.canBuy = canBuy;
}
public Integer getCardTypeChkcount() {
return cardTypeChkcount;
}
public void setCardTypeChkcount(Integer cardTypeChkcount) {
this.cardTypeChkcount = cardTypeChkcount;
}
public Integer getEffectiveTime() {
return effectiveTime;
}
public void setEffectiveTime(Integer effectiveTime) {
this.effectiveTime = effectiveTime;
}
@Override
public String toString() {
return "SegchkUserChargeCard{" +
"providerId=" + providerId +
", cardTypeId=" + cardTypeId +
", cardId=" + cardId +
", cardTypeName='" + cardTypeName + '\'' +
", hadBuy=" + hadBuy +
", buyCount=" + buyCount +
", cardTypeValue=" + cardTypeValue +
", canBuy=" + canBuy +
", cardTypeChkcount=" + cardTypeChkcount +
", effectiveTime=" + effectiveTime +
'}';
}
}

View File

@ -1,78 +0,0 @@
package com.ruoyi.segchk.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.math.BigDecimal;
import java.util.Date;
/**
* seg segchk_user_reward
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkUserChargeWebResp extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户id全局唯一 */
@Excel(name = "用户id全局唯一")
private BigDecimal charge;
/** 奖励类型 */
@Excel(name = "奖励类型")
private String cardName;
/** 奖励卡号 */
@Excel(name = "奖励卡号")
private String retFlag;
/** 创建或修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd hh:mm:ss")
private Date modTime;
public BigDecimal getCharge() {
return charge;
}
public void setCharge(BigDecimal charge) {
this.charge = charge;
}
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
public String getRetFlag() {
return retFlag;
}
public void setRetFlag(String retFlag) {
this.retFlag = retFlag;
}
public Date getModTime() {
return modTime;
}
public void setModTime(Date modTime) {
this.modTime = modTime;
}
@Override
public String toString() {
return "SegchkUserChargeWebResp{" +
"charge=" + charge +
", cardName='" + cardName + '\'' +
", retFlag=" + retFlag +
", modTime=" + modTime +
'}';
}
}

View File

@ -1,185 +0,0 @@
package com.ruoyi.segchk.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* seg segchk_user_vip
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkUserCollectWebResp extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 收藏id */
@Excel(name = "收藏id")
private Long collectId;
/** 运营商id全局唯一 */
@Excel(name = "运营商id全局唯一")
private Long providerId;
/** 商家id */
@Excel(name = "商家id全局惟一")
private Long storeId;
/** 商家名称 */
@Excel(name = "商家名称")
private String storeName;
/** 商家图标 */
@Excel(name = "会员卡类型0--9块91---99")
private String storeIcon;
/** 用户id全局唯一 */
@Excel(name = "用户id全局唯一")
private Long serviceState;
/** 用户id全局唯一 */
@Excel(name = "用户id全局唯一")
private BigDecimal storeLon;
/** 用户id全局唯一 */
@Excel(name = "用户id全局唯一")
private BigDecimal storeLat;
/** 用户id全局唯一 */
@Excel(name = "用户id全局唯一")
private Long chkCount;
/** 用户id全局唯一 */
@Excel(name = "用户id全局唯一")
private BigDecimal starAvg;
/** 创建或修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date modTime;
/** 商户标签列表 */
@Valid
private List<SegchkRecommenderStoreLableWeb> segchkRecommenderStoreLableWebList;
public Long getCollectId() {
return collectId;
}
public void setCollectId(Long collectId) {
this.collectId = collectId;
}
public Long getProviderId() {
return providerId;
}
public void setProviderId(Long providerId) {
this.providerId = providerId;
}
public Long getStoreId() {
return storeId;
}
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public String getStoreIcon() {
return storeIcon;
}
public void setStoreIcon(String storeIcon) {
this.storeIcon = storeIcon;
}
public Long getServiceState() {
return serviceState;
}
public void setServiceState(Long serviceState) {
this.serviceState = serviceState;
}
public BigDecimal getStoreLon() {
return storeLon;
}
public void setStoreLon(BigDecimal storeLon) {
this.storeLon = storeLon;
}
public BigDecimal getStoreLat() {
return storeLat;
}
public void setStoreLat(BigDecimal storeLat) {
this.storeLat = storeLat;
}
public Long getChkCount() {
return chkCount;
}
public void setChkCount(Long chkCount) {
this.chkCount = chkCount;
}
public BigDecimal getStarAvg() {
return starAvg;
}
public void setStarAvg(BigDecimal starAvg) {
this.starAvg = starAvg;
}
public Date getModTime() {
return modTime;
}
public void setModTime(Date modTime) {
this.modTime = modTime;
}
public List<SegchkRecommenderStoreLableWeb> getSegchkRecommenderStoreLableWebList() {
return segchkRecommenderStoreLableWebList;
}
public void setSegchkRecommenderStoreLableWebList(List<SegchkRecommenderStoreLableWeb> segchkRecommenderStoreLableWebList) {
this.segchkRecommenderStoreLableWebList = segchkRecommenderStoreLableWebList;
}
@Override
public String toString() {
return "SegchkUserCollectWebResp{" +
"collectId=" + collectId +
", providerId=" + providerId +
", storeId=" + storeId +
", storeName='" + storeName + '\'' +
", storeIcon='" + storeIcon + '\'' +
", serviceState=" + serviceState +
", storeLon=" + storeLon +
", storeLat=" + storeLat +
", chkCount=" + chkCount +
", starAvg=" + starAvg +
", modTime=" + modTime +
", segchkRecommenderStoreLableWebList=" + segchkRecommenderStoreLableWebList +
'}';
}
}

View File

@ -1,237 +0,0 @@
package com.ruoyi.segchk.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* seg segchk_user_vip
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkUserLikeGoWebResp extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 想去id */
@Excel(name = "想去id")
private Long likegoId;
/** 运营商id全局唯一 */
@Excel(name = "运营商id全局唯一")
private Long providerId;
/** 商家id */
@Excel(name = "商家id全局惟一")
private Long storeId;
/** 会员卡id */
@Excel(name = "会员卡id充值卡或自定义卡")
private Long cardId;
/** 用户id */
@Excel(name = "用户id全局惟一")
private Long userId;
/** 商家名称 */
@Excel(name = "商家名称")
private String storeName;
/** 卡名称 */
@Excel(name = "卡名称")
private String cardName;
/** 二维码 */
@Excel(name = "二维码")
private String qrCode;
/** 商家小图标 */
@Excel(name = "商家小图标")
private String storeIcon;
/** 商家服务状态,是否在线 */
@Excel(name = "商家服务状态")
private Long serviceState;
/** 商家经度 */
@Excel(name = "商家经度")
private BigDecimal storeLon;
/** 商家纬度 */
@Excel(name = "商家纬度")
private BigDecimal storeLat;
/** 商家累积核次数 */
@Excel(name = "商家累积核次数")
private Long chkCount;
/** 用户id全局唯一 */
@Excel(name = "用户id全局唯一")
private BigDecimal starAvg;
/** 预约时间 */
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@Excel(name = "预约时间", width = 30, dateFormat = "yyyy-MM-dd hh:mm:ss")
private Date modTime;
/** 商户标签列表 */
@Valid
private List<SegchkRecommenderStoreLableWeb> segchkRecommenderStoreLableWebList;
public Long getLikegoId() {
return likegoId;
}
public void setLikegoId(Long likegoId) {
this.likegoId = likegoId;
}
public Long getProviderId() {
return providerId;
}
public void setProviderId(Long providerId) {
this.providerId = providerId;
}
public Long getStoreId() {
return storeId;
}
public void setStoreId(Long storeId) {
this.storeId = storeId;
}
public Long getCardId() {
return cardId;
}
public void setCardId(Long cardId) {
this.cardId = cardId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
public String getQrCode() {
return qrCode;
}
public void setQrCode(String qrCode) {
this.qrCode = qrCode;
}
public String getStoreIcon() {
return storeIcon;
}
public void setStoreIcon(String storeIcon) {
this.storeIcon = storeIcon;
}
public Long getServiceState() {
return serviceState;
}
public void setServiceState(Long serviceState) {
this.serviceState = serviceState;
}
public BigDecimal getStoreLon() {
return storeLon;
}
public void setStoreLon(BigDecimal storeLon) {
this.storeLon = storeLon;
}
public BigDecimal getStoreLat() {
return storeLat;
}
public void setStoreLat(BigDecimal storeLat) {
this.storeLat = storeLat;
}
public Long getChkCount() {
return chkCount;
}
public void setChkCount(Long chkCount) {
this.chkCount = chkCount;
}
public BigDecimal getStarAvg() {
return starAvg;
}
public void setStarAvg(BigDecimal starAvg) {
this.starAvg = starAvg;
}
public Date getModTime() {
return modTime;
}
public void setModTime(Date modTime) {
this.modTime = modTime;
}
public List<SegchkRecommenderStoreLableWeb> getSegchkRecommenderStoreLableWebList() {
return segchkRecommenderStoreLableWebList;
}
public void setSegchkRecommenderStoreLableWebList(List<SegchkRecommenderStoreLableWeb> segchkRecommenderStoreLableWebList) {
this.segchkRecommenderStoreLableWebList = segchkRecommenderStoreLableWebList;
}
@Override
public String toString() {
return "SegchkUserLikeGoWebResp{" +
"likegoId=" + likegoId +
", providerId=" + providerId +
", storeId=" + storeId +
", cardId=" + cardId +
", userId=" + userId +
", storeName='" + storeName + '\'' +
", cardName='" + cardName + '\'' +
", qrCode='" + qrCode + '\'' +
", storeIcon='" + storeIcon + '\'' +
", serviceState=" + serviceState +
", storeLon=" + storeLon +
", storeLat=" + storeLat +
", chkCount=" + chkCount +
", starAvg=" + starAvg +
", modTime=" + modTime +
", segchkRecommenderStoreLableWebList=" + segchkRecommenderStoreLableWebList +
'}';
}
}

View File

@ -41,6 +41,10 @@ public class SegchkUserLikego extends BaseEntity
@Excel(name = "卡类型id0充值卡1商家赠卡2优惠券卡")
private Integer cardType;
/** 子标签id cardType为1时为0无效其他有效 */
@Excel(name = "子标签id")
private Integer lableId;
/** 预约二维码 */
@Excel(name = "预约二维码")
private String qrCode;
@ -54,6 +58,10 @@ public class SegchkUserLikego extends BaseEntity
@Excel(name = "管理状态0有效1失效2已使用")
private Integer mgtState;
/** 赠卡标识0否1可,2已赠只有在mgtState为2时有效 */
@Excel(name = "赠卡标识")
private Integer canGiveSelf;
public void setLikegoId(Long likegoId)
{
this.likegoId = likegoId;
@ -148,6 +156,23 @@ public class SegchkUserLikego extends BaseEntity
.append("qrCode", getQrCode())
.append("modTime", getModTime())
.append("mgtState", getMgtState())
.append("canGiveSelf", getCanGiveSelf())
.toString();
}
public Integer getLableId() {
return lableId;
}
public void setLableId(Integer lableId) {
this.lableId = lableId;
}
public Integer getCanGiveSelf() {
return canGiveSelf;
}
public void setCanGiveSelf(Integer canGiveSelf) {
this.canGiveSelf = canGiveSelf;
}
}

View File

@ -1,104 +0,0 @@
package com.ruoyi.segchk.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* seg SegchkUserSetInfoReq
*
* @author yinzhiying
* @date 2021-07-01
*/
public class SegchkUserSetInfoReq extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 用户id全局唯一 */
@Excel(name = "用户id全局唯一")
private Long userId;
/** 密码 */
@Excel(name = "密码")
private String passwd;
/** 密码id全表唯一 */
@Excel(name = "密码id全表唯一")
private Long pwdId;
/** 运营商id全局唯一 */
@Excel(name = "运营商id全局唯一")
private Long providerId;
/** 用户手机号 */
@Excel(name = "用户手机号")
private String phoneNo;
/** 用户等级 */
@Excel(name = "用户等级")
private Integer userLevel;
public void setUserId(Long userId)
{
this.userId = userId;
}
public Long getUserId()
{
return userId;
}
public void setPasswd(String passwd)
{
this.passwd = passwd;
}
public void setPwdId(Long pwdId)
{
this.pwdId = pwdId;
}
public Long getPwdId()
{
return pwdId;
}
public void setProviderId(Long providerId)
{
this.providerId = providerId;
}
public Long getProviderId()
{
return providerId;
}
public String getPasswd() {
return passwd;
}
public String getPhoneNo() {
return phoneNo;
}
public void setPhoneNo(String phoneNo) {
this.phoneNo = phoneNo;
}
public Integer getUserLevel() {
return userLevel;
}
public void setUserLevel(Integer userLevel) {
this.userLevel = userLevel;
}
@Override
public String toString() {
return "SegchkUserSetInfoReq{" +
"userId=" + userId +
", passwd='" + passwd + '\'' +
", pwdId=" + pwdId +
", providerId=" + providerId +
", phoneNo='" + phoneNo + '\'' +
", userLevel=" + userLevel +
'}';
}
}

View File

@ -0,0 +1,53 @@
package com.ruoyi.segchk.domain;
import com.ruoyi.common.core.domain.BaseEntity;
public class SimpleListObj extends BaseEntity {
private String providerId;
private String key;
private String value;
private String imgUrl;
public String getProviderId() {
return providerId;
}
public void setProviderId(String providerId) {
this.providerId = providerId;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getImgUrl() {
return imgUrl;
}
public void setImgUrl(String imgUrl) {
this.imgUrl = imgUrl;
}
@Override
public String toString() {
return "SimpleListObj{" +
"providerId='" + providerId + '\'' +
", key='" + key + '\'' +
", value='" + value + '\'' +
", imgUrl='" + imgUrl + '\'' +
'}';
}
}

View File

@ -1,9 +1,6 @@
package com.ruoyi.segchk.mapper;
import com.ruoyi.segchk.domain.SegchkChargeRet;
import com.ruoyi.segchk.domain.SegchkUserVip;
import java.util.List;
/**
* segMapper

View File

@ -0,0 +1,63 @@
package com.ruoyi.segchk.mapper;
import java.util.List;
import com.ruoyi.segchk.domain.SegchkProviderCntCtrl;
/**
* segMapper
*
* @author yinzhiying
* @date 2022-06-26
*/
public interface SegchkProviderCntCtrlMapper
{
/**
* seg
*
* @param cntId seg
* @return seg
*/
public SegchkProviderCntCtrl selectSegchkProviderCntCtrlByCntId(Long cntId);
/**
* seg
*
* @param segchkProviderCntCtrl seg
* @return seg
*/
public List<SegchkProviderCntCtrl> selectSegchkProviderCntCtrlList(SegchkProviderCntCtrl segchkProviderCntCtrl);
/**
* seg
*
* @param segchkProviderCntCtrl seg
* @return
*/
public int insertSegchkProviderCntCtrl(SegchkProviderCntCtrl segchkProviderCntCtrl);
/**
* seg
*
* @param segchkProviderCntCtrl seg
* @return
*/
public int updateSegchkProviderCntCtrl(SegchkProviderCntCtrl segchkProviderCntCtrl);
/**
* seg
*
* @param cntId seg
* @return
*/
public int deleteSegchkProviderCntCtrlByCntId(Long cntId);
/**
* seg
*
* @param cntIds
* @return
*/
public int deleteSegchkProviderCntCtrlByCntIds(Long[] cntIds);
SegchkProviderCntCtrl selectSegchkProviderCntCtrlByProviderId(Long providerId);
}

View File

@ -1,8 +1,6 @@
package com.ruoyi.segchk.mapper;
import com.ruoyi.segchk.domain.SegchkRecommenderStore;
import com.ruoyi.segchk.domain.SegchkRecommenderStoreWebReq;
import com.ruoyi.segchk.domain.SegchkRecommenderStoreWebResp;
import java.util.List;

View File

@ -157,12 +157,19 @@ public interface SegchkStoreBasicInfoMapper
/**
* seg
*
* @param segchkStoreBasicInfo seg
* @param segchkStoreStatus seg
* @return
*/
public int updateSegchkStoreServiceStatus(SegchkStoreBasicInfo segchkStoreBasicInfo);
public int updateSegchkStoreServiceStatus(SegchkStoreStatus segchkStoreStatus);
public Long selectStoreIdByPhone(String phone);
int updateSegchkStoreDetail(SegchkStoreBasicInfo segchkStoreBasicInfo);
int updateSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo);
int addSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo);
int deleteSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo);
List<SimpleListObj> selectSegchkStoreSimpleList(Long providerId);
}

View File

@ -0,0 +1,87 @@
package com.ruoyi.segchk.mapper;
import java.util.List;
import com.ruoyi.segchk.domain.SegchkStoreCntCtrl;
import org.apache.ibatis.annotations.Param;
/**
* segMapper
*
* @author yinzhiying
* @date 2022-06-26
*/
public interface SegchkStoreCntCtrlMapper
{
/**
* seg
*
* @param cntId seg
* @return seg
*/
public SegchkStoreCntCtrl selectSegchkStoreCntCtrlByCntId(Long cntId);
/**
* seg
*
* @param segchkStoreCntCtrl seg
* @return seg
*/
public List<SegchkStoreCntCtrl> selectSegchkStoreCntCtrlList(SegchkStoreCntCtrl segchkStoreCntCtrl);
/**
* seg
*
* @param segchkStoreCntCtrl seg
* @return
*/
public int insertSegchkStoreCntCtrl(SegchkStoreCntCtrl segchkStoreCntCtrl);
/**
* seg
*
* @param segchkStoreCntCtrl seg
* @return
*/
public int updateSegchkStoreCntCtrl(SegchkStoreCntCtrl segchkStoreCntCtrl);
/**
* seg
*
* @param cntId seg
* @return
*/
public int deleteSegchkStoreCntCtrlByCntId(Long cntId);
/**
* seg
*
* @param cntIds
* @return
*/
public int deleteSegchkStoreCntCtrlByCntIds(Long[] cntIds);
/**
*
*
* @param segchkStoreCntCtrlList
* @return
*/
int addWechatCntBatch(List<SegchkStoreCntCtrl> segchkStoreCntCtrlList);
/**
*
*
* @return
*/
List<SegchkStoreCntCtrl> selectSegchkStoreCntCtrlListByRecent();
/**
*
*
* @param cntIds id list
* @return
*/
int invalidateByOutId(List<Long> cntIds);
int invalidateByStore(@Param("cntId") Long cntId, @Param("storeId") Long storeId);
}

View File

@ -0,0 +1,69 @@
package com.ruoyi.segchk.service;
import java.util.List;
import com.ruoyi.segchk.domain.SegchkProviderCntCtrl;
/**
* segService
*
* @author yinzhiying
* @date 2022-06-26
*/
public interface ISegchkProviderCntCtrlService
{
/**
* seg
*
* @param cntId seg
* @return seg
*/
public SegchkProviderCntCtrl selectSegchkProviderCntCtrlByCntId(Long cntId);
/**
* seg
*
* @param segchkProviderCntCtrl seg
* @return seg
*/
public List<SegchkProviderCntCtrl> selectSegchkProviderCntCtrlList(SegchkProviderCntCtrl segchkProviderCntCtrl);
/**
* seg
*
* @param segchkProviderCntCtrl seg
* @return
*/
public int insertSegchkProviderCntCtrl(SegchkProviderCntCtrl segchkProviderCntCtrl);
/**
* seg
*
* @param segchkProviderCntCtrl seg
* @return
*/
public int updateSegchkProviderCntCtrl(SegchkProviderCntCtrl segchkProviderCntCtrl);
/**
* seg
*
* @param cntIds seg
* @return
*/
public int deleteSegchkProviderCntCtrlByCntIds(Long[] cntIds);
/**
* seg
*
* @param cntId seg
* @return
*/
public int deleteSegchkProviderCntCtrlByCntId(Long cntId);
/**
* id
*
* @param providerId segid
* @return
*/
SegchkProviderCntCtrl selectSegchkProviderCntCtrlByProviderId(Long providerId);
}

View File

@ -12,6 +12,8 @@ import com.ruoyi.segchk.domain.SegchkProviderMgt;
*/
public interface ISegchkProviderMgtService
{
void loadAllProviderInfo();
/**
* seg
*

View File

@ -1,8 +1,6 @@
package com.ruoyi.segchk.service;
import com.ruoyi.segchk.domain.SegchkRecommenderStore;
import com.ruoyi.segchk.domain.SegchkRecommenderStoreWebReq;
import com.ruoyi.segchk.domain.SegchkRecommenderStoreWebResp;
import java.util.List;

View File

@ -1,7 +1,8 @@
package com.ruoyi.segchk.service;
import java.util.List;
import com.ruoyi.segchk.domain.SegchkStoreBasicInfo;
import com.ruoyi.segchk.domain.*;
/**
* segService
@ -27,6 +28,8 @@ public interface ISegchkStoreBasicInfoService
*/
public List<SegchkStoreBasicInfo> selectSegchkStoreBasicInfoList(SegchkStoreBasicInfo segchkStoreBasicInfo);
List<SegchkStoreBasicInfo> selectSegchkStoreBasicInfoListWithCnt(SegchkStoreBasicInfo segchkStoreBasicInfo);
/**
* seg
*
@ -67,7 +70,56 @@ public interface ISegchkStoreBasicInfoService
*/
public int updateSegchkStoreServiceStatus(SegchkStoreBasicInfo segchkStoreBasicInfo);
/**
* seg
*
* @param segchkStoreStatus seg
* @return
*/
int updateSegchkStoreStatus(SegchkStoreStatus segchkStoreStatus);
int updateSegchkStoreDetail(SegchkStoreBasicInfo segchkStoreBasicInfo);
// int addSegchkStoreVR();
/**
* segVR
*
* @param segchkStoreVrInfo seg(ididvr)
* @return
*/
int updateSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo);
int addSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo);
int deleteSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo);
/**
*
*
* @param providerId id
* @return
*/
List<SimpleListObj> selectSegchkStoreSimpleList(Long providerId);
/**
*
*
* @param segchkStoreCntCtrl
* @return
*/
int updateSegchkStoreCnt(SegchkStoreCntCtrl segchkStoreCntCtrl);
/**
*
*
* @param segchkStoreCntCtrl
* @return
*/
int updateSegchkStoreCnt2Redis(SegchkStoreCntCtrl segchkStoreCntCtrl);
/**
*
*
* @param segchkStoreCntCtrlList
* @return
*/
// int addWechatCntBatch(List<SegchkStoreCntCtrl> segchkStoreCntCtrlList);
}

View File

@ -0,0 +1,103 @@
package com.ruoyi.segchk.service;
import java.util.List;
import java.util.Map;
import com.ruoyi.segchk.domain.SegchkStoreCntCtrl;
import javafx.util.Pair;
/**
* segService
*
* @author yinzhiying
* @date 2022-06-26
*/
public interface ISegchkStoreCntCtrlService
{
/**
* seg
*
* @param cntId seg
* @return seg
*/
public SegchkStoreCntCtrl selectSegchkStoreCntCtrlByCntId(Long cntId);
/**
* seg
*
* @param segchkStoreCntCtrl seg
* @return seg
*/
public List<SegchkStoreCntCtrl> selectSegchkStoreCntCtrlList(SegchkStoreCntCtrl segchkStoreCntCtrl);
/**
* seg
*
* @param segchkStoreCntCtrl seg
* @return
*/
public int insertSegchkStoreCntCtrl(SegchkStoreCntCtrl segchkStoreCntCtrl);
/**
* seg
*
* @param segchkStoreCntCtrl seg
* @return
*/
public int updateSegchkStoreCntCtrl(SegchkStoreCntCtrl segchkStoreCntCtrl);
/**
* seg
*
* @param cntIds seg
* @return
*/
public int deleteSegchkStoreCntCtrlByCntIds(Long[] cntIds);
/**
* seg
*
* @param cntId seg
* @return
*/
public int deleteSegchkStoreCntCtrlByCntId(Long cntId);
/**
*
*
* @param segchkStoreCntCtrlList
* @return
*/
Pair<Integer, Object> addWechatCntBatch(List<SegchkStoreCntCtrl> segchkStoreCntCtrlList);
/**
*
*
* @return
*/
List<SegchkStoreCntCtrl> selectSegchkStoreCntCtrlListByRecent();
/**
* idid
*
* @param cntIds id list
* @return
*/
int invalidateByOutId(List<Long> cntIds);
/**
* id
*
* @param entryList store list
* @return
*/
int invalidateByStore(Map<Long, Long> entryList);
/**
* redis
*
* @param segchkStoreCntCtrlList
* @return
*/
// int flushCount2DB(List<SegchkStoreCntCtrl> segchkStoreCntCtrlList);
}

View File

@ -0,0 +1,104 @@
package com.ruoyi.segchk.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.segchk.mapper.SegchkProviderCntCtrlMapper;
import com.ruoyi.segchk.domain.SegchkProviderCntCtrl;
import com.ruoyi.segchk.service.ISegchkProviderCntCtrlService;
/**
* segService
*
* @author yinzhiying
* @date 2022-06-26
*/
@Service
public class SegchkProviderCntCtrlServiceImpl implements ISegchkProviderCntCtrlService
{
@Autowired
private SegchkProviderCntCtrlMapper segchkProviderCntCtrlMapper;
/**
* seg
*
* @param cntId seg
* @return seg
*/
@Override
public SegchkProviderCntCtrl selectSegchkProviderCntCtrlByCntId(Long cntId)
{
return segchkProviderCntCtrlMapper.selectSegchkProviderCntCtrlByCntId(cntId);
}
/**
* seg
*
* @param segchkProviderCntCtrl seg
* @return seg
*/
@Override
public List<SegchkProviderCntCtrl> selectSegchkProviderCntCtrlList(SegchkProviderCntCtrl segchkProviderCntCtrl)
{
return segchkProviderCntCtrlMapper.selectSegchkProviderCntCtrlList(segchkProviderCntCtrl);
}
/**
* seg
*
* @param segchkProviderCntCtrl seg
* @return
*/
@Override
public int insertSegchkProviderCntCtrl(SegchkProviderCntCtrl segchkProviderCntCtrl)
{
return segchkProviderCntCtrlMapper.insertSegchkProviderCntCtrl(segchkProviderCntCtrl);
}
/**
* seg
*
* @param segchkProviderCntCtrl seg
* @return
*/
@Override
public int updateSegchkProviderCntCtrl(SegchkProviderCntCtrl segchkProviderCntCtrl)
{
return segchkProviderCntCtrlMapper.updateSegchkProviderCntCtrl(segchkProviderCntCtrl);
}
/**
* seg
*
* @param cntIds seg
* @return
*/
@Override
public int deleteSegchkProviderCntCtrlByCntIds(Long[] cntIds)
{
return segchkProviderCntCtrlMapper.deleteSegchkProviderCntCtrlByCntIds(cntIds);
}
/**
* seg
*
* @param cntId seg
* @return
*/
@Override
public int deleteSegchkProviderCntCtrlByCntId(Long cntId)
{
return segchkProviderCntCtrlMapper.deleteSegchkProviderCntCtrlByCntId(cntId);
}
/**
* id
*
* @param providerId segid
* @return
*/
@Override
public SegchkProviderCntCtrl selectSegchkProviderCntCtrlByProviderId(Long providerId) {
return segchkProviderCntCtrlMapper.selectSegchkProviderCntCtrlByProviderId(providerId);
}
}

View File

@ -1,17 +1,29 @@
package com.ruoyi.segchk.service.impl;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.RedisCahceKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.stream.Collectors;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.segchk.domain.SegchkLableMgt;
import com.ruoyi.segchk.mapper.SegchkProviderMgtMapper;
import com.ruoyi.segchk.domain.SegchkProviderMgt;
import com.ruoyi.segchk.service.ISegchkProviderMgtService;
import org.springframework.util.ObjectUtils;
import javax.annotation.PostConstruct;
/**
* segService
@ -22,9 +34,26 @@ import com.ruoyi.segchk.service.ISegchkProviderMgtService;
@Service
public class SegchkProviderMgtServiceImpl implements ISegchkProviderMgtService
{
private static final Logger logger = LoggerFactory.getLogger(SegchkProviderMgtServiceImpl.class);
@Autowired
private SegchkProviderMgtMapper segchkProviderMgtMapper;
@Autowired
private RedisCache redisService;
@PostConstruct
public void init(){
loadAllProviderInfo();
}
@Override
public void loadAllProviderInfo() {
SegchkProviderMgt segchkProviderMgt = new SegchkProviderMgt();
List<SegchkProviderMgt> segchkProviderMgts = selectSegchkProviderMgtList(segchkProviderMgt);
segchkProviderMgts.parallelStream().forEach(v -> redisService.setCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + v.getProviderId(), v));
}
/**
* seg
*
@ -34,7 +63,17 @@ public class SegchkProviderMgtServiceImpl implements ISegchkProviderMgtService
@Override
public SegchkProviderMgt selectSegchkProviderMgtByProviderId(Long providerId)
{
return segchkProviderMgtMapper.selectSegchkProviderMgtByProviderId(providerId);
logger.debug("selectSegchkProviderMgtByProviderId with {}", providerId);
Object cacheObject = redisService.getCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + providerId);
if(!ObjectUtils.isEmpty(cacheObject)){
return (SegchkProviderMgt)cacheObject;
}
SegchkProviderMgt segchkProviderMgt = segchkProviderMgtMapper.selectSegchkProviderMgtByProviderId(providerId);
if(ObjectUtils.isEmpty(segchkProviderMgt)){
return null;
}
redisService.setCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + providerId, segchkProviderMgt);
return segchkProviderMgt;
}
/**
@ -46,7 +85,9 @@ public class SegchkProviderMgtServiceImpl implements ISegchkProviderMgtService
@Override
public List<SegchkProviderMgt> selectSegchkProviderMgtList(SegchkProviderMgt segchkProviderMgt)
{
return segchkProviderMgtMapper.selectSegchkProviderMgtList(segchkProviderMgt);
List<SegchkProviderMgt> segchkProviderMgts = segchkProviderMgtMapper.selectSegchkProviderMgtList(segchkProviderMgt);
segchkProviderMgts.parallelStream().forEach(v -> redisService.setCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + v.getProviderId(), v));
return segchkProviderMgts;
}
/**
@ -60,8 +101,10 @@ public class SegchkProviderMgtServiceImpl implements ISegchkProviderMgtService
public int insertSegchkProviderMgt(SegchkProviderMgt segchkProviderMgt)
{
segchkProviderMgt.setCreateTime(DateUtils.getNowDate());
redisService.setCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + segchkProviderMgt.getProviderId(), segchkProviderMgt);
int rows = segchkProviderMgtMapper.insertSegchkProviderMgt(segchkProviderMgt);
insertSegchkLableMgt(segchkProviderMgt);
return rows;
}
@ -76,6 +119,7 @@ public class SegchkProviderMgtServiceImpl implements ISegchkProviderMgtService
public int updateSegchkProviderMgt(SegchkProviderMgt segchkProviderMgt)
{
segchkProviderMgt.setUpdateTime(DateUtils.getNowDate());
redisService.setCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + segchkProviderMgt.getProviderId(), segchkProviderMgt);
// segchkProviderMgtMapper.deleteSegchkLableMgtByProviderId(segchkProviderMgt.getProviderId());
// insertSegchkLableMgt(segchkProviderMgt);
return segchkProviderMgtMapper.updateSegchkProviderMgt(segchkProviderMgt);
@ -91,6 +135,9 @@ public class SegchkProviderMgtServiceImpl implements ISegchkProviderMgtService
@Override
public int deleteSegchkProviderMgtByProviderIds(Long[] providerIds)
{
redisService.deleteObject(Arrays.stream(providerIds).map(v -> RedisCahceKey.PROVIDER_INFO + "::" + v).collect(Collectors.toList()));
// Arrays.stream(providerIds).parallel().forEach(v -> redisService.deleteObject(RedisCahceKey.PROVIDER_INFO + "::" + v));
// segchkProviderMgtMapper.deleteSegchkLableMgtByProviderIds(providerIds);
return segchkProviderMgtMapper.deleteSegchkProviderMgtByProviderIds(providerIds);
}
@ -104,6 +151,7 @@ public class SegchkProviderMgtServiceImpl implements ISegchkProviderMgtService
@Override
public int deleteSegchkProviderMgtByProviderId(Long providerId)
{
redisService.deleteObject(RedisCahceKey.PROVIDER_INFO + "::" + providerId);
segchkProviderMgtMapper.deleteSegchkLableMgtByProviderId(providerId);
return segchkProviderMgtMapper.deleteSegchkProviderMgtByProviderId(providerId);
}

View File

@ -2,10 +2,7 @@ package com.ruoyi.segchk.service.impl;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.segchk.domain.SegchkRecommenderStore;
import com.ruoyi.segchk.domain.SegchkRecommenderStoreWebReq;
import com.ruoyi.segchk.domain.SegchkRecommenderStoreWebResp;
import com.ruoyi.segchk.mapper.SegchkRecommenderIndexMapper;
import com.ruoyi.segchk.mapper.SegchkRecommenderStoreMapper;
import com.ruoyi.segchk.service.ISegchkRecommenderIndexService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

View File

@ -2,9 +2,11 @@ package com.ruoyi.segchk.service.impl;
import java.util.List;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.RedisCahceKey;
import com.ruoyi.common.utils.RedisUtil;
import com.ruoyi.segchk.domain.*;
import com.ruoyi.segchk.service.ISegchkCarouseMgtService;
import com.ruoyi.segchk.service.ISegchkRecommenderStoreService;
import com.ruoyi.segchk.service.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -15,7 +17,6 @@ import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.segchk.mapper.SegchkStoreBasicInfoMapper;
import com.ruoyi.segchk.service.ISegchkStoreBasicInfoService;
import org.springframework.util.ObjectUtils;
/**
@ -35,6 +36,18 @@ public class SegchkStoreBasicInfoServiceImpl implements ISegchkStoreBasicInfoSer
@Autowired
private ISegchkRecommenderStoreService segchkRecommenderStoreService;
@Autowired
private ISegchkStoreCntCtrlService segchkStoreCntCtrlService;
@Autowired
private ISegchkProviderCntCtrlService segchkProviderCntCtrlService;
@Autowired
private RedisCache redisService;
@Autowired
private RedisUtil redisUtil;
private static final Logger logger = LoggerFactory.getLogger(SegchkStoreBasicInfoServiceImpl.class);
/**
* seg
@ -58,6 +71,19 @@ public class SegchkStoreBasicInfoServiceImpl implements ISegchkStoreBasicInfoSer
return segchkStoreBasicInfoMapper.selectSegchkStoreBasicInfoList(segchkStoreBasicInfo);
}
@Override
public List<SegchkStoreBasicInfo> selectSegchkStoreBasicInfoListWithCnt(SegchkStoreBasicInfo segchkStoreBasicInfo) {
List<SegchkStoreBasicInfo> segchkStoreBasicInfos = segchkStoreBasicInfoMapper.selectSegchkStoreBasicInfoList(segchkStoreBasicInfo);
if(ObjectUtils.isEmpty(segchkStoreBasicInfos)){
return new ArrayList<SegchkStoreBasicInfo>();
}
segchkStoreBasicInfos.parallelStream().forEachOrdered(v -> v.setStoreCount(v.getProviderId()
, segchkProviderCntCtrlService.selectSegchkProviderCntCtrlByProviderId(v.getProviderId())
, redisUtil.hmget("wechatCount")
, redisUtil.hmget("wechatCount1")));
return segchkStoreBasicInfos;
}
/**
* seg
*
@ -154,13 +180,37 @@ public class SegchkStoreBasicInfoServiceImpl implements ISegchkStoreBasicInfoSer
*/
@Override
public int updateSegchkStoreServiceStatus(SegchkStoreBasicInfo segchkStoreBasicInfo) {
if(!segchkStoreBasicInfo.getServiceState().equals("0")){
if(!ObjectUtils.isEmpty(segchkStoreBasicInfo.getServiceState()) && !segchkStoreBasicInfo.getServiceState().equals("0")){
// 商户下线
Long[] storeIds = new Long[]{segchkStoreBasicInfo.getStoreId()};
segchkCarouseMgtService.deleteSegchkCarouseMgtByStoreIds(storeIds);
segchkRecommenderStoreService.deleteSegchkRecommenderStoreByStoreIds(storeIds);
}
return segchkStoreBasicInfoMapper.updateSegchkStoreServiceStatus(segchkStoreBasicInfo);
SegchkStoreStatus segchkStoreStatus = new SegchkStoreStatus();
segchkStoreStatus.setProviderId(segchkStoreBasicInfo.getProviderId());
segchkStoreStatus.setStoreId(segchkStoreBasicInfo.getStoreId());
segchkStoreStatus.setServiceState(segchkStoreBasicInfo.getServiceState());
segchkStoreStatus.setStateFlag(segchkStoreBasicInfo.getStateFlag());
segchkStoreStatus.setWithMsg(segchkStoreBasicInfo.getWithMsg());
segchkStoreStatus.setUseSelfCardWithNovip(segchkStoreBasicInfo.getUseSelfCardWithNovip());
int ret = updateSegchkStoreStatus(segchkStoreStatus);
if (ret > 0){
redisService.setCacheObject(RedisCahceKey.STORE_STATUS + "::" + RedisCahceKey.STORE_STATUS + segchkStoreStatus.getStoreId(), segchkStoreStatus);
logger.debug("cache store status update {}", segchkStoreStatus.toString());
}
return ret;
}
/**
* seg
*
* @param segchkStoreStatus seg
* @return
*/
@Override
// @CachePut(value = RedisCahceKey.STORE_STATUS, key = "'STORE_STATUS' + #segchkStoreStatus.storeId")
public int updateSegchkStoreStatus(SegchkStoreStatus segchkStoreStatus) {
return segchkStoreBasicInfoMapper.updateSegchkStoreServiceStatus(segchkStoreStatus);
}
@Override
@ -168,6 +218,74 @@ public class SegchkStoreBasicInfoServiceImpl implements ISegchkStoreBasicInfoSer
return segchkStoreBasicInfoMapper.updateSegchkStoreDetail(segchkStoreBasicInfo);
}
/**
* segVR
*
* @param segchkStoreVrInfo seg(ididvr)
* @return
*/
@Override
public int updateSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo) {
return segchkStoreBasicInfoMapper.updateSegchkStoreVr(segchkStoreVrInfo);
}
@Override
public int addSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo) {
return segchkStoreBasicInfoMapper.addSegchkStoreVr(segchkStoreVrInfo);
}
@Override
public int deleteSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo) {
return segchkStoreBasicInfoMapper.deleteSegchkStoreVr(segchkStoreVrInfo);
}
/**
*
*
* @param providerId id
* @return
*/
@Override
public List<SimpleListObj> selectSegchkStoreSimpleList(Long providerId) {
return segchkStoreBasicInfoMapper.selectSegchkStoreSimpleList(providerId);
}
/**
*
*
* @param segchkStoreCntCtrl
* @return
*/
@Override
public int updateSegchkStoreCnt(SegchkStoreCntCtrl segchkStoreCntCtrl) {
SegchkStoreCntCtrl segchkStoreCntCtrl1 = segchkStoreCntCtrlService.selectSegchkStoreCntCtrlByCntId(segchkStoreCntCtrl.getCntId());
return 0;
}
/**
*
*
* @param segchkStoreCntCtrl
* @return
*/
@Override
public int updateSegchkStoreCnt2Redis(SegchkStoreCntCtrl segchkStoreCntCtrl) {
Long providerId = segchkStoreCntCtrl.getProviderId();
Long storeId = segchkStoreCntCtrl.getStoreId();
if (segchkStoreCntCtrl.updateBrowse() != 0L){
redisUtil.hset("wechatCount1", "browse_cnt1:" + providerId + ":" + storeId, segchkStoreCntCtrl.getBrowseCnt());
}
if (segchkStoreCntCtrl.updateCollect() != 0L){
redisUtil.hset("wechatCount1", "collect_cnt1:" + providerId + ":" + storeId, segchkStoreCntCtrl.getCollectCnt());
}
if (segchkStoreCntCtrl.updateBook() != 0L){
redisUtil.hset("wechatCount1", "book_cnt1:" + providerId + ":" + storeId, segchkStoreCntCtrl.getBookCnt());
}
return 1;
}
/**
* seg
*

Some files were not shown because too many files have changed in this diff Show More