Commit 457045cc authored by hanfeng's avatar hanfeng

Merge branch 'base-modify' of http://10.5.52.3/youjj/cloud-platform into base-modify

parents fed90be6 abdf1f46
......@@ -6,6 +6,7 @@
<artifactId>ace-auth</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -6,6 +6,7 @@
<artifactId>ace-auth</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -6,6 +6,7 @@
<artifactId>ace-auth</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -6,6 +6,7 @@
<artifactId>ace-security</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -42,3 +42,10 @@ ALIPAY_PID=2088531634846583
ALIPAY_PUBLIC_KEY=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAj/EMaAD2iJP3I5M0g6pssDDe3RxF5I3ECM/Kz/btM0RiW2g5oRrHSjtGuos9l1QhQAY0SrVqa2eZdPKUB3ZqJdimQiXr3dbiMvG9UCs8vVUcrtCHCBjDllKQLiYzboxE6JLXyfII5tIXbFKiGyiEyXQnffUhQ9uGyT2EGWGecz6PLIjDdbwpxuzF2gIUzV3bPxb+0axejBxJ/3zKnWrsbyq2nvs8XrzrR2CEggNqgqsKzaacCL1yZjXzQRseSnCMtgSxR5W5afbdY0zqbUlLHUrUZ8ycCRC0ECuI9HyTbuqtdWHEZH7vIH44wEQWZPDRhMfMZvzmPUgpTWZLv5BtaQIDAQAB
ALIPAY_ACOUNT=xxfc810@163.com
ALIPAY_PRIVATE_KEY=MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC3bANag6my6pjHWqwnSCffRonvOXE6uQgNNb+V23PV55zfcuC+jIgl9BRrIf4tax5f2itfDmlOdAX6mK8WJ620SHg777Q2KlgNTa25ta3xiEfgkb01SX9VyiaLPpP2TEo5LhhRcT+cUomIufQbVbm/jS8mRQ0qBoofbMfr7n9fBSiVDx/QX07qcJTc/MGCy79H5gUiy2fTOEMhTuNtPkoU3az7jXMQ5U/33ILFAJzPCMNJvQnCYxs/y5loxxHdVqV8FnuCWGEWNViuuBtFRVRNXkrs/x99nF0V5/FHnOZzdM3SWrKCpA/52G5QQrbhZXUhMyCs9stXvH+iVUC1JJ9DAgMBAAECggEAOGRf/5MdOGHCCQCKjyUzBQVV4RPDCS/cFtughH1M9sXXyCc0i8D/FtQc9vcjg2k8lHGqBfaTT8iCEhKhOemHETd6p8rBmCmamrR4JfGCghDJMHT+PATVvlWBViwuJ3o7E6tlVJzB1tjVahDpyQGpMwhAJ77xFiueiZzTNmlEBb02ByCG95vkBV7NQT8yO9/1i3eq/tMoY7FfJP5O4LQ41RmqU9TVaAnTfuE6gs5hJboNGbmSMs2w2M0tldibmWcsQsFFPLwbUz042czSVb9J7lsGJjCtsaBeUiJ15y66W9D3587JJar9p+EyA2LNbolgrrNi2AA9KU5wEW2w8XyoOQKBgQDZamXDQZK3N5E46Hp/79o0Q99jqj9sL/HCYB4+Z8dG/Mgs43HHpgd+gHVeSOgxXS7RxsLyjCsM97ysWk7sbafvqtsnYmPU2MzumykVVpgWO6dpBcwmf2Ygk2i2W77oEqIi2IUmzkvDhw9C8A8/oh+IuoyRouPGRHpykAF+uXKVhwKBgQDX+TfQDDPniSnA9kTlW5I44glRgogA4xJtAYLtEr2fH9Pys+lkOyRqQH5wbJVj27jzJ0lffNyyMxgbZ8KRiH+3qRa8wNazwwXlXmj4DQWZedkULOpgMdU4EbbkTQRU3onEpMAZhAmVvAV1KTozs4RKi+1fFZ9V6ZOtmvapNJuXZQKBgQC7Xb0rQ3SMHwAxGfCQFwVma2O2AX883iisCaemwkrze1+Lh8uDcisdMtlzEsO/3v09XdydqHxlZY6cvgssJ+hFXGoXi+xa/yfFLcR/FixlZK2Gja99MeeyhTcFiRWB7KT8ALrnUXvrmpZlanrJrQ8eBx6jV8ySDmu0FTSkoG8GOwKBgE5toxX7CHJBPhdjlvtPOJdNhiLCaw8fZpaNIPVkg9WgIkCVkuCiFYQ8LW44EDv2E4DBOITje+V+Zne1Q1PEJNUWIzqiMJWQ8bgsg6PoXqswM2N/OBF8pzg4PplDWppTQeZWCah6aVylrbmxIgCaZSUJEUchO/5f1xAJIR+rCgF9AoGBAKJVVbrKPWshQ4cTL6VzanowjpWCRUDR22Oz3nKIdRl1FX+DTXYE4Dwl38iiNHOJptS7VjU553BUZl7HxCmSBWUmtnV78NNnRKrFVUhQhIRYBjMn1W6MD0jlBkky6yXmXkPtlqU6vU19RzGrvv6fDdBf6v4AkD8kWXiH5j4XEiQS
#ALIPAY_APPID=2016100100641990
#ALIPAY_PID=2088531634846583
#ALIPAY_PUBLIC_KEY=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAid9pFC4tSCYfiT6w6DpL4z3mOdShAungFXC3KK16wTfoti1ytnngveQHVHnN67hkGyGKhTP/ZCmUYKK7BahwcuJFnEx5rKuX3pNcAhW4Sigurm9bNCE2nSn2Jhq6Wjkp9MNBbVr4sBKWktjA8EhIAgfM7G0Jzlvpm2La44+4b2/iUX08paPlNMAZVV8OxjlGgOgm0FAjsO3PzYPRIqNYWZMTTcGmRQ60EQy3RsM8uKacDfWa8kPF59xuja0i17okPI7JKL+mWsLM+9ktXpr/Nflji0gPGejTr03mwZ5PIckoSqN0Q21/0Tt0vsSNIiF9/9FcgK+LaBgp1sjhnhp6LwIDAQAB
#ALIPAY_ACOUNT=xxfc810@163.com
#ALIPAY_PRIVATE_KEY=MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCJ32kULi1IJh+JPrDoOkvjPeY51KEC6eAVcLcorXrBN+i2LXK2eeC95AdUec3ruGQbIYqFM/9kKZRgorsFqHBy4kWcTHmsq5fek1wCFbhKKC6ub1s0ITadKfYmGrpaOSn0w0FtWviwEpaS2MDwSEgCB8zsbQnOW+mbYtrjj7hvb+JRfTylo+U0wBlVXw7GOUaA6CbQUCOw7c/Ng9Eio1hZkxNNwaZFDrQRDLdGwzy4ppwN9ZryQ8Xn3G6NrSLXuiQ8jskov6Zawsz72S1emv81+WOLSA8Z6NOvTebBnk8hyShKo3RDbX/RO3S+xI0iIX3/0VyAr4toGCnWyOGeGnovAgMBAAECggEATwGCInlPo3+NJMWS9JCref23lz4cQiIpMcAUhS/cHyrdpL+oc56lxcsM1EC0WragTtfKnAgu+oPFLhcyWsyqG3tEbot4UhVGgtooqF0v7PbXwUe4mMfLlwY7spwwW5FUVJkrPfIafjM4q8+fyFFzSg6URIs7SlBrLorYafyqsNgyFf9wbSoJJgDWLqUCQXwImcAoSdeZPQK6PhZ4eG25LRB/Qd06TDq3YBHY/sBnaaACsRsBa8FeNbtZ6jIa4YKCYniWtxbpkZ4C/kz2upEen9BeSV/1Xtz7RF0vyUEBkQi0RYwMKJrZ7nI8N44AlPMaEgHLw4MbDa2CRgKOWZI7sQKBgQDAPLD2BzwDBgKKhFQ9JJ+W2HNBrFpFi4rw8UJXZpZ5YrWNPHJ/0h1EbDTQ8X7DqHFRxIKYMfD4q/VWelgdWHORuZsiKJDq8726Lh5Fh/2wsSmew9OD4LhZ1J/PDpPikmbxytI08N55+VCv9hLdGl8Ybn/rP9pKnzrNH8hfSpBJBwKBgQC3moKZMRjshfB74+VXbOtNMxUBNiXnfo4nmHIMHA4PS8MpVMi5cMZ6647WltyO+M28auhUL1Ba0MZiHUxGcTQSlU8qNA2ZOhLVB2LCUpVdLpEw4uy8sXQVNCjMZIOcrb5FGVAdSEyt6caN1FQifURq8fx5Y+faFg9Eb+mAGK5DmQKBgQCbdnmF/gPCTjHv42RcrimBzDopekDmzRroD7QfCo/WSsWYGrJePIX+t6Ne9m4VvTsnbUxP2NOPx0D5Vqe707RivT+AOF46JDPjRTil8nxvUFbgVm3P0QRFYXZ79MYUDWHDWMr2lXTWH5HpO4+1z4XoNDSvA0x93JepG3Ln3V0iMQKBgQCMWc6PsFpvJAwriJCefiJ5Rx09adkb10BvwDceTqvowW+Uvr0aFL2E5WCxZW2A1WzgJZEoGWsBoSqlgeP2zT6THhQAHP5wLVaMBjNWfK61Jo3SowV5UOV99/tgE04QjTgvtiPp3oTPRS+E59TQ8JVGc2kemmJ38fkFxc7nHvbHsQKBgDlhm1N0VCUvLKaGzgLW7e4j/13ot3OoBTwxBLhZQkWxapR8E47X91rcljP0Huac1pP5upM7mLW9i6G01Y9ounrrQ98aH/OusnObDDyOcZlf1Zp5QkWCAVwWGcq6AlVIGxLyeggYBu6f85x+GFgl0x53X+G7sW/PraMQ7iAJ2w47
\ No newline at end of file
......@@ -6,6 +6,7 @@
<artifactId>ace-control</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -6,6 +6,7 @@
<artifactId>ace-security</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -6,6 +6,7 @@
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform</artifactId>
<version>2.0-SNAPSHOT</version>
<relativePath>../../xx-common/xx-common-platform/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.wxiaoqi</groupId>
......
......@@ -73,5 +73,5 @@ public class AppUserDetail {
@ApiModelProperty(value = "邀请人账号:")
@Column(name = "inviter_account")
private String inviterAccount;
private Integer inviterAccount;
}
......@@ -6,6 +6,7 @@
<artifactId>ace-modules</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -53,6 +53,22 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
return null;
}
/**
* 根据用户id获取父id
*
* @param code
* @return
*/
public Integer getUserByCode(String code) {
Example example = new Example(AppUserDetail.class);
example.createCriteria().andEqualTo("code", code).andEqualTo("isdel", 0);
List<AppUserDetail> list = mapper.selectByExample(example);
if (list != null && list.size() != 0) {
return list.get(0).getUserid();
}
return 0;
}
/**
* 获取用户信息
*
......
......@@ -37,7 +37,7 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
* @param userId
* @param parentId
*/
public void bindRelation(Integer userId,Integer parentId){
public void bindRelation(Integer userId,Integer parentId,Integer type){
AppUserRelation relation=getMyBiz().getRelationByUserId(parentId);
if(relation==null){
relation=new AppUserRelation();
......@@ -50,13 +50,13 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
relation=new AppUserRelation();
relation.setUserId(userId);
relation.setParentId(parentId);
relation.setBindType(2);
relation.setBindType(type);
relation.setBindTime(time);
insertSelective(relation);
}else {
if(relation.getParentId()==null||relation.getParentId()==0||(relation.getIsForever()!=1&&(time-relation.getBindTime())>3600)){
relation.setParentId(parentId);
relation.setBindType(2);
relation.setBindType(type);
relation.setBindTime(time);
getMyBiz().updRelation(relation);
}
......@@ -80,7 +80,7 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
if(userVo==null){
upRelationTemp(pid,userid);
}else {
bindRelation(platform_userid,pid);
bindRelation(platform_userid,pid,2);
}
}
return ObjectRestResponse.succ();
......@@ -125,7 +125,7 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
return;
}
Integer parentId=relationTemp.getUserId();
bindRelation(platform_userid,parentId);
bindRelation(platform_userid,parentId,2);
}
......
......@@ -9,10 +9,13 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.util.Date;
/**
......@@ -107,5 +110,12 @@ public class MyWaterBiz extends BaseBiz<MyWalletMapper, MyWallet>{
return isToday;
}
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public int createWalletByUserId(Integer userId){
MyWallet myWallet = new MyWallet();
myWallet.setUserId(userId);
myWallet.setCrtTime(Instant.now().toEpochMilli());
myWallet.setUpdTime(Instant.now().toEpochMilli());
return mapper.insertSelective(myWallet);
}
}
\ No newline at end of file
......@@ -84,12 +84,13 @@ public class AppUserRest {
JSONObject register(
@RequestParam(value="username",defaultValue="")String username,
@RequestParam(value="mobilecode",defaultValue="")String mobilecode,
@RequestParam(value="password",defaultValue="")String password
@RequestParam(value="password",defaultValue="")String password,
@RequestParam(value="code",defaultValue="")String code
){
//默认昵称
String nickname=SystemConfig.USER_NIKENAME_DEFAULT+(int)((Math.random()*9+1)*100000);
return appPermissionService.register(username, password, SystemConfig.USER_HEADER_URL_DEFAULT,nickname,
mobilecode, null, null,0);
mobilecode, null, null,0,code);
}
......@@ -116,7 +117,8 @@ public class AppUserRest {
@RequestParam(value="openid",defaultValue="")String openid,
@RequestParam(value="unionid",defaultValue="")String unionid,
@RequestParam(value="type",defaultValue="0")Integer type,
@RequestParam(value="isQQ",defaultValue="0")Integer isQQ
@RequestParam(value="isQQ",defaultValue="0")Integer isQQ,
@RequestParam(value="code",defaultValue="")String code
){
if(StringUtils.isBlank(headimgurl)){
headimgurl=SystemConfig.USER_HEADER_URL_DEFAULT;
......@@ -124,7 +126,7 @@ public class AppUserRest {
if(StringUtils.isBlank(nickname)){
nickname=SystemConfig.USER_NIKENAME_DEFAULT+(int)((Math.random()*9+1)*100000);
}
return appPermissionService.weCahtRegister(username,password,openid, unionid,nickname,headimgurl,type,mobilecode,isQQ);
return appPermissionService.weCahtRegister(username,password,openid, unionid,nickname,headimgurl,type,mobilecode,isQQ,code);
}
/**
* 手机号码检测是否已绑定
......
......@@ -38,12 +38,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.concurrent.TimeUnit;
......@@ -76,6 +74,9 @@ public class AppPermissionService {
@Resource
private RegionFeign regionFeign;
@Autowired
private MyWaterBiz walletBiz;
private BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(12);
@Autowired
private RedisTemplate userRedisTemplate;
......@@ -203,7 +204,7 @@ public class AppPermissionService {
*/
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public JSONObject register(String username, String password, String headimgurl,
String nickname, String mobilecode, String openId, String unionid, Integer type) {
String nickname, String mobilecode, String openId, String unionid, Integer type,String code) {
// 判断参数和验证码
if (StringUtils.isBlank(username) || StringUtils.isBlank(password) || StringUtils.isBlank(mobilecode)) {
return JsonResultUtil.createFailedResult(ResultCode.NULL_CODE, "参数为空");
......@@ -256,14 +257,28 @@ public class AppPermissionService {
rsUserDetail.setIsdel(0);
rsUserDetail.setCrtHost(getIp());
setCreateIPInfo(rsUserDetail);
//邀请人id关系绑定
Integer parentId=0;
if (StringUtils.isNotBlank(code)){
parentId=appUserDetailBiz.getUserByCode(code);
}
if(parentId!=null&&parentId>0){
rsUserDetail.setInviterAccount(parentId);
}
//生成邀请码 长度改为8 不然重复率太高
rsUserDetail.setCode(UUIDUtils.genCodes(8));
appUserDetailBiz.insertSelective(rsUserDetail);
log.error("注册:新增用户详情: " + userid);
//绑定上下线关系
if(parentId!=null&&parentId>0){
relationBiz.bindRelation(userid,parentId,1);
}
//临时会员绑定
insertUserMemberByUserIdAndPhone(userid, username);
//自动登录获取优惠卷
authCoupn(userid);
//参加新人活动
jionActivity(userid);
//创建钱包
walletBiz.createWalletByUserId(appUserLogin.getId());
// 登录结果要做做统一处理
JSONObject data = autoLogin(userid, username, headimgurl, nickname);
// 到im注册,获取返回结果
......@@ -321,6 +336,7 @@ public class AppPermissionService {
data.put("username", StringUtils.isNotEmpty(username) ? username : userVo.getUsername());
data.put("userId", userid);
data.put("imUserId", userVo.getImUserid());
data.put("code", userVo.getCode());
//更新登录时间 和 ip
String clientIp = getIp();
appUserLoginBiz.updateLoginInfo(userid, clientIp);
......@@ -350,7 +366,7 @@ public class AppPermissionService {
*/
@Transactional
public JSONObject weCahtRegister(String username, String password, String openId,
String unionid, String nickname, String headimgurl, int type, String mobilecode, Integer isQQ) {
String unionid, String nickname, String headimgurl, int type, String mobilecode, Integer isQQ,String code) {
// 校验参数和验证码
if (StringUtils.isBlank(username) || StringUtils.isBlank(mobilecode)) {
return JsonResultUtil.createFailedResult(ResultCode.NULL_CODE, "参数为空");
......@@ -432,7 +448,7 @@ public class AppPermissionService {
}
} else if (type == 2) { // 新增
JSONObject register = register(username, password, headimgurl, nickname, mobilecode,
openId, unionid, isQQ);
openId, unionid, isQQ,code);
if (register.getInteger("status") != ResultCode.SUCCESS_CODE) {
if (register.getInteger("status") == ResultCode.EXIST_CODE) {
return JsonResultUtil.createFailedResult(ResultCode.EXIST_CODE, "用户已存在");
......@@ -724,6 +740,16 @@ public class AppPermissionService {
}
}
//注册参与活动
public void jionActivity(Integer userId) {
try {
activityFeign.join(userId);
} catch (Exception e) {
e.printStackTrace();
return;
}
}
/**
* 通过用户id登录*** Unbelievable! ! !
......@@ -788,12 +814,16 @@ public class AppPermissionService {
setCreateIPInfo(rsUserDetail);
appUserDetailBiz.insertSelective(rsUserDetail);
log.error("注册:新增用户详情: " + userid);
//创建钱包
walletBiz.createWalletByUserId(appUserLogin.getId());
//临时会员绑定
insertUserMemberByUserIdAndPhone(userid, username);
//上线绑定
relationBiz.bindByUserId(userid, small_id);
//发送短信通知用户
thirdFeign.sendCode(username, password, SystemConfig.TEMPLATECODE);
//参加新人活动
jionActivity(userid);
// 登录结果要做做统一处理
JSONObject data = autoLogin(userid, username, headimgurl, nickname);
// 到im注册,获取返回结果
......@@ -840,7 +870,8 @@ public class AppPermissionService {
AppUserLogin user = appUserLoginBiz.checkeUserLogin(username);
JSONObject data = new JSONObject();
if (null == user) {
String password = "12345678";
//随机生成密码
String password = UUIDUtils.genCodes(8);
data = applyRegister(username, password, headimgurl, nickname, small_id);
} else {
Integer userid = user.getId();
......@@ -941,4 +972,5 @@ public class AppPermissionService {
public static final String BASE_DATA = "data";
public static final String CITY_NAME = "city";
}
}
......@@ -6,6 +6,7 @@
<artifactId>ace-modules</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -6,6 +6,7 @@
<artifactId>ace-modules</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -36,7 +36,6 @@
<module>ace-sidecar</module>
<module>ace-control</module>
<module>ace-modules</module>
<module>vehicle</module>
<module>xx-app</module>
<module>xx-common</module>
<module>xx-order</module>
......
......@@ -6,6 +6,7 @@
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform</artifactId>
<version>2.0-SNAPSHOT</version>
<relativePath>../../xx-common/xx-common-platform/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
......
package com.xxfc.platform.activity.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 通用活动规则表
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-16 14:04:22
*/
@Data
@Table(name = "activity_rule")
public class ActivityRule implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键id")
private Integer id;
/**
* 活动名称
*/
@Column(name = "name")
@ApiModelProperty(value = "活动名称")
private String name;
/**
* 活动名称
*/
@Column(name = "img")
@ApiModelProperty(value = "活动名称")
private String img;
/**
* 活动描述
*/
@Column(name = "descr")
@ApiModelProperty(value = "活动描述")
private String descr;
/**
* 活动人数限制
*/
@Column(name = "number")
@ApiModelProperty(value = "活动人数限制")
private Integer number;
/**
* 参加活动人数
*/
@Column(name = "join_number")
@ApiModelProperty(value = "参加活动人数")
private Integer joinNumber;
/**
* 活动是否开启:0-未开启;1-已开启;2-已关闭
*/
@Column(name = "status")
@ApiModelProperty(value = "活动是否开启:0-未开启;1-已开启;2-已关闭")
private Integer status;
/**
* 活动奖励规则,json数组格式 [{"type":1, "detail":{...}},...] //// type分类 1--现金;
*/
@Column(name = "value")
@ApiModelProperty(value = "活动奖励规则,json数组格式 [{type:1, detail:{...}},...] //// type分类 1--现金;")
private String value;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 更新时间
*/
@Column(name = "upd_time")
@ApiModelProperty(value = "更新时间", hidden = true )
private Long updTime;
/**
* 是否删除:0-正常;1-删除
*/
@Column(name = "is_del")
@ApiModelProperty(value = "是否删除:0-正常;1-删除")
private Integer isDel;
}
package com.xxfc.platform.activity.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 用户活动参与表
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-16 14:04:22
*/
@Data
@Table(name = "activity_user_join")
public class ActivityUserJoin implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键id")
private Integer id;
/**
* 用户id
*/
@Column(name = "user_id")
@ApiModelProperty(value = "用户id")
private Integer userId;
/**
* 活动规则id
*/
@Column(name = "activity_id")
@ApiModelProperty(value = "活动规则id")
private Integer activityId;
/**
* 状态:0-已参与;1-已领取
*/
@Column(name = "status")
@ApiModelProperty(value = "状态:0-已参与;1-已领取")
private Integer status;
/**
* 参与时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "参与时间", hidden = true )
private Long crtTime;
/**
* 领取时间
*/
@Column(name = "upd_time")
@ApiModelProperty(value = "领取时间", hidden = true )
private Long updTime;
}
......@@ -37,7 +37,11 @@ public class Coupon implements Serializable {
@Column(name = "title")
@ApiModelProperty(value = "优惠券标题(有图片则显示图片):无门槛50元优惠券 | 单品最高减2000元")
private String title;
@Column(name = "subtitle")
@ApiModelProperty(value = "副标题")
private String subtitle;
/**
* 图片
*/
......
......@@ -5,6 +5,7 @@ import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.math.BigDecimal;
@Table(name = "integral_rule")
......@@ -121,7 +122,7 @@ public class IntegralRule{
private String code;
/**
* 获取积分规则
* 获取积分规则 如:{"rule":4} 订单金额*4
*/
private String regulation;
......@@ -131,5 +132,12 @@ public class IntegralRule{
@Column(name = "other_rule")
private String otherRule;
/**
* 操作按钮文字
*/
private String btnWord;
@Transient
private Boolean integralStatus;
}
\ No newline at end of file
......@@ -44,4 +44,12 @@ public class IntegralUserTotal {
*/
private Boolean isdel;
public static IntegralUserTotal initIntegralUserTotal() {
IntegralUserTotal integralUserTotal = new IntegralUserTotal();
integralUserTotal.setIsdel(false);
integralUserTotal.setTotalPoint(0);
integralUserTotal.setRestPoint(0);
return integralUserTotal;
}
}
\ No newline at end of file
......@@ -36,4 +36,8 @@ public interface ActivityFeign {
@RequestMapping(value = "/user/cancelUse", method = RequestMethod.POST)
public ObjectRestResponse cancelUse(@RequestParam(value = "TickerNo",defaultValue ="" ) String TickerNo);
@ApiOperation("新人有礼参加活动")
@RequestMapping(value = "/user", method = RequestMethod.POST)
public ObjectRestResponse join(@RequestParam(value = "userId",defaultValue ="0" ) Integer userId);
}
package com.xxfc.platform.activity.vo;
import com.xxfc.platform.activity.entity.Coupon;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 通用活动规则表
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-16 14:04:22
*/
@Data
public class ActivityRuleVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@ApiModelProperty("主键id")
private Integer id;
/**
* 活动名称
*/
@ApiModelProperty(value = "活动名称")
private String name;
/**
* 活动名称
*/
@ApiModelProperty(value = "活动名称")
private String img;
/**
* 活动描述
*/
@ApiModelProperty(value = "活动描述")
private String descr;
/**
* 活动人数限制
*/
@ApiModelProperty(value = "活动人数限制")
private Integer number;
/**
* 参加活动人数
*/
@ApiModelProperty(value = "参加活动人数")
private Integer joinNumber;
/**
* 活动是否开启:0-未开启;1-已开启;2-已关闭
*/
@ApiModelProperty(value = "活动是否开启:0-未开启;1-已开启;2-已关闭")
private Integer status;
/**
* 活动奖励规则,json数组格式 [{"type":1, "detail":{...}},...] //// type分类 1--现金;
*/
@ApiModelProperty(value = "活动奖励规则,json数组格式 [{type:1, detail:{...}},...] //// type分类 1--现金;")
private String value;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间", hidden = true )
private Long updTime;
/**
* 是否删除:0-正常;1-删除
*/
@ApiModelProperty(value = "是否删除:0-正常;1-删除")
private Integer isDel;
@ApiModelProperty(value = "优惠卷列表")
List<Coupon> coupons;
}
package com.xxfc.platform.activity.vo;
import com.xxfc.platform.activity.entity.IntegralRule;
import lombok.Data;
@Data
public class IntegralRuleVo extends IntegralRule {
private Boolean integralStatus;
}
......@@ -6,6 +6,7 @@
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform-web</artifactId>
<version>2.0-SNAPSHOT</version>
<relativePath>../../xx-common/xx-common-platform-web/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
......
package com.xxfc.platform.activity.biz;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.activity.vo.ActivityRuleVo;
import org.apache.commons.beanutils.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.xxfc.platform.activity.entity.ActivityRule;
import com.xxfc.platform.activity.mapper.ActivityRuleMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import tk.mybatis.mapper.entity.Example;
import java.util.ArrayList;
import java.util.List;
/**
* 通用活动规则表
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-16 14:04:22
*/
@Service
public class ActivityRuleBiz extends BaseBiz<ActivityRuleMapper,ActivityRule> {
@Autowired
CouponBiz couponBiz;
//获取最新的生效的活动
public ActivityRule getActity(){
Example example=new Example(ActivityRule.class);
example.createCriteria().andEqualTo("status",1).andEqualTo("isDel",0);
example.setOrderByClause("id desc");
List<ActivityRule> list=mapper.selectByExample(example);
if(list.size()>0){
return list.get(0);
}
return null;
}
//获取最新活动的H5页面
public ObjectRestResponse getActivityH5(){
ActivityRule activityRule=getActity();
if (activityRule==null){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE,"无有效的活动");
}
ActivityRuleVo ruleVo=new ActivityRuleVo();
try {
BeanUtils.copyProperties(ruleVo, activityRule);
String value=activityRule.getValue();
JSONObject json=JSONObject.parseObject(value);
if(json!=null){
Integer type=json.getInteger("type");
if(type==1){
JSONArray array=json.getJSONArray("value");
List<Coupon> coupons=new ArrayList<>();
if(array.size()>0){
for(int i=0;i<array.size();i++){
Integer id=array.getJSONObject(i).getInteger("id");
coupons.add(couponBiz.selectById(id));
}
}
ruleVo.setCoupons(coupons);
}
}
return ObjectRestResponse.succ(ruleVo);
}catch (Exception e){
e.printStackTrace();
return ObjectRestResponse.createDefaultFail();
}
}
}
\ No newline at end of file
package com.xxfc.platform.activity.biz;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xxfc.platform.activity.entity.ActivityRule;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.xxfc.platform.activity.entity.ActivityUserJoin;
import com.xxfc.platform.activity.mapper.ActivityUserJoinMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
/**
* 用户活动参与表
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-16 14:04:22
*/
@Service
@Slf4j
public class ActivityUserJoinBiz extends BaseBiz<ActivityUserJoinMapper,ActivityUserJoin> {
@Autowired
ActivityRuleBiz ruleBiz;
@Autowired
UserCouponBiz userCouponBiz;
//注册参与活动
public void joinActivity(Integer userId){
ActivityRule rule=ruleBiz.getActity();
if(rule==null){
log.error("----没有开启的活动----");
return;
}
Integer joinNumber=rule.getJoinNumber()==null?0:rule.getJoinNumber();
Integer number=rule.getNumber()==null?0:rule.getNumber();
if(joinNumber>=number){
log.error("----活动已超过参与人数----number==="+number);
return;
}
Integer activityId=rule.getId();
ActivityUserJoin userJoin=new ActivityUserJoin();
userJoin.setActivityId(activityId);
userJoin.setUserId(userId);
Long num=selectCount(userJoin);
if(num!=null||num>0){
log.error("----用户已经参与活动----userId===="+userId);
return;
}
insertSelective(userJoin);
}
//领取优惠卷
public void receiveCoupn(Integer userId) {
ActivityRule rule = ruleBiz.getActity();
if (rule == null) {
log.error("----没有开启的活动----");
return;
}
Integer activityId = rule.getId();
ActivityUserJoin userJoin = new ActivityUserJoin();
userJoin.setActivityId(activityId);
userJoin.setUserId(userId);
Long num = selectCount(userJoin);
if (num == null || num == 0) {
log.error("----用户没有此参与活动----userId====" + userId);
return;
}
String value=rule.getValue();
JSONObject json=JSONObject.parseObject(value);
if(json!=null){
Integer type=json.getInteger("type");
if(type==1){
JSONArray array=json.getJSONArray("value");
if(array.size()>0){
for(int i=0;i<array.size();i++){
Integer id=array.getJSONObject(i).getInteger("id");
userCouponBiz.userLedCoupon(userId,id);
}
}
}
}
}
}
\ No newline at end of file
......@@ -2,14 +2,18 @@ package com.xxfc.platform.activity.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.github.wxiaoqi.security.common.vo.PageParam;
import com.xxfc.platform.activity.entity.IntegralRule;
import com.xxfc.platform.activity.entity.IntegralUserRecord;
import com.xxfc.platform.activity.mapper.IntegralRuleMapper;
import com.xxfc.platform.activity.user.UserInfoBiz;
import com.xxfc.platform.activity.vo.IntegralRuleDto;
import com.xxfc.platform.activity.vo.IntegralUserRecordDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -19,6 +23,10 @@ import java.util.List;
@Transactional
public class IntegralRuleBiz extends BaseBiz<IntegralRuleMapper, IntegralRule> {
@Autowired
UserInfoBiz userInfoBiz;
@Autowired
IntegralUserRecordBiz integralUserRecordBiz;
/**
* 添加、更新积分规则
......@@ -73,9 +81,41 @@ public class IntegralRuleBiz extends BaseBiz<IntegralRuleMapper, IntegralRule> {
public ObjectRestResponse<PageDataVO> getAll(IntegralRuleDto integralRule) {
Query query = new Query(integralRule);
PageDataVO pageDataVO = PageDataVO.pageInfo(query, () -> mapper.selectAllByParam(integralRule));
//添加个人积分状态
return ObjectRestResponse.succ(pageDataVO);
}
public ObjectRestResponse<PageDataVO> getList(IntegralRuleDto integralRule) {
AppUserDTO appUserDTO = userInfoBiz.getUserInfo();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(508, "token is null or invalid");
}
Query query = new Query(integralRule);
PageDataVO<IntegralRule> pageDataVO = PageDataVO.pageInfo(query, () -> mapper.selectAllByParam(integralRule));
//添加个人积分状态
for(IntegralRule value : pageDataVO.getData()) {
value.setIntegralStatus(getIntegralStatus(appUserDTO, value));
}
return ObjectRestResponse.succ(pageDataVO);
}
public boolean getIntegralStatus(AppUserDTO appUserDTO, IntegralRule integralRule) {
IntegralUserRecordDto integralUserRecordDto = new IntegralUserRecordDto();
integralUserRecordDto.setUserId(appUserDTO.getUserid());
integralUserRecordDto.setIntegralRuleCode(integralRule.getCode());
List<IntegralUserRecord> integralUserRecords = integralUserRecordBiz.getByUserAndTime(integralUserRecordDto).getData();
if(integralUserRecords == null || integralUserRecords.size() <=0 ) {
return false;
} else if(integralUserRecords.size() == integralRule.getNumber()){//记录 == 规则数 代表已经完成
return true;
} else {
return false;
}
}
}
package com.xxfc.platform.activity.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
......@@ -10,7 +8,6 @@ import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.activity.entity.IntegralUserTotal;
import com.xxfc.platform.activity.mapper.IntegralUserTotalMapper;
import com.xxfc.platform.activity.user.UserInfoBiz;
import com.xxfc.platform.activity.vo.IntegralRuleDto;
import com.xxfc.platform.activity.vo.IntegralUserTotalDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -115,8 +112,13 @@ public class IntegralUserTotalBiz extends BaseBiz<IntegralUserTotalMapper, Integ
IntegralUserTotalDto integralUserTotalDto = new IntegralUserTotalDto();
integralUserTotalDto.setUserId(appUserDTO.getUserid());
List<IntegralUserTotal> oldValue = mapper.selectAllByParam(integralUserTotalDto);
return ObjectRestResponse.succ(oldValue == null || oldValue.size() <=0 ? null : oldValue.get(0));
if(oldValue == null || oldValue.size() <=0) {
IntegralUserTotal integralUserTotal = IntegralUserTotal.initIntegralUserTotal();
integralUserTotal.setUserId(appUserDTO.getUserid());
insertSelective(integralUserTotal);
return ObjectRestResponse.succ(integralUserTotal);
}
return ObjectRestResponse.succ(oldValue.get(0));
}
/**
......
......@@ -48,14 +48,33 @@ public class UserCouponBiz extends BaseBiz<UserCouponMapper, UserCoupon> {
return null;
}
Integer couponId=coupon.getId();
Example example=new Example(UserCoupon.class);
example.createCriteria().andEqualTo("userId",userId).andEqualTo("couponId",couponId);
List<UserCoupon> list=selectByExample(example);
if(list.size()>0){
boolean falg=checkUserLed(userId,couponId);
if(falg){
log.error(userId+"----已领优惠卷");
return null;
}
return led(coupon,userId);
}
//用户领劵
public String userLedCoupon(Integer userId,Integer couponId){
Coupon coupon=couponBiz.selectById(couponId);
if (coupon==null||coupon.getIsDel()!=0||coupon.getStatus()!=1){
log.error(userId+"----无可领取优惠卷");
return null;
}
boolean falg=checkUserLed(userId,couponId);
if(falg){
log.error(userId+"----已领优惠卷");
return null;
}
return led(coupon,userId);
}
//领取动作
public String led( Coupon coupon,Integer userId ){
int type=coupon.getValidType();
Integer couponId=coupon.getId();
Long expireTime=System.currentTimeMillis();
Long startTime=0L;
if(type==1){
......@@ -74,7 +93,18 @@ public class UserCouponBiz extends BaseBiz<UserCouponMapper, UserCoupon> {
userCoupon.setExpireTime(expireTime);
insertSelective(userCoupon);
return ticker_no;
}
//检查用户是否领卷
public boolean checkUserLed(Integer userId,Integer id){
Example example=new Example(UserCoupon.class);
example.createCriteria().andEqualTo("userId",userId).andEqualTo("couponId",id);
List<UserCoupon> list=selectByExample(example);
if(list.size()>0){
log.error(userId+"----已领优惠卷");
return true;
}
return false;
}
//获取我的优惠卷
......
package com.xxfc.platform.activity.config;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* rabbitmq配置类
* 包含: 不知道什么orderWater队列
* @author zhoujw
* @date 2019/7/15
*/
@Configuration
public class RabbitConfig {
public static final String HZ_EXC = "hz_exchange";
public static final String INTEGRAL_QUEUE = "integral_queue";
public static final String ORDER_WATER_KEY = "order";
// /**
// * 队列交换机
// * 注意这里的交换机类型:CustomExchange
// * @return
// */
// @Bean
// public DirectExchange directExchange(){
// return new DirectExchange(HZ_EXC, true, false);
// }
/**
* 队列
* @return
*/
@Bean
public Queue orderWaterQueue(){
return new Queue(INTEGRAL_QUEUE,true);
}
// /**
// * 队列绑定交换机
// * @return
// */
// @Bean
// public Binding orderWaterBinding(Queue orderWaterQueue, DirectExchange directExchange){
// return BindingBuilder.bind(orderWaterQueue).to(directExchange).with(ORDER_WATER_KEY);
// }
}
package com.xxfc.platform.activity.mapper;
import com.xxfc.platform.activity.entity.ActivityRule;
import tk.mybatis.mapper.common.Mapper;
/**
* 通用活动规则表
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-16 14:04:22
*/
public interface ActivityRuleMapper extends Mapper<ActivityRule> {
}
package com.xxfc.platform.activity.mapper;
import com.xxfc.platform.activity.entity.ActivityUserJoin;
import tk.mybatis.mapper.common.Mapper;
/**
* 用户活动参与表
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-16 14:04:22
*/
public interface ActivityUserJoinMapper extends Mapper<ActivityUserJoin> {
}
package com.xxfc.platform.activity.rest;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.activity.biz.ActivityRuleBiz;
import com.xxfc.platform.activity.entity.ActivityRule;
import com.xxfc.platform.activity.entity.ActivityUserJoin;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("rule")
public class ActivityRuleController extends BaseController<ActivityRuleBiz, ActivityRule> {
@ApiOperation("新人有礼参加活动")
@RequestMapping(value = "/app/unauth/H5", method = RequestMethod.GET)
public ObjectRestResponse H5(){ return baseBiz.getActivityH5(); }
}
\ No newline at end of file
package com.xxfc.platform.activity.rest;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.activity.biz.ActivityUserJoinBiz;
import com.xxfc.platform.activity.entity.ActivityUserJoin;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("join")
public class ActivityUserJoinController extends BaseController<ActivityUserJoinBiz,ActivityUserJoin> {
@ApiOperation("新人有礼参加活动")
@RequestMapping(value = "/user", method = RequestMethod.POST)
public ObjectRestResponse join(
@RequestParam(value = "userId",defaultValue ="0" ) Integer userId){
baseBiz.joinActivity(userId);
return ObjectRestResponse.succ();
}
}
\ No newline at end of file
......@@ -10,4 +10,6 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("coupon")
public class CouponController extends BaseController<CouponBiz, Coupon> {
}
\ No newline at end of file
......@@ -13,8 +13,6 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping(value = "integralRule")
@Api(value = "积分规则")
......@@ -44,7 +42,7 @@ public class IntegralRuleController {
@GetMapping(value = "/list")
@ApiOperation(value = "获取所有的规则")
public ObjectRestResponse<PageDataVO> getList(IntegralRuleDto integralRuleDto) {
return integralRuleBiz.getAll(integralRuleDto);
return integralRuleBiz.getList(integralRuleDto);
}
}
......@@ -3,9 +3,11 @@ package com.xxfc.platform.activity.rest;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.activity.biz.ActivityUserJoinBiz;
import com.xxfc.platform.activity.biz.UserCouponBiz;
import com.xxfc.platform.activity.vo.UserCouponVo;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
......@@ -13,6 +15,10 @@ import org.springframework.web.bind.annotation.*;
public class UserCouponController extends ActivityBaseController<UserCouponBiz> {
@Autowired
ActivityUserJoinBiz joinBiz;
@ApiOperation("用户自动领取新人卷")
@RequestMapping(value = "/auth/led", method = RequestMethod.POST)
public String led(@RequestParam(value = "userId",defaultValue = "0") Integer userId) {
......@@ -56,6 +62,18 @@ public class UserCouponController extends ActivityBaseController<UserCouponBiz>
return ObjectRestResponse.succ();
}
@ApiOperation("领取优惠卷")
@RequestMapping(value = "/coupon/led", method = RequestMethod.POST)
public ObjectRestResponse led() {
AppUserDTO userInfo = getUserInfo();
Integer userId = userInfo.getId();
if (userId == null) {
return ObjectRestResponse.createDefaultFail();
}
joinBiz.receiveCoupn(userId);
return ObjectRestResponse.succ();
}
}
\ No newline at end of file
<?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.xxfc.platform.activity.mapper.ActivityRuleMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.activity.entity.ActivityRule" id="activityRuleMap">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="descr" column="descr"/>
<result property="number" column="number"/>
<result property="joinNumber" column="join_number"/>
<result property="status" column="status"/>
<result property="value" column="value"/>
<result property="crtTime" column="crt_time"/>
<result property="updTime" column="upd_time"/>
<result property="isDel" column="is_del"/>
</resultMap>
</mapper>
\ No newline at end of file
<?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.xxfc.platform.activity.mapper.ActivityUserJoinMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.activity.entity.ActivityUserJoin" id="activityUserJoinMap">
<result property="id" column="id"/>
<result property="userId" column="user_id"/>
<result property="activityId" column="activity_id"/>
<result property="status" column="status"/>
<result property="crtTime" column="crt_time"/>
<result property="updTime" column="upd_time"/>
</resultMap>
</mapper>
\ No newline at end of file
......@@ -6,6 +6,7 @@
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform</artifactId>
<version>2.0-SNAPSHOT</version>
<relativePath>../../xx-common/xx-common-platform/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
......
......@@ -6,6 +6,7 @@
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform-web</artifactId>
<version>2.0-SNAPSHOT</version>
<relativePath>../../xx-common/xx-common-platform-web/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
......
......@@ -6,6 +6,7 @@
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform</artifactId>
<version>2.0-SNAPSHOT</version>
<relativePath>../../xx-common/xx-common-platform/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
......
......@@ -6,6 +6,7 @@
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform-web</artifactId>
<version>2.0-SNAPSHOT</version>
<relativePath>../../xx-common/xx-common-platform-web/pom.xml</relativePath>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -6,6 +6,7 @@
<artifactId>xx-common</artifactId>
<groupId>com.xxfc</groupId>
<version>2.0-SNAPSHOT</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -6,6 +6,7 @@
<artifactId>xx-common-platform</artifactId>
<groupId>com.xxfc.common</groupId>
<version>2.0-SNAPSHOT</version>
<relativePath>../xx-common-platform/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xx-common-platform-web</artifactId>
......
......@@ -6,6 +6,7 @@
<artifactId>ace-security</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xx-common-platform</artifactId>
......
......@@ -6,6 +6,7 @@
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform</artifactId>
<version>2.0-SNAPSHOT</version>
<relativePath>../../xx-common/xx-common-platform/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
......@@ -16,5 +17,47 @@
<artifactId>ace-admin-api</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<!--引入开源后台项目的公共包-->
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-auth-client</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<!-- 自己项目 -->
<!--mongodb-->
<dependency>
<groupId>org.mongodb.morphia</groupId>
<artifactId>morphia</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>7.1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.1.14</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.xxfc.platform.im.dto;
import com.xxfc.platform.im.model.Comment;
import lombok.Data;
@Data
public class CommentVo extends Comment {
private String picUrl;
}
package com.xxfc.platform.im.dto;
import com.xxfc.platform.im.model.Praise;
import lombok.Data;
@Data
public class PraiseVo extends Praise {
private String picUrl;
}
......@@ -51,5 +51,21 @@ public class ImComment {
@Column(name = "is_del")
private Boolean isDel = false;
private String nickname;
private String picUrl;
/**
* 创建时间
*/
@Column(name = "crt_time")
private Long crtTime;
/**
* 更新时间
*/
@Column(name = "upd_time")
private Long updTime;
}
\ No newline at end of file
......@@ -43,4 +43,19 @@ public class ImPraise {
@Column(name = "is_del")
private Boolean isDel = false;
private String nickname;
private String picUrl;
/**
* 创建时间
*/
@Column(name = "crt_time")
private Long crtTime;
/**
* 更新时间
*/
@Column(name = "upd_time")
private Long updTime;
}
\ No newline at end of file
......@@ -55,6 +55,17 @@ public class ImQuestion {
@Column(name = "is_del")
private Boolean isDel = false;
/**
* 创建时间
*/
@Column(name = "crt_time")
private Long crtTime;
/**
* 更新时间
*/
@Column(name = "upd_time")
private Long updTime;
/**
* 内容
*/
......@@ -64,4 +75,8 @@ public class ImQuestion {
private Integer praiseCount;
private String nickname;
private String picUrl;
}
\ No newline at end of file
......@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;
import com.aliyun.oss.ServiceException;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.xxfc.platform.im.dto.CommentVo;
import com.xxfc.platform.im.dto.PraiseVo;
import com.xxfc.platform.im.utils.DateUtil;
import com.xxfc.platform.im.utils.StringUtil;
import org.bson.types.ObjectId;
......@@ -34,15 +36,15 @@ public class Msg {
private Long time;// 发朋友圈消息时间
private Integer userId;// 发消息用户Id
private String lable;// 标签(目前用于短视频标签)
private String pic; //头像
private Integer visible=1; //是否可见(1:公开,2:私密,3:部分可见选中的朋友的可见,4:不给谁看,5:@谁看)
private List<Integer> userLook;//选中可见的朋友列表
private List<Integer> userNotLook;//选中不可见的朋友列表
private List<Integer> userRemindLook;//@提醒朋友列表
private @Reference List<Comment> comments;// 评论列表
private @Reference List<CommentVo> comments;// 评论列表
private @Reference List<Givegift> gifts;// 礼物列表
private @Reference List<Praise> praises;// 赞列表
private @Reference List<PraiseVo> praises;// 赞列表
private @Transient int isPraise;// 请求接口人是否赞过本条消息 0:未点赞 1:已点赞
private @Transient int isCollect;// 请求接口人是否收藏本条消息 0:未收藏过 1:已收藏
private int state;// 是否被锁定 0:正常 1:锁定
......@@ -97,7 +99,7 @@ public class Msg {
return model;
}
public ObjectId getMsgId() {
public ObjectId getId() {
return id;
}
......@@ -153,8 +155,8 @@ public class Msg {
this.model = model;
}
public void setMsgId(ObjectId msgId) {
this.id = msgId;
public void setId(ObjectId id) {
this.id = id;
}
public void setNickname(String nickname) {
......@@ -197,11 +199,11 @@ public class Msg {
this.userRemindLook = userRemindLook;
}
public List<Comment> getComments() {
public List<CommentVo> getComments() {
return comments;
}
public void setComments(List<Comment> comments) {
public void setComments(List<CommentVo> comments) {
this.comments = comments;
}
......@@ -213,11 +215,11 @@ public class Msg {
this.gifts = gifts;
}
public List<Praise> getPraises() {
public List<PraiseVo> getPraises() {
return praises;
}
public void setPraises(List<Praise> praises) {
public void setPraises(List<PraiseVo> praises) {
this.praises = praises;
}
......
package com.xxfc.platform.im.utils;
import com.mongodb.DBObject;
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
......
package com.xxfc.platform.im.vo;
import com.xxfc.platform.im.model.Msg;
import lombok.Data;
@Data
public class MsgVo extends Msg {
private String picUrl;
private String address;
private String msgId;
}
package com.xxfc.platform.im.vo;
import com.xxfc.platform.im.entity.ImComment;
import com.xxfc.platform.im.entity.ImPraise;
import com.xxfc.platform.im.entity.ImQuestion;
import com.xxfc.platform.im.entity.ImComment;
import lombok.Data;
import java.util.List;
......
......@@ -6,6 +6,7 @@
<artifactId>xx-common-platform-web</artifactId>
<groupId>com.xxfc.common</groupId>
<version>2.0-SNAPSHOT</version>
<relativePath>../../xx-common/xx-common-platform-web/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
......@@ -19,7 +20,7 @@
<targetJavaProject>${basedir}/src/main/java</targetJavaProject>
<targetMapperPackage>com.xxfc.platform.im.mapper
</targetMapperPackage>
<targetModelPackage>com.xxfc.platform.im.entity
<targetModelPackage>com.xxfc.platform.im.feign.entity
</targetModelPackage>
<!-- XML生成路径 -->
<targetResourcesProject>${basedir}/src/main/resources
......@@ -33,47 +34,12 @@
</properties>
<dependencies>
<!--引入开源后台项目的公共包-->
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-auth-client</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<!-- 自己项目 -->
<dependency>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-im-api</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<!--mongodb-->
<dependency>
<groupId>org.mongodb.morphia</groupId>
<artifactId>morphia</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>7.1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.1.14</version>
</dependency>
</dependencies>
<build>
<plugins>
......
......@@ -33,15 +33,16 @@ public class ImCommentBiz extends BaseBiz<ImCommentMapper, ImComment> {
return ObjectRestResponse.createFailedResult(508, "token is null or invalid");
}
imComment.setUserId(Long.parseLong(appUserDTO.getImUserid() + ""));
imComment.setNickname(appUserDTO.getNickname());
imComment.setPicUrl(appUserDTO.getHeadimgurl());
if (imComment == null || imComment.getQuestionId() == null) {
return ObjectRestResponse.paramIsEmpty();
}
ImQuestion imQuestion = imQuestionBiz.selectById(imComment.getQuestionId());
if (imQuestion == null) {
return ObjectRestResponse.createDefaultFail();
}
mapper.insert(imComment);
insertSelective(imComment);
//修改评论数
imQuestionBiz.update(imComment.getQuestionId(), MsgTypeEnum.comment, UpdateTypeEnum.add);
return ObjectRestResponse.succ();
......@@ -66,7 +67,7 @@ public class ImCommentBiz extends BaseBiz<ImCommentMapper, ImComment> {
return ObjectRestResponse.createDefaultFail();
}
oldValue.setIsDel(true);
mapper.updateByPrimaryKeySelective(oldValue);
updateSelectiveByIdRe(oldValue);
imQuestionBiz.update(oldValue.getQuestionId(), MsgTypeEnum.comment, UpdateTypeEnum.subtraction);
return ObjectRestResponse.succ();
}
......
......@@ -36,6 +36,8 @@ public class ImPraiseBiz extends BaseBiz<ImPraiseMapper, ImPraise> {
return ObjectRestResponse.createFailedResult(508, "token is null or invalid");
}
imPraiseDto.setUserId(Long.parseLong(appUserDTO.getImUserid() + ""));
imPraiseDto.setNickname(appUserDTO.getNickname());
imPraiseDto.setPicUrl(appUserDTO.getHeadimgurl());
if(imPraiseDto == null || imPraiseDto.getQuestionId() == null) {
return ObjectRestResponse.paramIsEmpty();
}
......@@ -47,7 +49,7 @@ public class ImPraiseBiz extends BaseBiz<ImPraiseMapper, ImPraise> {
if(list.size() >= 1) {
return ObjectRestResponse.createFailedResult(504,"今日已点赞,请明日再点!");
}
mapper.insert(imPraiseDto);
insertSelective(imPraiseDto);
imQuestionBiz.update(imPraiseDto.getQuestionId(), MsgTypeEnum.praise, UpdateTypeEnum.add);
return ObjectRestResponse.succ();
}
......@@ -68,7 +70,7 @@ public class ImPraiseBiz extends BaseBiz<ImPraiseMapper, ImPraise> {
List<ImPraise> list = getImPraiseList(imPraiseDto);
if(list.size() == 1) {
list.get(0).setIsDel(true);
mapper.updateByPrimaryKey(list.get(0));
updateSelectiveByIdRe(list.get(0));
imQuestionBiz.update(list.get(0).getQuestionId(), MsgTypeEnum.praise, UpdateTypeEnum.subtraction);
}
return ObjectRestResponse.succ();
......
......@@ -38,6 +38,13 @@ public class ImQuestionBiz extends BaseBiz<ImQuestionMapper, ImQuestion> {
return new ObjectRestResponse<>().data(pageDataVO);
}
public ObjectRestResponse one(Integer id) {
return ObjectRestResponse.succ(mapper.getOne(id));
}
/**
* 添加问题
*
......@@ -50,10 +57,12 @@ public class ImQuestionBiz extends BaseBiz<ImQuestionMapper, ImQuestion> {
return ObjectRestResponse.createFailedResult(508, "token is null or invalid");
}
imQuestion.setUserId(Long.parseLong(appUserDTO.getImUserid() + ""));
imQuestion.setNickname(appUserDTO.getNickname());
imQuestion.setPicUrl(appUserDTO.getHeadimgurl());
if (imQuestion == null) {
return ObjectRestResponse.paramIsEmpty();
}
mapper.insertSelective(imQuestion);
insertSelective(imQuestion);
return ObjectRestResponse.succ();
}
......@@ -76,7 +85,7 @@ public class ImQuestionBiz extends BaseBiz<ImQuestionMapper, ImQuestion> {
return ObjectRestResponse.createDefaultFail();
}
imQuestion.setIsDel(true);
mapper.updateByPrimaryKeySelective(imQuestion);
updateSelectiveByIdRe(imQuestion);
return ObjectRestResponse.succ();
}
......@@ -108,7 +117,7 @@ public class ImQuestionBiz extends BaseBiz<ImQuestionMapper, ImQuestion> {
}
}
}
mapper.updateByPrimaryKeySelective(imQuestion);
updateSelectiveByIdRe(imQuestion);
return ObjectRestResponse.succ();
}
......
package com.xxfc.platform.im.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.im.dto.CommentVo;
import com.xxfc.platform.im.dto.PraiseVo;
import com.xxfc.platform.im.model.Comment;
import com.xxfc.platform.im.model.Msg;
import com.xxfc.platform.im.model.Praise;
import com.xxfc.platform.im.utils.AddressUtils;
import com.xxfc.platform.im.vo.MsgVo;
import lombok.extern.slf4j.Slf4j;
import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Component
@Service
@Slf4j
public class MsgBiz {
@Autowired
......@@ -31,42 +38,70 @@ public class MsgBiz {
/**
* 获取消息列表
*
* @param map
* @return
* @throws Exception
*/
public ObjectRestResponse getMsgList(Map<String, Object> map) throws Exception {
public ObjectRestResponse getMsgList(Integer page, Integer limit, Integer type) throws Exception {
//获取所有朋友圈
AppUserDTO appUserDTO = userBiz.getUserInfo();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(508, "token is null or invalid");
}
Integer page = map.get("page") == null ? 1 : Integer.parseInt(map.get("page").toString());
Integer limit = map.get("limit") == null ? 10 : Integer.parseInt(map.get("limit").toString());
log.info("获取消息列表: page = {}, limit = {}, type = {}", page, limit, type);
page = page == null ? 1 : page;
limit = limit == null ? 10 : limit;
PageHelper.startPage(page, limit);
Query query = null;
List<Msg> msgList = null;
if (map.get("type") != null) {
query = new Query(Criteria.where("body.type").is(Integer.parseInt(map.get("type").toString())));
if (type != null) {
query = new Query(Criteria.where("body.type").is(type));
msgList = fetchAndAttach(mongoTemplate.find(query, Msg.class, "s_msg"), appUserDTO.getImUserid());
PageInfo<MsgVo> goodPageInfo = new PageInfo<>(replaceMsgResult(msgList));
return ObjectRestResponse.succ(goodPageInfo);
} else {
msgList = fetchAndAttach(mongoTemplate.findAll(Msg.class, "s_msg"), appUserDTO.getImUserid());
List<Integer> ids = new ArrayList<>();
ids.add(2);
ids.add(4);
query = new Query(Criteria.where("body.type").in(ids));
msgList = fetchAndAttach(mongoTemplate.find(query, Msg.class, "s_msg"), appUserDTO.getImUserid());
PageInfo<MsgVo> goodPageInfo = new PageInfo<>(replaceMsgResult(msgList));
return ObjectRestResponse.succ(goodPageInfo);
}
PageInfo<Msg> goodPageInfo = new PageInfo<>(msgList);
return ObjectRestResponse.succ(goodPageInfo);
}
public ObjectRestResponse getHotMsgList(Map<String, Object> param) {
Integer page = param.get("page") == null ? 1 : Integer.parseInt(param.get("page").toString());
Integer limit = param.get("limit") == null ? 10 : Integer.parseInt(param.get("limit").toString());
public ObjectRestResponse getHotMsgList(Integer page, Integer limit) {
log.info("获取消息列表: page = {}, limit = {}, type = {}", page, limit);
page = page == null ? 1 : page;
limit = limit == null ? 10 : limit;
PageHelper.startPage(page, limit);
Query query = new Query();
List<Integer> ids = new ArrayList<>();
ids.add(2);
ids.add(4);
Query query = new Query(Criteria.where("body.type").in(ids));
query.with(new Sort(Sort.Direction.DESC, "count.praise"));
List<Msg> msgList = mongoTemplate.find(query, Msg.class, "s_msg");
PageInfo<Msg> goodPageInfo = new PageInfo<>(msgList);
PageInfo<MsgVo> goodPageInfo = new PageInfo<>(replaceMsgResult(msgList));
return ObjectRestResponse.succ(goodPageInfo);
}
public ObjectRestResponse get(String id){
//获取所有朋友圈
AppUserDTO appUserDTO = userBiz.getUserInfo();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(508, "token is null or invalid");
}
if(id == null) {
return ObjectRestResponse.paramIsEmpty();
}
Query query = new Query(Criteria.where("id").is(new ObjectId(id)));
List<Msg> msgList = fetchAndAttach(mongoTemplate.find(query, Msg.class, "s_msg"), appUserDTO.getImUserid());
List<MsgVo> msgVoList = replaceMsgResult(msgList);
if(msgVoList.size() > 0) {
return ObjectRestResponse.succ(msgVoList.get(0));
}
return ObjectRestResponse.succ();
}
/**
* 添加评论和点赞
......@@ -81,16 +116,16 @@ public class MsgBiz {
}
for (Msg msg : list) {
//添加评论
Query query = new Query(Criteria.where("msgId").is(msg.getMsgId()));
Query query = new Query(Criteria.where("msgId").is(msg.getId()));
List<Comment> comments = mongoTemplate.find(query, Comment.class, "s_comment");
msg.setComments(comments);
msg.setComments(replaceCommentResult(comments));
//添加点赞
List<Praise> praise = mongoTemplate.find(query, Praise.class, "s_praise");
msg.setPraises(praise);
msg.setPraises(replacePraiseResult(praise));
msg.setIsPraise(this.exists(userId, msg.getMsgId()) ? 1 : 0);
msg.setIsCollect(this.existsCollect(userId, msg.getMsgId()) ? 1 : 0);
msg.setIsPraise(this.exists(userId, msg.getId()) ? 1 : 0);
msg.setIsCollect(this.existsCollect(userId, msg.getId()) ? 1 : 0);
}
return list;
}
......@@ -120,4 +155,47 @@ public class MsgBiz {
List<Comment> comments = mongoTemplate.find(query, Comment.class, "s_comment");
return 0 != comments.size();
}
public List<MsgVo> replaceMsgResult(List<Msg> list) {
List<MsgVo> msgVoList = new ArrayList<>();
for(Msg msg : list) {
MsgVo msgVo = new MsgVo();
BeanUtil.copyProperties(msg, msgVo, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
//添加用户昵称和头像
msgVo.setNickname("李晓雨");
msgVo.setPicUrl("https://xxfcim.upyuns.com/image/u/2/10000002/201905/o/75ca94441f084d44822bb21c6247a7a1.png");
String address = AddressUtils.getMapaddress(msg.getLatitude().toString(), msg.getLongitude().toString());
msgVo.setAddress(address);
msgVo.setMsgId(msg.getId().toString());
msgVoList.add(msgVo);
}
return msgVoList;
}
public List<PraiseVo> replacePraiseResult(List<Praise> list) {
List<PraiseVo> praiseVoArrayList = new ArrayList<>();
for(Praise praise : list) {
PraiseVo praiseVo = new PraiseVo();
BeanUtil.copyProperties(praise, praiseVo, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
//添加用户昵称和头像
praiseVo.setNickname("李晓雨");
praiseVo.setPicUrl("https://xxfcim.upyuns.com/image/u/2/10000002/201905/o/75ca94441f084d44822bb21c6247a7a1.png");
praiseVoArrayList.add(praiseVo);
}
return praiseVoArrayList;
}
public List<CommentVo> replaceCommentResult(List<Comment> list) {
List<CommentVo> commentVoList = new ArrayList<>();
for(Comment comment : list) {
CommentVo commentVo = new CommentVo();
BeanUtil.copyProperties(comment, commentVo, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
//添加用户昵称和头像
commentVo.setNickname("李晓雨");
commentVo.setPicUrl("https://xxfcim.upyuns.com/image/u/2/10000002/201905/o/75ca94441f084d44822bb21c6247a7a1.png");
commentVoList.add(commentVo);
}
return commentVoList;
}
}
......@@ -10,5 +10,5 @@ import java.util.Map;
public interface ImQuestionMapper extends Mapper<ImQuestion> {
List<QuestionListVo> getQuestionList(Map<String, Object> param);
QuestionListVo getOne(Integer id);
}
\ No newline at end of file
......@@ -6,10 +6,7 @@ import com.xxfc.platform.im.entity.ImComment;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = "imComment")
......@@ -21,7 +18,7 @@ public class ImCommentController {
@PostMapping(value = "/add")
@ApiOperation(value = "添加评论")
public ObjectRestResponse add(ImComment imComment) {
public ObjectRestResponse add(@RequestBody ImComment imComment) {
return imCommentBiz.add(imComment);
}
......
......@@ -6,10 +6,7 @@ import com.xxfc.platform.im.dto.ImPraiseDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = "imPraise")
......@@ -21,7 +18,7 @@ public class ImPraiseController {
@PostMapping(value = "/add")
@ApiOperation(value = "添加点赞")
public ObjectRestResponse add(ImPraiseDto imPraise) {
public ObjectRestResponse add(@RequestBody ImPraiseDto imPraise) {
return imPraiseBiz.add(imPraise);
}
......
......@@ -8,10 +8,7 @@ import com.xxfc.platform.im.vo.QuestionListVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
......@@ -28,10 +25,14 @@ public class ImQuestionController {
public ObjectRestResponse<List<QuestionListVo>> getList(QuestionParamDto questionParamDto) {
return imQuestionBiz.getList(questionParamDto);
}
@GetMapping(value = "/one")
@ApiOperation(value = "获取问答列表信息")
public ObjectRestResponse<ImQuestion> one(Integer id) {
return imQuestionBiz.one(id);
}
@PostMapping(value = "/add")
@ApiOperation(value = "添加问答信息")
public ObjectRestResponse add(ImQuestion imQuestion) {
public ObjectRestResponse add(@RequestBody ImQuestion imQuestion) {
return imQuestionBiz.add(imQuestion);
}
......
package com.xxfc.platform.im.rest;
import com.alibaba.fastjson.JSONArray;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.mongodb.DBCursor;
import com.xxfc.platform.im.biz.MsgBiz;
import com.xxfc.platform.im.biz.UserBiz;
import com.xxfc.platform.im.model.Msg;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("msg")
......@@ -19,12 +16,19 @@ public class MsgController {
private MsgBiz msgBiz;
@PostMapping(value = "/app/unauth/list")
public ObjectRestResponse getMsgList(@RequestBody Map<String,Object> map)throws Exception{
return msgBiz.getMsgList(map);
public ObjectRestResponse getMsgList(Integer page, Integer limit, Integer type)throws Exception{
return msgBiz.getMsgList(page, limit, type);
}
@PostMapping(value = "/hotMsg/list")
public ObjectRestResponse getHotMsgList(Map<String, Object> map) {
return msgBiz.getHotMsgList(map);
public ObjectRestResponse getHotMsgList(Integer page, Integer limit) {
return msgBiz.getHotMsgList(page, limit);
}
@GetMapping(value = "/get")
public ObjectRestResponse get(String id) {
return msgBiz.get(id);
}
}
......@@ -17,6 +17,7 @@
</resultMap>
<resultMap id="listResultMap" type="com.xxfc.platform.im.vo.QuestionListVo">
<id column="id" jdbcType="BIGINT" property="id"/>
<collection property="imComment" column="id"
select="com.xxfc.platform.im.mapper.ImCommentMapper.selectByQuestionId"
ofType="com.xxfc.platform.im.entity.ImComment">
......@@ -42,7 +43,12 @@
and is_del = #{isDel}
</if>
</where>
order by praise_count, comment_count DESC
order by upd_time DESC
</select>
<select id="getOne" parameterType="java.lang.Integer" resultMap="listResultMap">
select * from im_question
where id = #{id}
</select>
</mapper>
\ No newline at end of file
......@@ -7,7 +7,7 @@ import java.math.BigDecimal;
@Table(name = "order_vehicle_crosstown")
@Data
public class OrderVehicaleCrosstown {
public class OrderVehicleCrosstown {
/**
* 主键id
*/
......
package com.xxfc.platform.order.pojo.order;
import com.xxfc.platform.order.entity.OrderVehicaleCrosstown;
import com.xxfc.platform.order.entity.OrderVehicleCrosstown;
import lombok.Data;
@Data
public class OrderVehicleCrosstownDto extends OrderVehicaleCrosstown {
public class OrderVehicleCrosstownDto extends OrderVehicleCrosstown {
String userLicenses;
/**
* 驾驶人
......@@ -25,4 +25,6 @@ public class OrderVehicleCrosstownDto extends OrderVehicaleCrosstown {
* 驾驶人身份证号
*/
private String licenseIdCard;
private String vehicleNumberPlat;
}
package com.xxfc.platform.order.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
......@@ -25,6 +24,7 @@ import com.xxfc.platform.universal.dto.SmsTemplateDTO;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.universal.vo.OrderRefundVo;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleUserLicense;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import lombok.extern.slf4j.Slf4j;
......@@ -125,6 +125,11 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
if(orderPageVo.getStatus() == 4) { //未交车
List<VehicleUserLicense> vehicleUserLicenses = Lists.newArrayList();
boolean flag = getTodyTime(orderPageVo.getOrderRentVehicleDetail().getStartTime());
if(!flag) {
return ObjectRestResponse.createFailedResult(3501, "今日不是交车日期");
}
String myDriverIds = orderPageVo.getOrderRentVehicleDetail().getMyDriverIds();
if(StringUtils.isNotBlank(myDriverIds)) {
if(myDriverIds.contains(",")) {
......@@ -152,9 +157,9 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
OrderVehicleCrosstownDto orderVehicleCrosstownDto = new OrderVehicleCrosstownDto();
orderVehicleCrosstownDto.setOrderId(orderPageVo.getId());
orderVehicleCrosstownDto.setOrderNo(orderPageVo.getNo());
List<OrderVehicaleCrosstown> orderVehicaleCrosstowns = orderVehicalCrosstownBiz.selectByOrderId(orderVehicleCrosstownDto);
if(orderVehicaleCrosstowns != null && orderVehicaleCrosstowns.size() > 0) {
List<OrderUserLicense> orderUserLicenses = orderUserLicenseBiz.selectByIds(orderVehicaleCrosstowns.get(0).getUserLicenseId()).getData();
List<OrderVehicleCrosstown> orderVehicleCrosstowns = orderVehicalCrosstownBiz.selectByOrderId(orderVehicleCrosstownDto);
if(orderVehicleCrosstowns != null && orderVehicleCrosstowns.size() > 0) {
List<OrderUserLicense> orderUserLicenses = orderUserLicenseBiz.selectByIds(orderVehicleCrosstowns.get(0).getUserLicenseId()).getData();
if(orderUserLicenses != null && orderUserLicenses.size() > 0) {
orderVehicleCrosstownDto.setLicenseIdCard(orderUserLicenses.get(0).getLicenseIdCard());
orderVehicleCrosstownDto.setLicenseImg(orderUserLicenses.get(0).getLicenseImg());
......@@ -165,7 +170,10 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
}
orderPageVo.setOrderVehicleCrosstownDto(orderVehicleCrosstownDto);
}
RestResponse<Vehicle> restResponse = vehicleFeign.findById(orderPageVo.getOrderRentVehicleDetail().getVehicleId());
if(restResponse.getData() != null) {
orderPageVo.setVehicalNumberPlat(restResponse.getData().getNumberPlate());
}
return ObjectRestResponse.succ(orderPageVo);
}
......@@ -504,4 +512,19 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
throw new BaseException(ResultCode.DB_OPERATION_FAIL_CODE);
}
}
public boolean getTodyTime(Long time) {
Long startTime = getDayStart();
if(time > startTime && time < startTime + 24 * 60 * 60 * 1000 - 1) {
return true;
}
return false;
}
public static Long getDayStart() {
long current = System.currentTimeMillis();
long zero = current/(1000*3600*24)*(1000*3600*24) - TimeZone.getDefault().getRawOffset();
return zero;
}
}
\ No newline at end of file
......@@ -16,6 +16,7 @@ import com.xxfc.platform.vehicle.entity.BranchCompany;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.Instant;
import java.util.List;
/**
......@@ -49,6 +50,13 @@ public class OrderTourVerificationBiz{
return PageDataVO.pageInfo(page,limit,()->verificationMapper.pageByParm(verificationId));
}
/**
*
* @param no 订单号
* @param list 分公司列表
* @param userDTO
* @return
*/
//核销
public ObjectRestResponse VerificationByOrder(String no, List<BranchCompany> list, UserDTO userDTO){
BaseOrder baseOrder=new BaseOrder();
......@@ -79,6 +87,17 @@ public class OrderTourVerificationBiz{
}
}
}
// 出发时间 是否已经发车
Long departureTime = tourFeign.selectDepartureTimeByStartCompanyIdAndRouteId(tourDetail.getStartCompanyId(),tourDetail.getGoodId());
if (Instant.now().toEpochMilli()<departureTime){
return ObjectRestResponse.createFailedResultWithObj(400,"还未到发车时间",0);
}
Integer departureStatus = tourFeign.selectDepartureStatusByVerificationId(verificationId);
if (departureStatus==1){
return ObjectRestResponse.createFailedResultWithObj(400,"已经发车",1);
}
baseOrder=new BaseOrder();
baseOrder.setId(orderId);
baseOrder.setStatus(OrderStatusEnum.ORDER_FINISH.getCode());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment