xhxu 5 лет назад
Родитель
Сommit
7399355b7c
14 измененных файлов: 2450 добавлений и 39 удалений
  1. +0
    -0
      mallinkAdmin/src/main/resources/db/migration/V202101140001__memberImport.sql
  2. +1
    -1
      mallinkAdmin/src/main/resources/db/migration/V202101190001__wx_score_rules.sql
  3. +1999
    -0
      mallinkAdmin/src/main/resources/db/migration/V202101210001__wx_c_user_basic_sign.sql
  4. +85
    -0
      mallinkCApi/src/main/java/com/iformall/controller/WxCUserBasicSignController.java
  5. +1
    -0
      mallinkService/src/main/java/com/iformall/common/ErrorCode.java
  6. +7
    -0
      mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java
  7. +67
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicSign.java
  8. +13
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicSignMapper.java
  9. +23
    -0
      mallinkService/src/main/java/com/iformall/service/WxCUserBasicSignService.java
  10. +140
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicSignServiceImpl.java
  11. +4
    -36
      mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java
  12. +4
    -2
      mallinkService/src/main/java/com/iformall/utils/CreditUtil.java
  13. +15
    -0
      mallinkService/src/main/java/com/iformall/utils/DateUtils.java
  14. +91
    -0
      mallinkService/src/main/resources/mapper/WxCUserBasicSignMapper.xml

mallinkAdmin/src/main/resources/db/migration/V202101400001__memberImport.sql → mallinkAdmin/src/main/resources/db/migration/V202101140001__memberImport.sql Просмотреть файл


mallinkAdmin/src/main/resources/db/migration/V202101900001__wx_score_rules.sql → mallinkAdmin/src/main/resources/db/migration/V202101190001__wx_score_rules.sql Просмотреть файл

@@ -1,5 +1,5 @@
INSERT INTO `mallink`.`wx_score_rules`(`id`, `tenant_id`, `type`, `scale`)
select CEILING(RAND()*90000000000+10000000000),`tenant_id`,4,`scale` from wx_score_rules where type = 2 and scale > 10;

--集团版手动处理,(集团版不存在这类数据,子集团数据与原集团规则相等)
--集团版手动处理,(集团版不存在这类数据,子集团生日倍率数据与原集团规则相等)
--目前集团版(1008-1020-----1028)(1026-1027-----1025)

+ 1999
- 0
mallinkAdmin/src/main/resources/db/migration/V202101210001__wx_c_user_basic_sign.sql
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 85
- 0
mallinkCApi/src/main/java/com/iformall/controller/WxCUserBasicSignController.java Просмотреть файл

@@ -0,0 +1,85 @@
package com.iformall.controller;

import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData;
import com.iformall.domain.po.WxCUserBasicSign;
import com.iformall.exception.MallinkException;
import com.iformall.service.WxCUserBasicSignService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/userSign")
@Api(description = "签到接口")
public class WxCUserBasicSignController extends BaseController {

private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
private WxCUserBasicSignService wxCUserBasicSignService;

@ApiOperation("用户签到列表")
@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true),
@ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)})
public ResultData list(@ModelAttribute WxCUserBasicSign wxCUserBasicSign, Integer pageNum, Integer pageSize) {
logger.debug("[" + getIpAddr() + "] WxCUserBasicSignController::list");
if (null == wxCUserBasicSign){
wxCUserBasicSign = new WxCUserBasicSign();
}
Long memberId;
try {
memberId = getMemberId();
} catch (MallinkException me) {
return new ResultData(ErrorCode.getByCode(me.getErrorCode()));
}
wxCUserBasicSign.updateTenantInfo(getTenantInfo());
wxCUserBasicSign.setUserId(memberId);
final PageInfo<WxCUserBasicSign> page = wxCUserBasicSignService.listAsPage(wxCUserBasicSign, pageNum, pageSize);
return new ResultData(page);
}

@ApiOperation("签到")
@PostMapping("signIn")
@ApiImplicitParams({
@ApiImplicitParam(name = "gameId", value = "游戏ID", dataType = "String", paramType = "query", required = true)})
public ResultData signIn(@RequestBody WxCUserBasicSign wxCUserBasicSign) {
logger.debug("[" + getIpAddr() + "] WxCUserBasicSignController::signIn");
if (null == wxCUserBasicSign){
wxCUserBasicSign = new WxCUserBasicSign();
}
Long memberId;
try {
memberId = getMemberId();
} catch (MallinkException me) {
return new ResultData(ErrorCode.getByCode(me.getErrorCode()));
}
wxCUserBasicSign.updateTenantInfo(getTenantInfo());
wxCUserBasicSign.setUserId(memberId);

WxCUserBasicSign todaySign = wxCUserBasicSignService.getTodaySignIn(wxCUserBasicSign);
if(todaySign == null){
try {
todaySign = wxCUserBasicSignService.signIn(wxCUserBasicSign);
}catch(Exception e){
return new ResultData(ErrorCode.SYS_SERVER_ERROR);
}
if(todaySign == null){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"type");
}
return new ResultData(todaySign);
}else{
return new ResultData(ErrorCode.MEM_IS_SIGNIN,todaySign);
}

}

}

+ 1
- 0
mallinkService/src/main/java/com/iformall/common/ErrorCode.java Просмотреть файл

@@ -396,6 +396,7 @@ public enum ErrorCode{
CREDIT_NOT_ENOUGH(13101, "积分不够扣减值"),
USER_NOT_MEMBER(13102, "该用户不是小程序会员"),
OUT_OF_CREDIT(13103, "超出最大积分"),
MEM_IS_SIGNIN(13104, "该用户已签到"),


/**


+ 7
- 0
mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java Просмотреть файл

@@ -76,6 +76,13 @@ public class BaseMyBatisConfiguration {
basicInfoSharding.setRule(EnumShardingRule.HASH.getCode());
shardingList.add(basicInfoSharding);

ShardingSphere basicSignSharding = new ShardingSphere();
basicSignSharding.setColumn("tenant_id");
basicSignSharding.setTableName("wx_c_user_basic_sign");
basicSignSharding.setCount(100);
basicSignSharding.setRule(EnumShardingRule.HASH.getCode());
shardingList.add(basicSignSharding);

ShardingSphere wxbasicChildSharding = new ShardingSphere();
wxbasicChildSharding.setColumn("tenant_id");
wxbasicChildSharding.setTableName("wx_c_user_basic_child");


+ 67
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicSign.java Просмотреть файл

@@ -0,0 +1,67 @@
package com.iformall.domain.po;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.iformall.domain.po.base.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.util.Date;

@TableName(value = "wx_c_user_basic_sign")
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class WxCUserBasicSign extends TenantEntity {

@TableField(exist = false)
public static final Integer SIGNIN_TYPE = 1;

protected Long id;

@io.swagger.annotations.ApiModelProperty(value="userId",name="userId")
private Long userId;

@io.swagger.annotations.ApiModelProperty(value="1:签到",name="type")
private Integer type;

@io.swagger.annotations.ApiModelProperty(value="签到时间",name="signinDate")
private Date signinDate;
@io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate")
private Date createDate;
@io.swagger.annotations.ApiModelProperty(value="修改时间",name="updateDate")
private Date updateDate;

@io.swagger.annotations.ApiModelProperty(value="截止当前签到时间当月连续签到天数",name="continueMonthSign")
private Integer continueMonthSign;
@io.swagger.annotations.ApiModelProperty(value="截止当前签到时间当月累计签到天数",name="countMonthSign")
private Integer countMonthSign;

@io.swagger.annotations.ApiModelProperty(value="截止当前签到时间当年连续签到天数",name="continueYearSign")
private Integer continueYearSign;
@io.swagger.annotations.ApiModelProperty(value="截止当前签到时间当年累计签到天数",name="countYearSign")
private Integer countYearSign;

@io.swagger.annotations.ApiModelProperty(value="截止当前签到时间连续签到天数",name="continueSign")
private Integer continueSign;
@io.swagger.annotations.ApiModelProperty(value="截止当前签到时间累计签到天数",name="countSign")
private Integer countSign;

@io.swagger.annotations.ApiModelProperty(value="备注",name="mark")
private String mark;


@TableField(exist = false)
private Date startDate;

@TableField(exist = false)
private Date endDate;

@TableField(exist = false)
private Integer begin;

@TableField(exist = false)
private Integer limit;

}

+ 13
- 0
mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicSignMapper.java Просмотреть файл

@@ -0,0 +1,13 @@
package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxCUserBasicSign;

import java.util.List;

public interface WxCUserBasicSignMapper extends CommonMapper<WxCUserBasicSign, Long> {
List<WxCUserBasicSign> findList(WxCUserBasicSign record);

WxCUserBasicSign getLastSignIn(WxCUserBasicSign record);
}

+ 23
- 0
mallinkService/src/main/java/com/iformall/service/WxCUserBasicSignService.java Просмотреть файл

@@ -0,0 +1,23 @@
package com.iformall.service;

import com.github.pagehelper.PageInfo;
import com.iformall.domain.po.WxCUserBasicSign;

public interface WxCUserBasicSignService {

/**
* 根据实体查询分页列表
*
* @param record
* @param pageIndex
* @param pageSize
* @return
*/
PageInfo<WxCUserBasicSign> listAsPage(WxCUserBasicSign record, Integer pageIndex, Integer pageSize);

WxCUserBasicSign signIn(WxCUserBasicSign record);

WxCUserBasicSign getTodaySignIn(WxCUserBasicSign record);

WxCUserBasicSign getLastSignIn(WxCUserBasicSign record);
}

+ 140
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicSignServiceImpl.java Просмотреть файл

@@ -0,0 +1,140 @@
package com.iformall.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.IdWorker;
import com.iformall.domain.po.WxCUserBasicSign;
import com.iformall.mapper.WxCUserBasicSignMapper;
import com.iformall.service.WxCUserBasicSignService;
import com.iformall.utils.DateUtils;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import static java.util.Calendar.DAY_OF_MONTH;

@Service
@Slf4j
public class WxCUserBasicSignServiceImpl implements WxCUserBasicSignService {

private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
WxCUserBasicSignMapper wxCUserBasicSignMapper;

@Override
public PageInfo<WxCUserBasicSign> listAsPage(WxCUserBasicSign record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserBasicSignMapper.findList(record));
}

@Transactional(rollbackFor = {Exception.class})
@Override
public WxCUserBasicSign signIn(WxCUserBasicSign record) {
if(record.getType() == null){
record.setType(WxCUserBasicSign.SIGNIN_TYPE);
}

final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());

Date today = new Date();
record.setCreateDate(today);
record.setUpdateDate(today);

if(record.getType().equals(WxCUserBasicSign.SIGNIN_TYPE)){
record.setSigninDate(DateUtils.getDateZero(today));
WxCUserBasicSign lastSignIn = wxCUserBasicSignMapper.getLastSignIn(record);
if(lastSignIn == null){

record.setContinueMonthSign(1);
record.setCountMonthSign(1);
record.setContinueYearSign(1);
record.setCountYearSign(1);
record.setContinueSign(1);
record.setCountSign(1);
wxCUserBasicSignMapper.insert(record);
}else{
long daysL = DateUtils.startToEnd(lastSignIn.getSigninDate(), today);
int daysI = new Long(daysL).intValue();

record.setCountSign(lastSignIn.getCountSign() + 1);
if(daysI == 1){
record.setContinueSign(lastSignIn.getContinueSign() + 1);
}else{
record.setContinueSign(1);
}

if(DateUtils.getYear(today) == DateUtils.getYear(lastSignIn.getSigninDate())){
record.setCountYearSign(lastSignIn.getCountYearSign() + 1);
if(daysI == 1){
record.setContinueYearSign(lastSignIn.getContinueYearSign() + 1);
}else{
record.setContinueYearSign(1);
}
if(DateUtils.getMonth(today) == DateUtils.getMonth(lastSignIn.getSigninDate())){
record.setCountMonthSign(lastSignIn.getCountMonthSign() + 1);
if(daysI == 1){
record.setContinueMonthSign(lastSignIn.getContinueMonthSign() + 1);
}else{
record.setContinueMonthSign(1);
}
}else{
record.setCountMonthSign(1);
record.setContinueMonthSign(1);
}
}else{
record.setContinueMonthSign(1);
record.setCountMonthSign(1);
record.setContinueYearSign(1);
record.setCountYearSign(1);
}
wxCUserBasicSignMapper.insert(record);
}
return record;
}else{
//补签
return null;
}
}

@Override
public WxCUserBasicSign getTodaySignIn(WxCUserBasicSign record) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date today = calendar.getTime();//今天零点
calendar.set(DAY_OF_MONTH,calendar.get(DAY_OF_MONTH) +1);
Date tomorrow =calendar.getTime();//明天零点

record.setStartDate(today);
record.setEndDate(tomorrow);
List<WxCUserBasicSign> list = wxCUserBasicSignMapper.findList(record);
if(list != null && list.size() == 1){
return list.get(0);
}else if(list.size() > 1){
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String todayString = format.format(today);
logger.error("用户签到数据异常{}"+record.getUserId()+"时间{}"+todayString);
return list.get(0);
}
return null;
}

@Override
public WxCUserBasicSign getLastSignIn(WxCUserBasicSign record) {
return wxCUserBasicSignMapper.getLastSignIn(record);
}


}

+ 4
- 36
mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java Просмотреть файл

@@ -52,50 +52,18 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
public void wxScoreRulesInit(String tenantId) {
WxScoreRules wxScoreRules = new WxScoreRules();
wxScoreRules.setTenantId(tenantId);
wxScoreRules.setRules("[{\"id\": 1, \"desc\": \"每日登陆\", \"step\": 1, \"limit\": 0, \"score\": 0}," +
" {\"id\": 2, \"score\": null, \"childs\": " +
"[{\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"餐饮\", \"businessId\": 1}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"娱乐\", \"businessId\": 2}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"服饰\", \"businessId\": 3}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"亲子\", \"businessId\": 4}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"超市\", \"businessId\": 5}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"美妆\", \"businessId\": 7}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"珠宝\", \"businessId\": 8}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"服务\", \"businessId\": 9}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"家居\", \"businessId\": 10}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"数码家电\", \"businessId\": 11}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"其他\", \"businessId\": 6}]}," +
" {\"id\": 3, \"desc\": \"绑定车牌1个\", \"step\": 1, \"limit\": 1, \"score\": 0}," +
" {\"id\": 6, \"desc\": \"授权手机号\", \"step\": 1, \"limit\": 1, \"score\": 0}," +
" {\"id\": 7, \"desc\": \"编辑个人信息\", \"step\": 1, \"limit\": 1, \"score\": 0}]");
wxScoreRules.setRules(WxScoreRules.getCreditDefaultRules());
wxScoreRules.setCreateDate(new Date());
wxScoreRules.setUpdateDate(new Date());
wxScoreRules.setType(2);
wxScoreRules.setClearYear(1);
wxScoreRules.setScale(10);
wxScoreRules.setType(EnumScoreRules.CREDIT.getCode());
wxScoreRules.setCreditLocked(1);
wxScoreRulesMapper.insert(wxScoreRules);
wxScoreRules = new WxScoreRules();
wxScoreRules.setTenantId(tenantId);
wxScoreRules.setRules("[{\"id\": 1, \"desc\": \"每日登陆\", \"step\": 1, \"limit\": 0, \"score\": 0}," +
" {\"id\": 2, \"score\": 0, \"childs\": " +
"[{\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"餐饮\", \"businessId\": 1}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"娱乐\", \"businessId\": 2}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"服饰\", \"businessId\": 3}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"亲子\", \"businessId\": 4}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"超市\", \"businessId\": 5}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"美妆\", \"businessId\": 7}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"珠宝\", \"businessId\": 8}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"服务\", \"businessId\": 9}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"家居\", \"businessId\": 10}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"数码家电\", \"businessId\": 11}," +
" {\"desc\": \"线上交易1元\", \"step\": 1, \"limit\": 0, \"score\": 0, \"title\": \"其他\", \"businessId\": 6}]}," +
" {\"id\": 3, \"desc\": \"绑定车牌1个\", \"step\": 1, \"limit\": 1, \"score\": 0}," +
" {\"id\": 6, \"desc\": \"授权手机号\", \"step\": 1, \"limit\": 1, \"score\": 0}," +
" {\"id\": 7, \"desc\": \"编辑个人信息\", \"step\": 1, \"limit\": 1, \"score\": 0}]");
wxScoreRules.setRules(WxScoreRules.getScoreDefaultRules());
wxScoreRules.setCreateDate(new Date());
wxScoreRules.setUpdateDate(new Date());
wxScoreRules.setType(1);
wxScoreRules.setType(EnumScoreRules.SCORE.getCode());
wxScoreRules.setCreditLocked(0);
wxScoreRulesMapper.insert(wxScoreRules);
}


+ 4
- 2
mallinkService/src/main/java/com/iformall/utils/CreditUtil.java Просмотреть файл

@@ -104,8 +104,10 @@ public class CreditUtil {
if(Objects.nonNull(wxCUserBasicInfo.getScoreDate())){
int scoreYear = DateUtils.getYear(wxCUserBasicInfo.getScoreDate());
int year = DateUtils.getYear(new Date());
if(scoreYear == year && DateUtils.isBirthdays(wxCUserBasicInfo.getScoreDate())){
birthdayScale = getBirthdayScoreScale(tenantId, wxScoreRulesService);
if(scoreYear == year){
if(DateUtils.isBirthdays(wxCUserBasicInfo.getScoreDate())){
birthdayScale = getBirthdayScoreScale(tenantId, wxScoreRulesService);
}
}else{
if (Objects.nonNull(wxCUserBasicInfo.getBirthdate()) && DateUtils.isBirthdays(wxCUserBasicInfo.getBirthdate())) {
birthdayScale = getBirthdayScoreScale(tenantId,wxScoreRulesService);


+ 15
- 0
mallinkService/src/main/java/com/iformall/utils/DateUtils.java Просмотреть файл

@@ -1362,4 +1362,19 @@ public class DateUtils {
return false;
}

/**
* 获取当前日期零点<br>
*
* @param date
* @return 获取当前日期零点
*/
public static Date getDateZero(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
return cal.getTime();
}

}

+ 91
- 0
mallinkService/src/main/resources/mapper/WxCUserBasicSignMapper.xml Просмотреть файл

@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.iformall.mapper.WxCUserBasicSignMapper">
<resultMap id="BaseResultMap" type="com.iformall.domain.po.WxCUserBasicSign">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId" />
<result column="parent_tenant_id" jdbcType="VARCHAR" property="parentTenantId"/>
<result column="user_id" jdbcType="BIGINT" property="userId" />

<result column="type" jdbcType="INTEGER" property="type" />

<result column="signin_date" jdbcType="TIMESTAMP" property="signinDate"/>
<result column="create_date" jdbcType="TIMESTAMP" property="createDate"/>
<result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/>

<result column="continue_month_sign" jdbcType="INTEGER" property="continueMonthSign" />
<result column="count_month_sign" jdbcType="INTEGER" property="countMonthSign" />

<result column="continue_year_sign" jdbcType="INTEGER" property="continueYearSign" />
<result column="count_year_sign" jdbcType="INTEGER" property="countYearSign" />

<result column="continue_sign" jdbcType="INTEGER" property="continueSign" />
<result column="count_sign" jdbcType="INTEGER" property="countSign" />

<result column="mark" jdbcType="VARCHAR" property="mark" />

</resultMap>

<sql id="allColumns">
`id`,`tenant_id`,`parent_tenant_id`,`user_id`,`type`,`signin_date`,`create_date`,`update_date`,
`continue_month_sign`,`count_month_sign`,`continue_year_sign`,`count_year_sign`,
`continue_sign`,`count_sign`,`mark`
</sql>

<sql id="dynamicWhereConditions">
where 1 = 1
<if test=" null != id ">
and `id` = #{id}
</if>
<if test=" null != tenantId and '' != tenantId">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != parentTenantId and '' != parentTenantId">
and `parent_tenant_id` = #{parentTenantId}
</if>
<if test=" null != userId ">
and `user_id` = #{userId}
</if>
<if test=" null != type ">
and `type` = #{type}
</if>

<if test=" null != startDate ">
and `signin_date` &gt;= #{startDate}
</if>
<if test=" null != endDate">
and `signin_date` &lt; #{endDate}
</if>

<if test=" null != ids ">
and id in
<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
#{idItem}
</foreach>
</if>
order by `signin_date` desc

</sql>

<select id="findList" parameterType="com.iformall.domain.po.WxCUserBasicSign" resultMap="BaseResultMap">
select <include refid="allColumns" />
from wx_c_user_basic_sign
<include refid="dynamicWhereConditions" />
</select>

<select id="getLastSignIn" parameterType="com.iformall.domain.po.WxCUserBasicSign" resultMap="BaseResultMap">
select <include refid="allColumns" />,max(`signin_date`) from wx_c_user_basic_sign
where 1 = 1
<if test=" null != tenantId and '' != tenantId">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != parentTenantId and '' != parentTenantId">
and `parent_tenant_id` = #{parentTenantId}
</if>
<if test=" null != userId ">
and `user_id` = #{userId}
</if>
group by user_id
</select>

</mapper>

Загрузка…
Отмена
Сохранить