first commit

This commit is contained in:
Ray
2026-02-19 03:37:37 +08:00
commit ccfd8c79a4
2813 changed files with 453657 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
Manifest-Version: 1.0
Class-Path:

View File

@@ -0,0 +1,22 @@
package project.invest;
public class InvestRedisKeys {
/**
* 会员锁key
*/
public final static String INVEST_ORDER_USER_LOCK = "INVEST_ORDER_USER_LOCK:";
/**
* 项目多语言
*/
public final static String INVEST_PROJECT_LANG = "INVEST_PROJECT_LANG:";
/**
* 商品多语言
*/
public final static String INVEST_GOODS_LANG = "INVEST_GOODS_LANG:";
}

View File

@@ -0,0 +1,17 @@
package project.invest;
public enum LanguageEnum {
EN( "en"),//英文
CN( "cn"),//中文
TW( "tw"),//繁体
;
private String lang;
LanguageEnum(String lang) {
this.lang = lang;
}
public String getLang() {
return lang;
}
}

View File

@@ -0,0 +1,17 @@
package project.invest.expert;
import kernel.web.Page;
import project.invest.expert.model.Expert;
public interface AdminExpertService {
Page pagedQuery(int pageNo, int pageSize, String title, String lang, String startTime, String endTime, Integer status);
void save(Expert expert);
Expert findById(String id);
void update(Expert expert);
void delete(Expert expert);
}

View File

@@ -0,0 +1,79 @@
package project.invest.expert.impl;
import kernel.util.DateUtils;
import kernel.web.Page;
import kernel.web.PagedQueryDao;
import org.apache.commons.lang3.StringUtils;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import project.invest.expert.AdminExpertService;
import project.invest.expert.model.Expert;
import java.util.HashMap;
import java.util.Map;
public class AdminExpertServiceImpl extends HibernateDaoSupport implements AdminExpertService {
private PagedQueryDao pagedQueryDao;
@Override
public Page pagedQuery(int pageNo, int pageSize, String name, String lang, String startTime, String endTime, Integer status) {
StringBuffer queryString = new StringBuffer(
" SELECT UUID id, NAME name, CONTENT content, Lang lang, ICON_IMG iconImg, "
+ " CREATE_TIME createTime, SORT sort, STATUS status, SUMMARY summary ");
queryString.append(
" FROM T_INVEST_EXPERT WHERE 1 = 1 ");
Map<String, Object> parameters = new HashMap();
if (StringUtils.isNotEmpty(lang)) {
queryString.append(" AND LANG =:lang ");
parameters.put("lang", lang);
}
if (StringUtils.isNotEmpty(name)) {
queryString.append(" AND NAME like:name ");
parameters.put("name", "%" + name + "%");
}
if (-2 != status) {
queryString.append(" and STATUS =:status");
parameters.put("status", status);
}
if (!kernel.util.StringUtils.isNullOrEmpty(startTime)) {
queryString.append(" AND DATE(CREATE_TIME) >= DATE(:startTime) ");
parameters.put("startTime", DateUtils.toDate(startTime));
}
if (!kernel.util.StringUtils.isNullOrEmpty(endTime)) {
queryString.append(" AND DATE(CREATE_TIME) <= DATE(:endTime) ");
parameters.put("endTime", DateUtils.toDate(endTime));
}
queryString.append(" order by CREATE_TIME desc ");
Page page = this.pagedQueryDao.pagedQuerySQL(pageNo, pageSize, queryString.toString(), parameters);
return page;
}
@Override
public void save(Expert expert) {
this.getHibernateTemplate().save(expert);
}
@Override
public Expert findById(String id) {
return getHibernateTemplate().get(Expert.class, id);
}
@Override
public void update(Expert expert) {
this.getHibernateTemplate().update(expert);
}
@Override
public void delete(Expert expert) {
this.getHibernateTemplate().delete(expert);
}
public void setPagedQueryDao(PagedQueryDao pagedQueryDao) {
this.pagedQueryDao = pagedQueryDao;
}
}

View File

@@ -0,0 +1,35 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="project.invest.expert.model.Expert" table="T_INVEST_EXPERT">
<id name="id" type="java.lang.String">
<column name="UUID" />
<generator class="uuid.hex" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="content" type="java.lang.String">
<column name="CONTENT" />
</property>
<property name="summary" type="java.lang.String">
<column name="SUMMARY" />
</property>
<property name="lang" type="java.lang.String">
<column name="LANG" />
</property>
<property name="sort" type="int">
<column name="SORT" />
</property>
<property name="iconImg" type="java.lang.String">
<column name="ICON_IMG" />
</property>
<property name="createTime" type="timestamp">
<column name="CREATE_TIME" />
</property>
<property name="status" type="int">
<column name="STATUS" />
</property>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,54 @@
package project.invest.expert.model;
import kernel.bo.EntityObject;
import lombok.Data;
import java.util.Date;
/**
* 专家管理
*/
@Data
public class Expert extends EntityObject {
private static final long serialVersionUID = -4670490376092518726L;
/**
* 昵称
*/
private String name;
/**
* 个人介绍
*/
private String content;
/**
* 简介
*/
private String summary;
/**
* 语言
*/
private String lang;
/**
* 图片
*/
private String iconImg;
/**
* 序号
*/
private Integer sort;
/**
* 创建时间
*/
private Date createTime;
/**
* 状态值
*/
private Integer status;
}

View File

@@ -0,0 +1,39 @@
package project.invest.goods;
import kernel.web.Page;
import project.invest.goods.model.GoodsBuy;
public interface AdminGoodsBuyService {
Page pagedQuery(int pageNo, int pageSize, String id, String userCode, String userName, String phone, Integer status, String startTime, String endTime);
/**
* 发货或取消
* @param id
* @param type
* @param remark
*/
void updateStatus(String id, String type, String remark);
/**
* 根据id查询
* @param id
* @return
*/
GoodsBuy findGoodsBuyById(String id);
/**
* 余额兑换记录
* @param pageNo
* @param pageSize
* @param id
* @param userCode
* @param userName
* @param phone
* @param status
* @param startTime
* @param endTime
* @return
*/
Page pagedQueryExchange(int pageNo, int pageSize, String id, String userCode, String userName, String phone, String startTime, String endTime);
}

View File

@@ -0,0 +1,64 @@
package project.invest.goods;
import kernel.web.Page;
import project.invest.goods.model.Goods;
import project.invest.goods.model.GoodsLang;
import java.util.List;
public interface AdminGoodsService {
/**
* 分页查询
* @param pageNo
* @param pageSize
* @param name
* @param status
* @param startTime
* @param endTime
* @return
*/
Page pagedQuery(int pageNo, int pageSize, String name, Integer status, String startTime, String endTime);
/**
* 新增
* @param name
*/
void save(String name);
/**
* 根据id查询
* @param id
* @return
*/
Goods findById(String id);
/**
* 根据goodsId与语言查找
* @param GoodsId
* @param lang
* @return
*/
List<GoodsLang> findLanByGoodsId(String GoodsId, String lang);
void delete(String id,List<GoodsLang> goodsLangs);
/**
* 更新
* @param name
* @param iconImg
* @param prize
* @param goodsId
* @param goodsLanId
* @param status
* @param des
* @param lang
* @param sort
* @param total
* @param lastAmount
*/
void update(String name, String iconImg, String prize, String goodsId, String goodsLanId, String status, String des, String lang, String sort, String total, String lastAmount);
}

View File

@@ -0,0 +1,40 @@
package project.invest.goods;
import project.invest.goods.model.Goods;
import project.invest.goods.model.GoodsBuy;
import project.invest.goods.model.PointExchange;
import project.invest.goods.model.Useraddress;
import java.util.List;
public interface GoodsService {
List<Goods> listGoodsSell( int pageNum, int pageSize);
List<GoodsBuy> listGoodsBuy(String partyId, int pageNum, int pageSize);
GoodsBuy findGoodsBuyById(String id);
List<PointExchange> listPointExchange(String partyId, int pageNum, int pageSize);
PointExchange findPointExchangeById(String id);
Goods findById(String goodsId);
void updateBuyGoods(String partyId,String goodsId,int amount,String phone,String contacts,String address);
void updateExchangeUsdt(String partyId,String goodsId,int amount,long scale);
void saveAddress(String partyId,int use,String phone,String contacts,String address);
void updateAddress(String id,String partyId,int use,String phone,String contacts,String address);
void removeAddress(String id);
List<Useraddress> listAddress(String partyId);
List<Useraddress> getAddressUse(String partyId);
}

View File

@@ -0,0 +1,149 @@
package project.invest.goods.impl;
import kernel.util.DateUtils;
import kernel.util.StringUtils;
import kernel.web.Page;
import kernel.web.PagedQueryDao;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import project.invest.goods.AdminGoodsBuyService;
import project.invest.goods.model.GoodsBuy;
import project.invest.project.model.InvestOrders;
import java.util.HashMap;
import java.util.Map;
public class AdminGoodsBuyServiceImpl extends HibernateDaoSupport implements AdminGoodsBuyService {
private PagedQueryDao pagedQueryDao;
@Override
public Page pagedQuery(int pageNo, int pageSize, String id, String userCode, String userName, String phone, Integer status, String startTime, String endTime) {
Map<String, Object> parameters = new HashMap<>();
StringBuffer queryString = new StringBuffer(" SELECT ");
queryString.append(" b.UUID id, b.NUM num, b.PAY_POINT payPoint, b.STATUS status, b.PHONE phone, ");
queryString.append(" b.CONTACTS contacts, b.ADDRESS address, b.REMARK remark, b.CREATE_TIME createTime, ");
queryString.append(" p.USERCODE userCode, p.USERNAME userName, p.PHONE Uphone, g.goodsName ");
queryString.append(" FROM ");
queryString.append(" T_INVEST_GOODS_BUY b ");
queryString.append(" LEFT JOIN PAT_PARTY p ON b.PARTY_ID = p.UUID ");
queryString.append(" LEFT JOIN ( SELECT GOODS_ID goodsId, NAME goodsName FROM T_INVEST_GOODS_LANG WHERE LANG = 'cn' ) g ON b.GOODS_ID = g.goodsId ");
queryString.append(" WHERE 1=1 ");
if (!StringUtils.isNullOrEmpty(id)) {
queryString.append(" and b.UUID =:id");
parameters.put("id", id);
}
if (!StringUtils.isNullOrEmpty(userCode)) {
queryString.append(" and p.USERCODE =:userCode");
parameters.put("userCode", userCode);
}
if (!StringUtils.isNullOrEmpty(userName)) {
queryString.append(" and p.USERNAME =:userName");
parameters.put("userName", userName);
}
if (!StringUtils.isNullOrEmpty(phone)) {
queryString.append(" and p.PHONE =:phone");
parameters.put("phone", phone);
}
if (-2 != status) {
queryString.append(" and b.STATUS =:status");
parameters.put("status", status);
}
if (!StringUtils.isNullOrEmpty(startTime)) {
queryString.append(" AND DATE(b.CREATE_TIME) >= DATE(:startTime) ");
parameters.put("startTime", DateUtils.toDate(startTime));
}
if (!StringUtils.isNullOrEmpty(endTime)) {
queryString.append(" AND DATE(b.CREATE_TIME) <= DATE(:endTime) ");
parameters.put("endTime", DateUtils.toDate(endTime));
}
queryString.append(" ORDER BY b.CREATE_TIME DESC ");
Page page = this.pagedQueryDao.pagedQuerySQL(pageNo, pageSize, queryString.toString(), parameters);
return page;
}
@Override
public Page pagedQueryExchange(int pageNo, int pageSize, String id, String userCode, String userName, String phone, String startTime, String endTime) {
Map<String, Object> parameters = new HashMap<>();
StringBuffer queryString = new StringBuffer(" SELECT ");
queryString.append(" e.UUID id, e.NUM num, e.USDT usdt, e.PAY_POINT payPoint, e.SCALE scale, e.CREATE_TIME createTime, ");
queryString.append(" p.USERCODE userCode, p.USERNAME userName, p.PHONE phone, g.goodsName, goods.PRIZE prize ");
queryString.append(" FROM ");
queryString.append(" T_INVEST_POINT_EXCHANGE e ");
queryString.append(" LEFT JOIN PAT_PARTY p ON e.PARTY_ID = p.UUID ");
queryString.append(" LEFT JOIN T_INVEST_GOODS goods ON e.GOODS_ID = goods.UUID ");
queryString.append(" LEFT JOIN ( SELECT GOODS_ID goodsId, NAME goodsName FROM T_INVEST_GOODS_LANG WHERE LANG = 'cn' ) g ON e.GOODS_ID = g.goodsId ");
queryString.append(" WHERE 1=1 ");
if (!StringUtils.isNullOrEmpty(id)) {
queryString.append(" and e.UUID =:id");
parameters.put("id", id);
}
if (!StringUtils.isNullOrEmpty(userCode)) {
queryString.append(" and p.USERCODE =:userCode");
parameters.put("userCode", userCode);
}
if (!StringUtils.isNullOrEmpty(userName)) {
queryString.append(" and p.USERNAME =:userName");
parameters.put("userName", userName);
}
if (!StringUtils.isNullOrEmpty(phone)) {
queryString.append(" and p.PHONE =:phone");
parameters.put("phone", phone);
}
// if (-2 != status) {
// queryString.append(" and e.STATUS =:status");
// parameters.put("status", status);
// }
if (!StringUtils.isNullOrEmpty(startTime)) {
queryString.append(" AND DATE(e.CREATE_TIME) >= DATE(:startTime) ");
parameters.put("startTime", DateUtils.toDate(startTime));
}
if (!StringUtils.isNullOrEmpty(endTime)) {
queryString.append(" AND DATE(e.CREATE_TIME) <= DATE(:endTime) ");
parameters.put("endTime", DateUtils.toDate(endTime));
}
queryString.append(" ORDER BY e.CREATE_TIME DESC ");
Page page = this.pagedQueryDao.pagedQuerySQL(pageNo, pageSize, queryString.toString(), parameters);
return page;
}
@Override
public GoodsBuy findGoodsBuyById(String id) {
return this.getHibernateTemplate().get(GoodsBuy.class, id);
}
@Override
public void updateStatus(String id, String type, String remark) {
GoodsBuy goodsBuy = this.findGoodsBuyById(id);
goodsBuy.setRemark(remark);
if(Integer.parseInt(type) == 1){
goodsBuy.setStatus(1);
}
if(Integer.parseInt(type) == 2){
goodsBuy.setStatus(-1);
}
this.getHibernateTemplate().update(goodsBuy);
}
public void setPagedQueryDao(PagedQueryDao pagedQueryDao) {
this.pagedQueryDao = pagedQueryDao;
}
}

View File

@@ -0,0 +1,169 @@
package project.invest.goods.impl;
import com.alibaba.fastjson.JSON;
import kernel.exception.BusinessException;
import kernel.util.DateUtils;
import kernel.util.StringUtils;
import kernel.web.Page;
import kernel.web.PagedQueryDao;
import org.apache.commons.collections.CollectionUtils;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import project.invest.InvestRedisKeys;
import project.invest.goods.AdminGoodsService;
import project.invest.goods.model.Goods;
import project.invest.goods.model.GoodsLang;
import project.redis.RedisHandler;
import java.util.*;
public class AdminGoodsServiceImpl extends HibernateDaoSupport implements AdminGoodsService {
private PagedQueryDao pagedQueryDao;
protected RedisHandler redisHandler;
@Override
public Page pagedQuery(int pageNo, int pageSize, String name, Integer status, String startTime, String endTime) {
StringBuffer queryString = new StringBuffer();
queryString.append(" SELECT ");
queryString.append("g.UUID id, g.ICON_IMG iconImg, l.NAME name, g.PRIZE prize, g.CREATE_TIME createTime,");
queryString.append("g.TOTAL total, g.STATUS status, g.LAST_AMOUNT lastAmount, g.EXCHANGE_AMOUNT exchangeAmount");
queryString.append(" FROM ");
queryString.append(" T_INVEST_GOODS g LEFT JOIN T_INVEST_GOODS_LANG l ON g.UUID = l.GOODS_ID");
queryString.append(" WHERE 1=1 and l.LANG = 'cn' and l.TYPE = 0 ");
Map<String, Object> parameters = new HashMap<String, Object>();
if (!StringUtils.isNullOrEmpty(name)) {
queryString.append(" AND l.NAME like:name ");
parameters.put("name", "%" + name + "%");
}
if (null != status) {
queryString.append(" AND g.status =:status ");
parameters.put("status", status);
}
if (!StringUtils.isNullOrEmpty(startTime)) {
queryString.append(" AND DATE(g.CREATE_TIME) >= DATE(:startTime) ");
parameters.put("startTime", DateUtils.toDate(startTime));
}
if (!StringUtils.isNullOrEmpty(endTime)) {
queryString.append(" AND DATE(g.CREATE_TIME) <= DATE(:endTime) ");
parameters.put("endTime", DateUtils.toDate(endTime));
}
queryString.append(" ORDER BY g.CREATE_TIME DESC ");
Page page = this.pagedQueryDao.pagedQuerySQL(pageNo, pageSize, queryString.toString(), parameters);
return page;
}
@Override
public Goods findById(String id) {
return this.getHibernateTemplate().get(Goods.class, id);
}
@Override
public List<GoodsLang> findLanByGoodsId(String goodsId, String lang) {
Criteria criteria = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(GoodsLang.class);
criteria.add( Restrictions.eq("goodsId", goodsId) );
if(!StringUtils.isEmptyString(lang)){
criteria.add( Restrictions.eq("lang", lang) );
}
if(CollectionUtils.isNotEmpty(criteria.list())){
return criteria.list();
}
return null;
}
private List<GoodsLang> findGoodsByName(String name, String lang,int type){
Criteria criteria = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(GoodsLang.class);
criteria.add( Restrictions.eq("name", name) );
criteria.add( Restrictions.eq("lang", lang ) );
criteria.add( Restrictions.eq("type", 0 ) );
return criteria.list();
}
@Override
public void save(String name) {
List<GoodsLang> goodsList = findGoodsByName(name,"cn",0);
if(CollectionUtils.isNotEmpty(goodsList)){
throw new BusinessException("商品名称已存在");
}
Goods goods = new Goods();
goods.setCreateTime(new Date());
goods.setExchangeAmount(0);
goods.setLastAmount(0);
goods.setSort(0);
goods.setTotal(0);
goods.setPayWay(0);
goods.setStatus(0);
goods.setUpTime(System.currentTimeMillis());
this.getHibernateTemplate().save(goods);
GoodsLang goodsLang = new GoodsLang();
goodsLang.setName(name);
goodsLang.setLang("cn");
goodsLang.setGoodsId(goods.getId().toString());
getHibernateTemplate().save(goodsLang);
redisHandler.setSyncString(InvestRedisKeys.INVEST_GOODS_LANG+goodsLang.getLang()+":"+goods.getId().toString(), JSON.toJSONString(goodsLang));
}
@Override
public void update(String name, String iconImg, String prize, String goodsId, String goodsLanId, String status, String des, String lang, String sort, String total, String lastAmount) {
Goods goods = this.findById(goodsId);
List<GoodsLang> goodsLangs = findGoodsByName(name,lang,0);
if(!goodsLangs.isEmpty() && !goodsLangs.get(0).getId().equals(goodsLanId)){
throw new BusinessException("商品名称已存在");
}
if(null == goods){
throw new BusinessException("此商品不存在");
}
GoodsLang goodsLang = new GoodsLang();
goods.setIconImg(iconImg);
goods.setStatus(Integer.parseInt(status));
goods.setPrize(Double.parseDouble(prize));
goods.setSort(Integer.parseInt(sort));
goods.setPayWay(0);
goods.setTotal(Integer.parseInt(total));
goods.setLastAmount(Integer.parseInt(lastAmount));
goods.setUpTime(new Date().getTime());
goodsLang.setDes(des);
goodsLang.setName(name);
goodsLang.setLang(lang);
goodsLang.setGoodsId(goodsId);
if(StringUtils.isEmptyString(goodsLanId)){
getHibernateTemplate().save(goodsLang);
} else {
goodsLang.setId(goodsLanId);
getHibernateTemplate().merge(goodsLang);
}
redisHandler.setSyncString(InvestRedisKeys.INVEST_GOODS_LANG+goodsLang.getLang()+":"+goods.getId().toString(), JSON.toJSONString(goodsLang));
this.getHibernateTemplate().update(goods);
}
@Override
public void delete(String id,List<GoodsLang> goodsLangs) {
Goods goods = this.findById(id);
goodsLangs.forEach(e ->{
e.setType(1);
getHibernateTemplate().update(e);
redisHandler.setSyncString(InvestRedisKeys.INVEST_GOODS_LANG+e.getLang()+":"+goods.getId().toString(), JSON.toJSONString(e));
});
}
public void setPagedQueryDao(PagedQueryDao pagedQueryDao) {
this.pagedQueryDao = pagedQueryDao;
}
public void setRedisHandler(RedisHandler redisHandler) {
this.redisHandler = redisHandler;
}
}

View File

@@ -0,0 +1,233 @@
package project.invest.goods.internal;
import kernel.exception.BusinessException;
import kernel.util.Arith;
import org.hibernate.Criteria;
import org.hibernate.criterion.*;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import project.Constants;
import project.invest.goods.GoodsService;
import project.invest.goods.model.Goods;
import project.invest.goods.model.GoodsBuy;
import project.invest.goods.model.PointExchange;
import project.invest.goods.model.Useraddress;
import project.log.MoneyLog;
import project.log.MoneyLogService;
import project.wallet.Wallet;
import project.wallet.WalletService;
import java.util.Date;
import java.util.List;
public class GoodsServiceImpl extends HibernateDaoSupport implements GoodsService {
private WalletService walletService;
private MoneyLogService moneyLogService;
@Override
public List<Goods> listGoodsSell( int pageNum, int pageSize) {
DetachedCriteria query = DetachedCriteria.forClass(Goods.class);
query.add( Property.forName("status").eq(0) );
query.addOrder(Order.asc("sort"));
query.addOrder(Order.desc("createTime"));
return (List<Goods>) getHibernateTemplate().findByCriteria(query,(pageNum-1)*pageSize,pageSize);
}
@Override
public List<GoodsBuy> listGoodsBuy(String partyId, int pageNum, int pageSize) {
DetachedCriteria query = DetachedCriteria.forClass(GoodsBuy.class);
query.add( Property.forName("partyId").eq(partyId) );
query.addOrder(Order.desc("createTime"));
return (List<GoodsBuy>) getHibernateTemplate().findByCriteria(query,(pageNum-1)*pageSize,pageSize);
}
@Override
public List<PointExchange> listPointExchange(String partyId, int pageNum, int pageSize) {
DetachedCriteria query = DetachedCriteria.forClass(PointExchange.class);
query.add( Property.forName("partyId").eq(partyId) );
query.addOrder(Order.desc("createTime"));
return (List<PointExchange>) getHibernateTemplate().findByCriteria(query,(pageNum-1)*pageSize,pageSize);
}
@Override
public GoodsBuy findGoodsBuyById(String id) {
return this.getHibernateTemplate().get(GoodsBuy.class, id);
}
@Override
public PointExchange findPointExchangeById(String id) {
return this.getHibernateTemplate().get(PointExchange.class, id);
}
@Override
public Goods findById(String goodsId) {
return this.getHibernateTemplate().get(Goods.class, goodsId);
}
@Override
public void updateBuyGoods(String partyId, String goodsId, int amount,String phone,String contacts,String address) {
Goods goods = findById(goodsId);
if(goods==null||goods.getStatus()==1||goods.getLastAmount()<=0){
throw new BusinessException("商品已被全部兑换");
}
int cost = (int) (amount*goods.getPrize());
int bance = walletService.getInvestPointBuyPartyId(partyId).intValue();
if(bance<cost){
throw new BusinessException("积分不足");
}
walletService.updateInvestPoint(partyId,-cost);
GoodsBuy g = new GoodsBuy();
g.setPartyId(partyId);
g.setCreateTime(new Date());
g.setStatus(0);
g.setNum(amount);
g.setGoodsId(goodsId);
g.setPhone(phone);
g.setContacts(contacts);
g.setAddress(address);
g.setPayPoint(cost);
this.getHibernateTemplate().save(g);
}
@Override
public void updateExchangeUsdt(String partyId, String goodsId, int amount,long scale) {
Goods goods = findById(goodsId);
if(goods==null||goods.getStatus()==1||goods.getLastAmount()<=0){
throw new BusinessException("商品已被全部兑换");
}
int cost = (int) (amount*goods.getPrize());
int bance = walletService.getInvestPointBuyPartyId(partyId).intValue();
if(bance<cost){
throw new BusinessException("积分不足");
}
walletService.updateInvestPoint(partyId,-cost);
Double addUsdt = Arith.div(cost,scale);
PointExchange pointExchange = new PointExchange();
pointExchange.setGoodsId(goodsId);
pointExchange.setNum(amount);
pointExchange.setPartyId(partyId);
pointExchange.setScale(String.valueOf(scale));
pointExchange.setCreateTime(new Date());
pointExchange.setUsdt(addUsdt);
pointExchange.setPayPoint(cost);
this.getHibernateTemplate().save(pointExchange);
Wallet wallet = walletService.saveWalletByPartyId(partyId);
double amount_before = wallet.getMoney();
wallet.setMoney(Arith.roundDown(Arith.add(wallet.getMoney(), addUsdt),2));
walletService.update(wallet.getPartyId().toString(), Arith.add(0, addUsdt));
MoneyLog moneyLog = new MoneyLog();
moneyLog.setCategory(Constants.MONEYLOG_CATEGORY_COIN);
moneyLog.setAmount_before(amount_before);
moneyLog.setAmount(Arith.add(0, addUsdt));
moneyLog.setAmount_after(wallet.getMoney());
moneyLog.setLog("积分兑换余额[" + addUsdt + "]");
moneyLog.setPartyId(partyId);
moneyLog.setWallettype(Constants.WALLET);
moneyLog.setContent_type(Constants.MONEYLOG_CONTNET_EXCHANGE_USDT);
moneyLogService.save(moneyLog);
}
@Override
public void saveAddress(String partyId, int use, String phone, String contacts, String address) {
Criteria criteria = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(Useraddress.class);
criteria.add(Restrictions.eq("partyId", partyId));
criteria.setProjection(Projections.rowCount());
Integer totalCount = ((Long) criteria.uniqueResult()).intValue();
if(totalCount==null){
totalCount = 0;
}
if(totalCount>5){
throw new BusinessException("收货地址达上限");
}
if(use==1){
for(Useraddress b: getAddressUse(partyId)){
b.setStatus(0);
getHibernateTemplate().update(b);
}
}
Useraddress addRess = new Useraddress();
addRess.setPartyId(partyId);
addRess.setAddress(address);
addRess.setPhone(phone);
addRess.setContacts(contacts);
addRess.setStatus(use);
addRess.setCreateTime(new Date());
getHibernateTemplate().save(addRess);
}
@Override
public void updateAddress(String id, String partyId, int use, String phone, String contacts, String address) {
Useraddress useraddress = this.getHibernateTemplate().get(Useraddress.class, id);
if(useraddress==null||!partyId.equals(useraddress.getPartyId())){
throw new BusinessException("地址不存在,或者已删除");
}
useraddress.setStatus(use);
useraddress.setAddress(address);
useraddress.setPhone(phone);
useraddress.setContacts(contacts);
this.getHibernateTemplate().update(useraddress);
if(use==1){
for(Useraddress b: getAddressUse(partyId)){
if(id.equals(b.getId())){
continue;
}
b.setStatus(0);
getHibernateTemplate().update(b);
}
}
}
@Override
public List<Useraddress> getAddressUse(String partyId) {
DetachedCriteria query = DetachedCriteria.forClass(Useraddress.class);
query.add( Property.forName("partyId").eq(partyId) );
query.add( Property.forName("status").eq(1) );
return (List<Useraddress>) getHibernateTemplate().findByCriteria(query,0,10);
}
@Override
public void removeAddress(String id) {
Useraddress address = this.getHibernateTemplate().get(Useraddress.class, id);
if(address==null){
throw new BusinessException("地址不存在,或者已删除");
}
getHibernateTemplate().delete(address);
}
@Override
public List<Useraddress> listAddress(String partyId) {
DetachedCriteria query = DetachedCriteria.forClass(Useraddress.class);
query.add( Property.forName("partyId").eq(partyId) );
query.addOrder(Order.desc("status"));
query.addOrder(Order.desc("createTime"));
return (List<Useraddress>) getHibernateTemplate().findByCriteria(query,0,10);
}
public void setWalletService(WalletService walletService) {
this.walletService = walletService;
}
public void setMoneyLogService(MoneyLogService moneyLogService) {
this.moneyLogService = moneyLogService;
}
}

View File

@@ -0,0 +1,41 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="project.invest.goods.model.Goods" table="T_INVEST_GOODS">
<id name="id" type="java.lang.String">
<column name="UUID" />
<generator class="uuid.hex" />
</id>
<property name="iconImg" type="java.lang.String">
<column name="ICON_IMG" />
</property>
<property name="prize" type="double">
<column name="PRIZE" />
</property>
<property name="createTime" type="timestamp">
<column name="CREATE_TIME" />
</property>
<property name="status" type="java.lang.Integer">
<column name="STATUS" />
</property>
<property name="sort" type="int">
<column name="SORT" />
</property>
<property name="payWay" type="java.lang.Integer">
<column name="PAY_WAY" />
</property>
<property name="total" type="java.lang.Integer">
<column name="TOTAL" />
</property>
<property name="lastAmount" type="java.lang.Integer">
<column name="LAST_AMOUNT" />
</property>
<property name="exchangeAmount" type="java.lang.Integer">
<column name="EXCHANGE_AMOUNT" />
</property>
<property name="upTime" type="java.lang.Long">
<column name="UP_TIME" />
</property>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,153 @@
package project.invest.goods.model;
import kernel.bo.EntityObject;
import java.util.Date;
public class Goods extends EntityObject {
private static final long serialVersionUID = -66585270719884278L;
/**
* 图标
*/
private String iconImg;
/**
* 单价
*/
private double prize;
/**
* 创建时间
*/
private Date createTime;
/**
* 状态0-启用 1-禁用
*/
private int status;
/**
* 排序
*/
private int sort;
/**
* '支付方式 0-全积分(预留字段)',
*/
private int payWay;
/**
* 商品总数
*/
private int total;
/**
* 剩余数量
*/
private int lastAmount;
/**
* 已兑换总数
*/
private int exchangeAmount;
/**
* 最后保存时间
*/
private long upTime;
public static long getSerialVersionUID() {
return serialVersionUID;
}
public String getIconImg() {
return iconImg;
}
public void setIconImg(String iconImg) {
this.iconImg = iconImg;
}
public void setPrize(int prize) {
this.prize = prize;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
public int getPayWay() {
return payWay;
}
public void setPayWay(int payWay) {
this.payWay = payWay;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getLastAmount() {
if(lastAmount<0){
return 0;
}
return lastAmount;
}
public void setLastAmount(int lastAmount) {
this.lastAmount = lastAmount;
}
public int getExchangeAmount() {
return exchangeAmount;
}
public void setExchangeAmount(int exchangeAmount) {
this.exchangeAmount = exchangeAmount;
}
public long getUpTime() {
return upTime;
}
public void setUpTime(long upTime) {
this.upTime = upTime;
}
public double getPrize() {
return prize;
}
public void setPrize(double prize) {
this.prize = prize;
}
}

View File

@@ -0,0 +1,51 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="project.invest.goods.model.GoodsBuy" table="T_INVEST_GOODS_BUY">
<id name="id" type="java.lang.String">
<column name="UUID" />
<generator class="uuid.hex" />
</id>
<property name="goodsId" type="java.lang.String">
<column name="GOODS_ID" />
</property>
<property name="num" type="java.lang.Integer">
<column name="NUM" />
</property>
<property name="payPoint" type="java.lang.Integer">
<column name="PAY_POINT" />
</property>
<property name="partyId" type="java.lang.String">
<column name="PARTY_ID" />
</property>
<property name="phone" type="java.lang.String">
<column name="PHONE" />
</property>
<property name="contacts" type="java.lang.String">
<column name="CONTACTS" />
</property>
<property name="address" type="java.lang.String">
<column name="ADDRESS" />
</property>
<property name="status" type="java.lang.Integer">
<column name="STATUS" />
</property>
<property name="remark" type="java.lang.String">
<column name="REMARK" />
</property>
<property name="createTime" type="timestamp">
<column name="CREATE_TIME" />
</property>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,68 @@
package project.invest.goods.model;
import kernel.bo.EntityObject;
import lombok.Data;
import java.util.Date;
@Data
public class GoodsBuy extends EntityObject {
private static final long serialVersionUID = -6585270719884278L;
/**
* 商品ID
*/
private String goodsId;
/**
* 商品数量
*/
private int num;
/**
* 会员ID
*/
private String partyId;
/**
* -1=取消0=进行中1=已经发货)
*/
private int status;
/**
* 手机号
*/
private String phone;
/**
* 联系人
*/
private String contacts;
/**
* 地址
*/
private String address;
/**
* 备注
*/
private String remark;
/**
* 支付积分
*/
private int payPoint;
/**
* 创建时间
*/
private Date createTime;
}

View File

@@ -0,0 +1,26 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="project.invest.goods.model.GoodsLang" table="T_INVEST_GOODS_LANG">
<id name="id" type="java.lang.String">
<column name="UUID" />
<generator class="uuid.hex" />
</id>
<property name="goodsId" type="java.lang.String">
<column name="GOODS_ID" />
</property>
<property name="lang" type="java.lang.String">
<column name="LANG" />
</property>
<property name="des" type="java.lang.String">
<column name="DES" />
</property>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="type" type="java.lang.Integer">
<column name="TYPE" />
</property>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,72 @@
package project.invest.goods.model;
import kernel.bo.EntityObject;
public class GoodsLang extends EntityObject {
/**
* 商品id
*/
private String goodsId;
/**
* 语言
*/
private String lang;
/**
* 名称
*/
private String name;
/**
* 描述
*/
private String des;
/**
* 假删除 0-存在 1-删除
*/
private int type;
public String getGoodsId() {
return goodsId;
}
public void setGoodsId(String goodsId) {
this.goodsId = goodsId;
}
public String getLang() {
return lang;
}
public void setLang(String lang) {
this.lang = lang;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDes() {
return des;
}
public void setDes(String des) {
this.des = des;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
}

View File

@@ -0,0 +1,42 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="project.invest.goods.model.PointExchange" table="T_INVEST_POINT_EXCHANGE">
<id name="id" type="java.lang.String">
<column name="UUID" />
<generator class="uuid.hex" />
</id>
<property name="partyId" type="java.lang.String">
<column name="PARTY_ID" />
</property>
<property name="goodsId" type="java.lang.String">
<column name="GOODS_ID" />
</property>
<property name="num" type="java.lang.Integer">
<column name="NUM" />
</property>
<property name="usdt" type="double">
<column name="USDT" />
</property>
<property name="payPoint" type="java.lang.Integer">
<column name="PAY_POINT" />
</property>
<property name="scale" type="java.lang.String">
<column name="SCALE" />
</property>
<property name="createTime" type="timestamp">
<column name="CREATE_TIME" />
</property>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,52 @@
package project.invest.goods.model;
import kernel.bo.EntityObject;
import lombok.Data;
import java.util.Date;
@Data
public class PointExchange extends EntityObject {
private static final long serialVersionUID = -6585270719884278L;
/**
* 商品ID
*/
private String goodsId;
/**
* 商品数量
*/
private int num;
/**
* 会员ID
*/
private String partyId;
/**
* 兑换倍数SCALE:1
*/
private String scale;
/**
*获得usdt
*/
private double usdt;
/**
* 支付积分
*/
private int payPoint;
/**
* 创建时间
*/
private Date createTime;
}

View File

@@ -0,0 +1,36 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="project.invest.goods.model.Useraddress" table="T_INVEST_USERADDRESS">
<id name="id" type="java.lang.String">
<column name="UUID" />
<generator class="uuid.hex" />
</id>
<property name="partyId" type="java.lang.String">
<column name="PARTY_ID" />
</property>
<property name="phone" type="java.lang.String">
<column name="PHONE" />
</property>
<property name="contacts" type="java.lang.String">
<column name="CONTACTS" />
</property>
<property name="address" type="java.lang.String">
<column name="ADDRESS" />
</property>
<property name="status" type="java.lang.Integer">
<column name="STATUS" />
</property>
<property name="createTime" type="timestamp">
<column name="CREATE_TIME" />
</property>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,83 @@
package project.invest.goods.model;
import kernel.bo.EntityObject;
import java.util.Date;
public class Useraddress extends EntityObject {
private static final long serialVersionUID = -6658527079884278L;
/**
* 会员ID
*/
private String partyId;
/**
* 是否默认
*/
private int status;
/**
* 手机号
*/
private String phone;
/**
* 联系人
*/
private String contacts;
/**
* 地址
*/
private String address;
private Date createTime;
public String getPartyId() {
return partyId;
}
public void setPartyId(String partyId) {
this.partyId = partyId;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getContacts() {
return contacts;
}
public void setContacts(String contacts) {
this.contacts = contacts;
}
}

View File

@@ -0,0 +1,27 @@
package project.invest.order;
import kernel.web.Page;
public interface AdminExchangeOrderService {
/**
* 获取 otc订单 列表
*/
Page pagedQuery(int pageNo, int pageSize, String name_para, String phone, String id, String roleName, Integer status, String startTime, String endTime);
/**
* 通过申请
* @param id
* @param safeword
* @param username_login
*/
void saveSucceeded(String id, String safeword, String username_login);
/**
* 驳回申请
* @param id
* @param failure_msg
* @param username_login
*/
void saveReject(String id, String failure_msg, String username_login);
}

View File

@@ -0,0 +1,45 @@
package project.invest.order;
import kernel.web.Page;
import project.invest.project.model.InvestOrders;
import java.util.Map;
public interface AdminOrderService {
/**
* 查询
* @param pageNo
* @param pageSize
* @param id
* @param userCode
* @param userName
* @param phone
* @param roleName
* @param startTime
* @param endTime
* @param status
* @return
*/
Page pagedQuery(int pageNo, int pageSize, String id, String userCode, String userName, String phone, String roleName, String startTime, String endTime, Integer status);
/**
* 订单取消
* @param id
*/
void updateCancel(String id);
/**
* 根据id查询
* @param id
* @return
*/
InvestOrders findOrdersById(String id);
/**
* 订单关闭
* @param order
*/
void updateClosure(InvestOrders order);
Map findDaySumData();
}

View File

@@ -0,0 +1,277 @@
package project.invest.order.impl;
import kernel.exception.BusinessException;
import kernel.util.Arith;
import kernel.util.DateUtils;
import kernel.util.StringUtils;
import kernel.web.Page;
import kernel.web.PagedQueryDao;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import org.springframework.security.providers.encoding.PasswordEncoder;
import project.Constants;
import project.invest.order.AdminExchangeOrderService;
import project.invest.project.model.ExchangeOrder;
import project.log.Log;
import project.log.LogService;
import project.log.MoneyLog;
import project.log.MoneyLogService;
import project.party.recom.UserRecomService;
import project.tip.TipService;
import project.wallet.Wallet;
import project.wallet.WalletService;
import security.SecUser;
import security.internal.SecUserService;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
public class AdminExchangeOrderServiceImpl extends HibernateDaoSupport implements AdminExchangeOrderService {
private WalletService walletService;
private MoneyLogService moneyLogService;
private PagedQueryDao pagedQueryDao;
private UserRecomService userRecomService;
private PasswordEncoder passwordEncoder;
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
private LogService logService;
private SecUserService secUserService;
private TipService tipService;
@Override
public Page pagedQuery(int pageNo, int pageSize, String name_para, String phone, String id, String roleName, Integer status, String startTime, String endTime) {
StringBuffer queryString = new StringBuffer();
queryString.append("SELECT");
queryString.append(
" party.USERNAME userName, party.ROLENAME roleName, party.USERCODE usercode, party.PHONE phone, ");
queryString.append(
" orders.UUID id, orders.SYMBOL symbol, orders.RATA rata, orders.SYMBOL_VALUE symbolValue, orders.REAL_AMOUNT realAmount, ");
queryString.append(
" orders.ORDER_PRICE_TYPE orderPriceType, orders.CREATE_TIME createTime, orders.STAUS status, orders.PAY_TYPE payType, ");
queryString.append(
" orders.BANK_NAME bankName, orders.BANK_ACCOUNT bankAccount, orders.REVIEW_TIME reviewTime, orders.REMARK remark ");
queryString.append(" FROM");
queryString.append(" T_EXCHANGE_ORDER orders " + " LEFT JOIN PAT_PARTY party ON orders.PARTY_ID = party.UUID ");
queryString.append(" WHERE 1=1 ");
Map<String, Object> parameters = new HashMap<String, Object>();
if (!StringUtils.isNullOrEmpty(id)) {
queryString.append(" and orders.UUID =:id");
parameters.put("id", id);
}
if (!StringUtils.isNullOrEmpty(name_para)) {
queryString.append("AND (party.USERNAME like:username OR party.USERCODE like:username ) ");
parameters.put("username", "%" + name_para + "%");
}
if (!StringUtils.isNullOrEmpty(roleName)) {
queryString.append(" and party.ROLENAME =:roleName");
parameters.put("roleName", roleName);
}
if (!StringUtils.isNullOrEmpty(phone)) {
queryString.append(" and party.PHONE =:phone");
parameters.put("phone", phone);
}
if (status != null) {
queryString.append(" and orders.STAUS = :status ");
parameters.put("status", status);
}
if (!StringUtils.isNullOrEmpty(startTime)) {
queryString.append(" AND DATE(orders.CREATE_TIME) >= DATE(:startTime) ");
parameters.put("startTime", DateUtils.toDate(startTime));
}
if (!StringUtils.isNullOrEmpty(endTime)) {
queryString.append(" AND DATE(orders.CREATE_TIME) <= DATE(:endTime) ");
parameters.put("endTime", DateUtils.toDate(endTime));
}
queryString.append(" order by orders.CREATE_TIME desc ");
Page page = pagedQueryDao.pagedQuerySQL(pageNo, pageSize, queryString.toString(), parameters);
return page;
}
/**r
* 通过申请
* @param id
* @param safeword
*/
@Override
public void saveSucceeded(String id, String safeword, String userName) {
SecUser sec = this.secUserService.findUserByLoginName(userName);
String sysSafeword = sec.getSafeword();
String safeword_md5 = passwordEncoder.encodePassword(safeword, userName);
if (!safeword_md5.equals(sysSafeword)) {
throw new BusinessException("资金密码错误");
}
ExchangeOrder exchangeOrder = this.get(id);
if(Objects.isNull(exchangeOrder)){
throw new BusinessException("订单异常");
}
if (exchangeOrder.getStaus() != 0 ) {// 通过后不可驳回
throw new BusinessException("此订单已被处理,请刷新页面");
}
Date date = new Date();
exchangeOrder.setReviewTime(date);
exchangeOrder.setStaus(1);
this.getHibernateTemplate().update(exchangeOrder);
SecUser SecUser = secUserService.findUserByPartyId(exchangeOrder.getPartyId());
Log log = new Log();
log.setCategory(Constants.LOG_CATEGORY_OPERATION);
log.setExtra(exchangeOrder.getId().toString());
log.setOperator(userName);
log.setUsername(SecUser.getUsername());
log.setPartyId(SecUser.getPartyId());
log.setLog("通过OTC订单申请。订单号[" + exchangeOrder.getId() + "]。");
logService.saveSync(log);
tipService.deleteTip(exchangeOrder.getId().toString());
}
@Override
public void saveReject(String id, String failure_msg, String username_login) {
ExchangeOrder exchangeOrder = this.get(id);
if(Objects.isNull(exchangeOrder)){
throw new BusinessException("订单异常");
}
if (exchangeOrder.getStaus() != 0 ) {
throw new BusinessException("此订单已被处理,请刷新页面");
}
exchangeOrder.setStaus(2);
exchangeOrder.setRemark(failure_msg);
exchangeOrder.setReviewTime(new Date());
Wallet wallet = walletService.saveWalletByPartyId(exchangeOrder.getPartyId());
double amount_before = wallet.getMoney();
walletService.update(wallet.getPartyId().toString(), exchangeOrder.getSymbolValue());
/*
* 保存资金日志
*/
MoneyLog moneyLog = new MoneyLog();
moneyLog.setCategory(Constants.MONEYLOG_CATEGORY_COIN);
moneyLog.setAmount_before(amount_before);
moneyLog.setAmount(exchangeOrder.getSymbolValue());
moneyLog.setAmount_after(Arith.add(amount_before, exchangeOrder.getSymbolValue()));
moneyLog.setLog("驳回OTC订单申请[" + exchangeOrder.getId() + "]");
// moneyLog.setExtra(withdraw.getOrder_no());
moneyLog.setPartyId(exchangeOrder.getPartyId());
moneyLog.setWallettype(Constants.WALLET);
moneyLog.setContent_type(Constants.MONEYLOG_CONTNET_OTC_OUT);
moneyLogService.save(moneyLog);
SecUser SecUser = secUserService.findUserByPartyId(exchangeOrder.getPartyId());
Log log = new Log();
log.setCategory(Constants.LOG_CATEGORY_OPERATION);
log.setExtra(exchangeOrder.getId().toString());
log.setOperator(username_login);
log.setPartyId(exchangeOrder.getPartyId());
log.setUsername(SecUser.getUsername());
log.setLog("驳回OTC订单申请。原因[" + exchangeOrder.getRemark() + "],订单号[" + exchangeOrder.getId() + "]");
logService.saveSync(log);
tipService.deleteTip(exchangeOrder.getId().toString());
}
public ExchangeOrder get(String id) {
return this.getHibernateTemplate().get(ExchangeOrder.class, id);
}
public WalletService getWalletService() {
return walletService;
}
public void setWalletService(WalletService walletService) {
this.walletService = walletService;
}
public MoneyLogService getMoneyLogService() {
return moneyLogService;
}
public void setMoneyLogService(MoneyLogService moneyLogService) {
this.moneyLogService = moneyLogService;
}
public PagedQueryDao getPagedQueryDao() {
return pagedQueryDao;
}
public void setPagedQueryDao(PagedQueryDao pagedQueryDao) {
this.pagedQueryDao = pagedQueryDao;
}
public UserRecomService getUserRecomService() {
return userRecomService;
}
public void setUserRecomService(UserRecomService userRecomService) {
this.userRecomService = userRecomService;
}
public PasswordEncoder getPasswordEncoder() {
return passwordEncoder;
}
public void setPasswordEncoder(PasswordEncoder passwordEncoder) {
this.passwordEncoder = passwordEncoder;
}
public NamedParameterJdbcTemplate getNamedParameterJdbcTemplate() {
return namedParameterJdbcTemplate;
}
public void setNamedParameterJdbcTemplate(NamedParameterJdbcTemplate namedParameterJdbcTemplate) {
this.namedParameterJdbcTemplate = namedParameterJdbcTemplate;
}
public LogService getLogService() {
return logService;
}
public void setLogService(LogService logService) {
this.logService = logService;
}
public SecUserService getSecUserService() {
return secUserService;
}
public void setSecUserService(SecUserService secUserService) {
this.secUserService = secUserService;
}
public TipService getTipService() {
return tipService;
}
public void setTipService(TipService tipService) {
this.tipService = tipService;
}
}

View File

@@ -0,0 +1,175 @@
package project.invest.order.impl;
import kernel.exception.BusinessException;
import kernel.util.Arith;
import kernel.util.DateUtils;
import kernel.util.StringUtils;
import kernel.web.Page;
import kernel.web.PagedQueryDao;
import org.hibernate.query.NativeQuery;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import project.Constants;
import project.invest.order.AdminOrderService;
import project.invest.project.model.InvestOrders;
import project.log.MoneyLog;
import project.log.MoneyLogService;
import project.wallet.Wallet;
import project.wallet.WalletService;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class AdminOrderServiceImpl extends HibernateDaoSupport implements AdminOrderService {
private PagedQueryDao pagedQueryDao;
private WalletService walletService;
protected MoneyLogService moneyLogService;
@Override
public Page pagedQuery(int pageNo, int pageSize, String id, String userCode, String userName, String phone, String roleName, String startTime, String endTime, Integer status) {
Map<String, Object> parameters = new HashMap<>();
StringBuffer queryString = new StringBuffer(" SELECT ");
queryString.append(" orders.UUID id, orders.AMOUNT amount, orders.BONUS_RATE bonusRate, orders.BONUS_RATE_VIP bonusRateVip, orders.STATUS status, ");
queryString.append(" orders.BONUS bonus, orders.TYPE type, orders.INCOME income, orders.CREATE_TIME createTIME, orders.SUCESS_WILL sucessWill, ");
queryString.append(" p.USERCODE userCode, p.USERNAME userName, p.PHONE phone, p.ROLENAME roleName, t.projectName ");
queryString.append(" FROM ");
queryString.append(" T_INVEST_ORDERS orders ");
queryString.append(" LEFT JOIN PAT_PARTY p ON orders.PARTY_ID = p.UUID ");
queryString.append(" LEFT JOIN ( SELECT PROJECT_ID projectId, NAME projectName FROM T_INVEST_PROJECT_LANG WHERE LANG = 'cn' ) t ON orders.PROJECT_ID = t.projectId ");
queryString.append(" WHERE 1=1 ");
if (!StringUtils.isNullOrEmpty(id)) {
queryString.append(" and orders.UUID =:id");
parameters.put("id", id);
}
if (!StringUtils.isNullOrEmpty(userCode)) {
queryString.append(" and p.USERCODE =:userCode");
parameters.put("userCode", userCode);
}
if (!StringUtils.isNullOrEmpty(userName)) {
queryString.append(" and p.USERNAME =:userName");
parameters.put("userName", userName);
}
if (!StringUtils.isNullOrEmpty(roleName)) {
queryString.append(" and p.ROLENAME =:roleName");
parameters.put("roleName", roleName);
}
if (!StringUtils.isNullOrEmpty(phone)) {
queryString.append(" and p.PHONE =:phone");
parameters.put("phone", phone);
}
if (-2 != status) {
queryString.append(" and orders.STATUS =:status");
parameters.put("status", status);
}
if (!StringUtils.isNullOrEmpty(startTime)) {
queryString.append(" AND DATE(orders.CREATE_TIME) >= DATE(:startTime) ");
parameters.put("startTime", DateUtils.toDate(startTime));
}
if (!StringUtils.isNullOrEmpty(endTime)) {
queryString.append(" AND DATE(orders.CREATE_TIME) <= DATE(:endTime) ");
parameters.put("endTime", DateUtils.toDate(endTime));
}
queryString.append(" ORDER BY orders.CREATE_TIME DESC ");
Page page = this.pagedQueryDao.pagedQuerySQL(pageNo, pageSize, queryString.toString(), parameters);
return page;
}
/**
* 订单取消
* @param id
*/
@Override
public void updateCancel(String id) {
InvestOrders order = this.findOrdersById(id);
if(order.getIncome() >0){
throw new BusinessException("该用户已产生收益金额,无法取消订单!");
}
Wallet wallet = this.walletService.saveWalletByPartyId(order.getPartyId());
double amount_before = wallet.getMoney();
double amount = Arith.add(0, order.getAmount());
walletService.update(order.getPartyId(),order.getAmount());
MoneyLog moneyLog = new MoneyLog();
moneyLog.setCategory(Constants.MONEYLOG_CATEGORY_COIN);
moneyLog.setAmount_before(amount_before);
moneyLog.setAmount(amount);
moneyLog.setAmount_after(Arith.add(amount_before,amount));
moneyLog.setLog("投资订单取消[" + order.getId() + "]");
moneyLog.setPartyId(order.getPartyId());
moneyLog.setWallettype(Constants.WALLET);
moneyLog.setContent_type(Constants.ORDER_MONEY_CANCEL);
moneyLogService.save(moneyLog);
order.setStatus(-1);
order.setAuditsTime(new Date());
this.getHibernateTemplate().update(order);
}
@Override
public InvestOrders findOrdersById(String id) {
return this.getHibernateTemplate().get(InvestOrders.class, id);
}
@Override
public void updateClosure(InvestOrders order) {
order.setStatus(1);
order.setAuditsTime(new Date());
this.getHibernateTemplate().update(order);
}
@Override
public Map<String,Object> findDaySumData() {
Map<String, Object> sumData = new HashMap<>();
StringBuffer sql = new StringBuffer(" SELECT ");
sql.append(" count(orders.UUID) orderNum, ");
sql.append(" count( DISTINCT orders.PROJECT_ID) projectNum, ");
sql.append(" IFNULL(sum(orders.AMOUNT),0) amount, ");
sql.append(" IFNULL(sum(orders.INCOME),0) orderIncome ");
sql.append(" FROM ");
sql.append(" T_INVEST_ORDERS orders ");
sql.append(" WHERE to_days(orders.CREATE_TIME) = TO_DAYS(now()) ");
NativeQuery<Object[]> nativeQuery = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createNativeQuery(sql.toString());
Object[] results = nativeQuery.getSingleResult();
sumData.put("orderNum",results[0]);
sumData.put("projectNum",results[1]);
sumData.put("amount",results[2]);
sumData.put("orderIncome",results[3]);
StringBuffer sql1 = new StringBuffer(" SELECT ");
sql1.append(" IFNULL(sum(r.REBATE),0) rebateNum, " );
sql1.append(" r.UUID id FROM ");
sql1.append(" T_INVEST_REBATE r ");
sql1.append(" WHERE r.STATUS = 0 and to_days(r.CREATE_TIME) = TO_DAYS(now()) ");
NativeQuery<Object[]> nativeQuery1 = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createNativeQuery(sql1.toString());
Object[] result = nativeQuery1.getSingleResult();
Object o = result[0];
sumData.put("rebateNum",o);
return sumData;
}
public void setPagedQueryDao(PagedQueryDao pagedQueryDao) {
this.pagedQueryDao = pagedQueryDao;
}
public void setWalletService(WalletService walletService) {
this.walletService = walletService;
}
public void setMoneyLogService(MoneyLogService moneyLogService) {
this.moneyLogService = moneyLogService;
}
}

View File

@@ -0,0 +1,33 @@
package project.invest.platform;
import kernel.web.Page;
import java.util.List;
public interface AdminPlatformService {
/**
* 分页查询平台
* @param
* @return
*/
Page findPlatformList(int pageNo, int pageSize, String name, String startTime, String endTime);
/**
* 新增或编辑
* @param
*/
void addOrModify(String id, String name, String createTime, Integer status);
/**
* 删除平台
* @param id
*/
void delete(String id);
List<Platfrom> findAllPlatfrom();
Platfrom findById(String id);
}

View File

@@ -0,0 +1,33 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="project.invest.platform.BrushClient" table="T_BRUSH_CLIENT">
<id name="id" type="java.lang.String">
<column name="UUID" />
<generator class="uuid.hex" />
</id>
<property name="title" type="java.lang.String">
<column name="TITLE" />
</property>
<property name="content" type="java.lang.String">
<column name="CONTENT" />
</property>
<property name="latestVersion" type="java.lang.String">
<column name="LATEST_VERSION" />
</property>
<property name="downloadlink" type="java.lang.String">
<column name="DOWNLOADLINK" />
</property>
<property name="status" type="java.lang.Integer">
<column name="STATUS" />
</property>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,71 @@
package project.invest.platform;
import kernel.bo.EntityObject;
public class BrushClient extends EntityObject {
private static final long serialVersionUID = -66585207984278L;
/**
* 0不弹窗 1强制更新 2非强制更新
*/
private int status;
/**
* 更新标题
*/
private String title;
/**
* 更新内容
*/
private String content;
/**
* 最新版本号
*/
private String latestVersion;
/**
* 下载地址
*/
private String downloadlink;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getLatestVersion() {
return latestVersion;
}
public void setLatestVersion(String latestVersion) {
this.latestVersion = latestVersion;
}
public String getDownloadlink() {
return downloadlink;
}
public void setDownloadlink(String downloadlink) {
this.downloadlink = downloadlink;
}
}

View File

@@ -0,0 +1,21 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="project.invest.platform.Platfrom" table="T_PLATFROM">
<id name="id" type="java.lang.String">
<column name="UUID" />
<generator class="uuid.hex" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="createTime" type="timestamp">
<column name="CREATE_TIME" />
</property>
<property name="status" type="java.lang.Integer">
<column name="STATUS" />
</property>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,44 @@
package project.invest.platform;
import kernel.bo.EntityObject;
import lombok.Data;
import java.util.Date;
@Data
public class Platfrom extends EntityObject {
private static final long serialVersionUID = -6324021713418425625L;
private String name;
private Date createTime;
private int status;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
}

View File

@@ -0,0 +1,101 @@
package project.invest.platform.impl;
import kernel.exception.BusinessException;
import kernel.util.DateUtils;
import kernel.util.StringUtils;
import kernel.util.UUIDGenerator;
import kernel.web.Page;
import kernel.web.PagedQueryDao;
import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import project.invest.platform.AdminPlatformService;
import project.invest.platform.Platfrom;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PlatformServiceImpl extends HibernateDaoSupport implements AdminPlatformService {
private PagedQueryDao pagedQueryDao;
@Override
public Page findPlatformList(int pageNo, int pageSize, String name, String startTime, String endTime) {
Map<String, Object> parameters = new HashMap<>();
StringBuffer queryString = new StringBuffer(
" SELECT UUID id, CREATE_TIME createTime, NAME name, STATUS status");
queryString.append(" FROM T_PLATFROM WHERE 1 = 1 ");
if (!StringUtils.isNullOrEmpty(name)) {
queryString.append(" and NAME =:name");
parameters.put("name", name);
}
if (!StringUtils.isNullOrEmpty(startTime)) {
queryString.append(" AND DATE(CREATE_TIME) >= DATE(:startTime) ");
parameters.put("startTime",DateUtils.toDate(startTime));
}
if (!StringUtils.isNullOrEmpty(endTime)) {
queryString.append(" AND DATE(CREATE_TIME) <= DATE(:endTime) ");
parameters.put("endTime", DateUtils.toDate(endTime));
}
queryString.append(" ORDER BY CREATE_TIME DESC ");
Page page = this.pagedQueryDao.pagedQuerySQL(pageNo, pageSize, queryString.toString(), parameters);
return page;
}
@Override
public void addOrModify(String id, String name, String createTime, Integer status) {
if (StringUtils.isEmptyString(id)) {
Platfrom platfrom = new Platfrom();
platfrom.setId(UUIDGenerator.getUUID());
platfrom.setStatus(status);
platfrom.setCreateTime(new Date());
platfrom.setName(name);
this.getHibernateTemplate().save(platfrom);
return;
}
Platfrom platfrom = this.getHibernateTemplate().get(Platfrom.class, id);
if(null == platfrom){
throw new BusinessException("平台不存在,请刷新");
}
platfrom.setStatus(status);
platfrom.setName(name);
this.getHibernateTemplate().update(platfrom);
}
@Override
public void delete(String id) {
if(StringUtils.isNotEmpty(id)){
Platfrom platfrom = this.getHibernateTemplate().get(Platfrom.class, id);
this.getHibernateTemplate().delete(platfrom);
}
}
/**
* 获取未禁用的平台
* @return
*/
@Override
public List<Platfrom> findAllPlatfrom() {
Criteria criteria = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(Platfrom.class);
criteria.add( Restrictions.eq("status", 0 ) );
criteria.addOrder(Order.desc("createTime"));
return criteria.list();
}
@Override
public Platfrom findById(String id) {
return this.getHibernateTemplate().get(Platfrom.class,id);
}
public void setPagedQueryDao(PagedQueryDao pagedQueryDao) {
this.pagedQueryDao = pagedQueryDao;
}
}

View File

@@ -0,0 +1,68 @@
package project.invest.project;
import kernel.web.Page;
import project.invest.project.model.Project;
import project.invest.project.model.ProjectLang;
import java.util.List;
public interface AdminProjectService {
/**
* 分页查询
* @param pageNo
* @param pageSize
* @param name
* @param status
* @param startTime
* @param endTime
* @return
*/
Page pagedQuery(int pageNo, int pageSize, String name, Integer status, String startTime, String endTime,Integer ending, String PName);
/**
* 新增
* @param name
*/
void save(String name,String baseId);
/**
* 根据id查询
* @param id
* @return
*/
Project findById(String id);
/**
* 根据goodsId与语言查找
* @param GoodsId
* @param lang
* @return
*/
List<ProjectLang> findLanByProjectId(String GoodsId, String lang);
void delete(String id,List<ProjectLang> projectLangList);
void update(Project project, String name, String lang, String guarantyAgency, String desSafe_text, String desSettle_text, String desUse_text,String projectLanId);
/**
* 是否首页推荐
* @param id
* @param status
*/
void updateStatus(String id, Integer status);
/**
* 更新项目进度
* @param typeValue
* @param proportion
*/
void updateRenew(Integer typeValue, Double proportion);
/**
* 根据项目分类查询项目
*/
List<Project> findProjectByBaseId(String BaseId);
}

View File

@@ -0,0 +1,55 @@
package project.invest.project;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import project.invest.project.model.InvestOrders;
import project.invest.project.model.InvestRebate;
import project.invest.project.model.Project;
import java.util.List;
public interface ProjectService {
// List<Category> listCategorys(String lang);
List<Project> listProjectSell(String baseId, int pageNum, int pageSize);
List<Project> listProjectHome( int pageNum, int pageSize);
Project getProject(String projectId);
Double updateBuyProject(String partyId,String projectId,double amount);
List<InvestOrders> listProjectMy(String partyId, int pageNum, int pageSize);
JSONObject getMyInvestInfo(String partyId);
List<InvestRebate> listProjectIncome(String orderId, int pageNum, int pageSize);
List<InvestRebate> listInvestRebate(String partyId, int pageNum, int pageSize);
JSONObject getProjectIncome(String orderId);
List<InvestOrders> listWaiteSettlements();
void updateSettlementsOrders(String investOrdersId);
List<InvestRebate> listWaiteRebate();
boolean updateRebate(String rebateId);
JSONObject getTeamInfo(String partyId);
JSONArray listRebateByLevel(String partyId, int level, int pageNum, int pageSize);
}

View File

@@ -0,0 +1,224 @@
package project.invest.project.impl;
import com.alibaba.fastjson.JSON;
import kernel.exception.BusinessException;
import kernel.util.DateUtils;
import kernel.util.StringUtils;
import kernel.web.Page;
import kernel.web.PagedQueryDao;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import project.invest.InvestRedisKeys;
import project.invest.project.AdminProjectService;
import project.invest.project.model.Project;
import project.invest.project.model.ProjectLang;
import project.redis.RedisHandler;
import java.util.*;
public class AdminProjectServiceImpl extends HibernateDaoSupport implements AdminProjectService {
private static Log log = LogFactory.getLog(AdminProjectServiceImpl.class);
private PagedQueryDao pagedQueryDao;
protected RedisHandler redisHandler;
private JdbcTemplate jdbcTemplate;
@Override
public Page pagedQuery(int pageNo, int pageSize, String name, Integer status, String startTime, String endTime, Integer ending, String PName) {
StringBuffer queryString = new StringBuffer();
queryString.append(" SELECT ");
queryString.append(" p.UUID id, c.PName, l.GUARANTY_AGENCY guarantyAgency, p.INVEST_SIZE investSize, l.NAME name, p.STATUS status, p.TYPE type, ");
queryString.append(" p.INVEST_PROGRESS investProgress, p.INVEST_PROGRESS_MAN investProgressMan, p.INVEST_MIN investMin, p.INVEST_MAX investMax,");
queryString.append(" p.BONUS_RATE bonusRate, p.BONUS bonus, p.INVEST_SELL_ADD investSellAdd, p.ENDING ending, p.REC_TIME recTime, p.CREATE_TIME createTime ");
queryString.append(" FROM ");
queryString.append(" T_INVEST_PROJECT p ");
queryString.append(" LEFT JOIN T_INVEST_PROJECT_LANG l ON p.UUID = l.PROJECT_ID ");
queryString.append(" LEFT JOIN ( SELECT NAME AS PName, BASE_ID AS baseId FROM T_INVEST_CATEGORY WHERE LANG = 'cn' ) c ON p.BASE_ID = c.baseId ");
queryString.append(" WHERE 1=1 and l.LANG = 'cn' ");
Map<String, Object> parameters = new HashMap<String, Object>();
if (!StringUtils.isNullOrEmpty(name)) {
queryString.append(" AND l.NAME like:name ");
parameters.put("name", "%" + name + "%");
}
if (!StringUtils.isNullOrEmpty(PName)) {
queryString.append(" AND c.PName like :PName ");
parameters.put("PName", "%" + PName + "%");
}
if (null != status) {
queryString.append(" AND p.status =:status ");
parameters.put("status", status);
}
if (null != ending) {
queryString.append(" AND p.ending =:ending ");
parameters.put("ending", ending);
}
if (!StringUtils.isNullOrEmpty(startTime)) {
queryString.append(" AND DATE(p.CREATE_TIME) >= DATE(:startTime) ");
parameters.put("startTime", DateUtils.toDate(startTime));
}
if (!StringUtils.isNullOrEmpty(endTime)) {
queryString.append(" AND DATE(p.CREATE_TIME) <= DATE(:endTime) ");
parameters.put("endTime", DateUtils.toDate(endTime));
}
queryString.append(" ORDER BY p.CREATE_TIME DESC ");
Page page = this.pagedQueryDao.pagedQuerySQL(pageNo, pageSize, queryString.toString(), parameters);
return page;
}
@Override
public Project findById(String id) {
return this.getHibernateTemplate().get(Project.class, id);
}
@Override
public List<ProjectLang> findLanByProjectId(String projectId, String lang) {
Criteria criteria = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(ProjectLang.class);
criteria.add( Restrictions.eq("projectId", projectId) );
if(!StringUtils.isEmptyString(lang)){
criteria.add( Restrictions.eq("lang", lang) );
}
if(CollectionUtils.isNotEmpty(criteria.list())){
return criteria.list();
}
return null;
}
@Override
public List<Project> findProjectByBaseId(String BaseId) {
Criteria criteria = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(Project.class);
criteria.add( Restrictions.eq("baseId", BaseId) );
if(CollectionUtils.isNotEmpty(criteria.list())){
return criteria.list();
}
return null;
}
private List<ProjectLang> findProjectByName(String name, String lang){
Criteria criteria = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(ProjectLang.class);
criteria.add( Restrictions.eq("name", name) );
criteria.add( Restrictions.eq("lang", lang ) );
return criteria.list();
}
@Override
public void save(String name,String baseId) {
List<ProjectLang> projectLangs = findProjectByName(name,"cn");
if(CollectionUtils.isNotEmpty(projectLangs)){
throw new BusinessException("商品名称已存在");
}
Project project = new Project();
project.setBonusRate(0);
project.setBonus(0);
project.setEnding(0);
project.setStatus(1);
project.setType(1);
project.setBaseId(baseId);
project.setRepeating(false);
project.setUpTime(new Date().getTime());
project.setCreateTime(new Date());
project.setSort(0);
this.getHibernateTemplate().save(project);
ProjectLang projectLang = new ProjectLang();
projectLang.setName(name);
projectLang.setLang("cn");
projectLang.setProjectId(project.getId().toString());
getHibernateTemplate().save(projectLang);
redisHandler.setSyncString(InvestRedisKeys.INVEST_PROJECT_LANG+projectLang.getLang()+":"+project.getId().toString(), JSON.toJSONString(projectLang));
}
@Override
public void delete(String id,List<ProjectLang> projectLangList) {
Project project = this.findById(id);
this.getHibernateTemplate().delete(project);
projectLangList.forEach(e ->{
getHibernateTemplate().delete(e);
});
}
@Override
public void update(Project bean, String name, String lang, String guarantyAgency, String desSafe_text, String desSettle_text, String desUse_text, String projectLanId) {
log.info("是否存在为空 projectLanId = "+projectLanId);
List<ProjectLang> lanByProjectId = this.findLanByProjectId(bean.getId().toString(), lang);
if(CollectionUtils.isEmpty(lanByProjectId)){
ProjectLang projectLang = new ProjectLang();
projectLang.setName(name);
projectLang.setProjectId(bean.getId().toString());
projectLang.setDesSafe(desSafe_text);
projectLang.setGuarantyAgency(guarantyAgency);
projectLang.setDesSettle(desSettle_text);
projectLang.setDesUse(desUse_text);
projectLang.setLang(lang);
getHibernateTemplate().save(projectLang);
redisHandler.setSyncString(InvestRedisKeys.INVEST_PROJECT_LANG+lang+":"+bean.getId().toString(), JSON.toJSONString(projectLang));
} else {
ProjectLang projectLang = lanByProjectId.get(0);
projectLang.setName(name);
projectLang.setDesSafe(desSafe_text);
projectLang.setGuarantyAgency(guarantyAgency);
projectLang.setDesSettle(desSettle_text);
projectLang.setDesUse(desUse_text);
getHibernateTemplate().update(projectLang);
redisHandler.setSyncString(InvestRedisKeys.INVEST_PROJECT_LANG+lang+":"+bean.getId().toString(), JSON.toJSONString(projectLang));
}
this.getHibernateTemplate().update(bean);
}
@Override
public void updateStatus(String id, Integer status) {
Project project = this.findById(id);
if(status!=0){
project.setRecTime(new Date().getTime());
} else {
project.setRecTime(0);
}
this.getHibernateTemplate().update(project);
}
@Override
public void updateRenew(Integer type, Double proportion) {
String sql = "";
if(type == 1){
sql = "UPDATE T_INVEST_PROJECT SET INVEST_PROGRESS_MAN = INVEST_PROGRESS_MAN + " + proportion;
} else {
sql = "UPDATE T_INVEST_PROJECT SET INVEST_PROGRESS_MAN = INVEST_PROGRESS_MAN + INVEST_SELL_ADD";
}
jdbcTemplate.update(sql);
this.getHibernateTemplate().getSessionFactory().getCurrentSession().clear();
}
public void setPagedQueryDao(PagedQueryDao pagedQueryDao) {
this.pagedQueryDao = pagedQueryDao;
}
public void setRedisHandler(RedisHandler redisHandler) {
this.redisHandler = redisHandler;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
}

View File

@@ -0,0 +1,598 @@
package project.invest.project.internal;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import kernel.exception.BusinessException;
import kernel.util.Arith;
import kernel.util.DateUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Property;
import org.hibernate.query.NativeQuery;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import project.Constants;
import project.invest.InvestRedisKeys;
import project.invest.project.ProjectService;
import project.invest.project.model.InvestOrders;
import project.invest.project.model.InvestRebate;
import project.invest.project.model.Project;
import project.invest.vip.VipService;
import project.invest.vip.model.Vip;
import project.log.MoneyLog;
import project.log.MoneyLogService;
import project.party.PartyService;
import project.party.model.Party;
import project.party.model.UserRecom;
import project.party.recom.UserRecomService;
import project.redis.RedisHandler;
import project.user.ChildrenLever;
import project.user.UserDataService;
import project.wallet.Wallet;
import project.wallet.WalletService;
import java.util.Date;
import java.util.List;
import java.util.Map;
public class ProjectServiceImpl extends HibernateDaoSupport implements ProjectService {
private WalletService walletService;
private MoneyLogService moneyLogService;
private PartyService partyService;
private VipService vipService;
private UserRecomService userRecomService;
private UserDataService userDataService;
private RedisHandler redisHandler;
private static Log logger = LogFactory.getLog(ProjectServiceImpl.class);
// @Override
// public List<Category> listCategorys(String lang) {
// DetachedCriteria query = DetachedCriteria.forClass(Category.class);
// query.add( Property.forName("lang").eq(lang) );
// query.addOrder(Order.asc("sort"));
// return (List<Category>) getHibernateTemplate().findByCriteria(query);
// }
@Override
public List<Project> listProjectSell(String baseId, int pageNum, int pageSize) {
DetachedCriteria query = DetachedCriteria.forClass(Project.class);
query.add( Property.forName("baseId").eq(baseId) );
query.add( Property.forName("status").eq(0) );
query.addOrder(Order.asc("sort"));
query.addOrder(Order.desc("createTime"));
return (List<Project>) getHibernateTemplate().findByCriteria(query,(pageNum-1)*pageSize,pageSize);
}
@Override
public List<Project> listProjectHome(int pageNum, int pageSize) {
DetachedCriteria query = DetachedCriteria.forClass(Project.class);
query.add( Property.forName("recTime").gt(0L) );
query.add( Property.forName("status").eq(0) );
query.addOrder(Order.desc("recTime"));
return (List<Project>) getHibernateTemplate().findByCriteria(query,(pageNum-1)*pageSize,pageSize);
}
@Override
public Project getProject(String projectId) {
return this.getHibernateTemplate().get(Project.class, projectId);
}
@Override
public List<InvestOrders> listProjectMy(String partyId, int pageNum, int pageSize) {
DetachedCriteria query = DetachedCriteria.forClass(InvestOrders.class);
query.add( Property.forName("partyId").eq(partyId) );
query.addOrder(Order.desc("createTime"));
return (List<InvestOrders>) getHibernateTemplate().findByCriteria(query,(pageNum-1)*pageSize,pageSize);
}
@Override
public JSONObject getMyInvestInfo(String partyId) {
JSONObject o = new JSONObject();
String sql = "select IFNULL(sum(INCOME_WILL),0), IFNULL(sum(INCOME),0) from T_INVEST_ORDERS where PARTY_ID=?0 and `STATUS` > -1";
NativeQuery<Object[]> nativeQuery = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createNativeQuery(sql);
nativeQuery.setParameter(0,partyId);
Object[] result = nativeQuery.getSingleResult();
double incomeWill = (double) result[0];
double incomeReal = (double) result[1];
o.put("incomeWill",Arith.sub(incomeWill,incomeReal));
o.put("incomeReal",incomeReal);
return o;
}
@Override
public List<InvestRebate> listProjectIncome(String orderId, int pageNum, int pageSize) {
DetachedCriteria query = DetachedCriteria.forClass(InvestRebate.class);
query.add( Property.forName("orderId").eq(orderId) );
query.add( Property.forName("status").eq(0) );
query.add( Property.forName("level").eq(0) );
query.addOrder(Order.desc("realTime"));
return (List<InvestRebate>) getHibernateTemplate().findByCriteria(query,(pageNum-1)*pageSize,pageSize);
}
@Override
public List<InvestRebate> listInvestRebate(String partyId, int pageNum, int pageSize) {
DetachedCriteria query = DetachedCriteria.forClass(InvestRebate.class);
query.add( Property.forName("partyId").eq(partyId) );
query.add( Property.forName("status").eq(0) );
query.addOrder(Order.desc("realTime"));
return (List<InvestRebate>) getHibernateTemplate().findByCriteria(query,(pageNum-1)*pageSize,pageSize);
}
@Override
public JSONObject getProjectIncome(String orderId) {
InvestOrders orders = this.getHibernateTemplate().get(InvestOrders.class, orderId);
JSONObject o = new JSONObject();
o.put("status", orders.getStatus());
o.put("type", orders.getType());
o.put("incomeReal",orders.getIncome());
o.put("amount",orders.getAmount());
double valDay = Arith.mul(orders.getAmount(),orders.getBonusRateVip());
o.put("valDay", Arith.roundDown(valDay,2));
o.put("bonusRate", orders.getBonusRate());
o.put("bonusRateVip", orders.getBonusRateVip());
long pass = System.currentTimeMillis()- orders.getCreateTime().getTime();
if(orders.getType()<=2){
pass /= 3600000L;
}else{
pass /= 86400000L;
}
if(pass>orders.getBonus()){
pass = orders.getBonus();
}
o.put("remainDays",orders.getBonus()-pass) ;
o.put("passDays",pass) ;
o.put("incomeWill",orders.getIncomeWill());
return o;
}
@Override
public Double updateBuyProject(String partyId,String projectId,double amount) {
Project project = getProject(projectId);
if(project.getStatus()==1||project.getEnding()==1||project.getInvestProgressMan()>=1){
throw new BusinessException("该项目已经结束");
}
if(amount<project.getInvestMin()){
throw new BusinessException("输入金额低于起投金额");
}
if(amount>project.getInvestMax()){
throw new BusinessException("输入金额高于最高投资");
}
if(!project.isRepeating()){
DetachedCriteria query = DetachedCriteria.forClass(InvestOrders.class);
query.add( Property.forName("projectId").eq(projectId) );
query.add( Property.forName("partyId").eq(partyId) );
if(getHibernateTemplate().findByCriteria(query).size()>0){
throw new BusinessException("您已经投资该项目");
}
}
Wallet wallet = walletService.saveWalletByPartyId(partyId);
double amount_before = wallet.getMoney();
if(amount>amount_before){
throw new BusinessException("余额不足");
}
wallet.setMoney(Arith.roundDown(Arith.sub(wallet.getMoney(), amount),2));
walletService.update(wallet);
InvestOrders orders = new InvestOrders();
orders.setProjectId(projectId);
orders.setAmount(amount);
orders.setCreateTime(new Date());
orders.setPartyId(partyId);
orders.setStatus(0);
orders.setUpTime(0);
long nextWill = orders.getCreateTime().getTime();
long sucessWill = nextWill;
if(project.getType()==1){
nextWill += 3600000L;
sucessWill += 3600000L*project.getBonus();
}else if(project.getType()==2){
nextWill += 3600000L;
sucessWill += 3600000L*project.getBonus();
}else if(project.getType()==3){
nextWill += 3600000L*24;
sucessWill += 3600000L*24*project.getBonus();
}else if(project.getType()==4){
nextWill += 3600000L*24;
sucessWill += 3600000L*24*project.getBonus();
}
orders.setSucessWill(sucessWill);
orders.setNextWill(nextWill);
orders.setBonus(project.getBonus());
orders.setType(project.getType());
orders.setBonusRate(project.getBonusRate());
orders.setIncome(0D);
orders.setIncomeWill(Arith.mul(project.getBonusRate(),amount));
orders.setIncomeWill(Arith.mul(orders.getIncomeWill(),orders.getBonus()));
orders.setIncomeWill(Arith.roundDown(orders.getIncomeWill(),2));
Party party = partyService.cachePartyBy(partyId, false);
Vip vip = vipService.selectById(party.getVip_level());
if(vip!=null){
orders.setBonusRateVip(project.getBonusRate()+vip.getRebate0());
}
getHibernateTemplate().save(orders);
MoneyLog moneyLog = new MoneyLog();
moneyLog.setCategory(Constants.MONEYLOG_CATEGORY_COIN);
moneyLog.setAmount_before(amount_before);
moneyLog.setAmount(Arith.sub(0, amount));
moneyLog.setAmount_after(wallet.getMoney());
moneyLog.setLog("支付订单[" + orders.getId() + "]");
moneyLog.setPartyId(partyId);
moneyLog.setWallettype(Constants.WALLET);
moneyLog.setContent_type(Constants.MONEYLOG_CONTNET_PAY_ORDER);
moneyLogService.save(moneyLog);
Double point = project.getPointRate()*amount;
walletService.updateInvestPoint(partyId,point.intValue());
InvestRebate rabate1 = null;
InvestRebate rabate2 = null;
String nowString = DateUtils.getLongDate(new Date());
UserRecom recom1 = userRecomService.findByPartyId(partyId);
if(recom1!=null){
rabate1 = new InvestRebate();
rabate1.setPartyId(recom1.getReco_id().toString());
rabate1.setRebate(0);
rabate1.setStatus(1);
rabate1.setCreateTime(nowString);
rabate1.setRealTime(nowString);
rabate1.setLevel(1);
rabate1.setAmount(amount);
rabate1.setOrderId(orders.getId().toString());
rabate1.setOrderPartyId(orders.getPartyId());
UserRecom recom2 = userRecomService.findByPartyId(recom1.getReco_id().toString());
if(recom2!=null){
rabate2 = new InvestRebate();
rabate2.setPartyId(recom2.getReco_id().toString());
rabate2.setRebate(0);
rabate2.setStatus(1);
rabate2.setCreateTime(nowString);
rabate2.setRealTime(nowString);
rabate2.setLevel(2);
rabate2.setAmount(amount);
rabate2.setOrderId(orders.getId().toString());
rabate2.setOrderPartyId(orders.getPartyId());
}
}
if(rabate1!=null){
getHibernateTemplate().save(rabate1);
}
if(rabate2!=null){
getHibernateTemplate().save(rabate2);
}
double add = Arith.div(amount,project.getInvestSize());
add = Arith.roundDown(add,4);
project.setInvestProgress(Arith.roundDown(Arith.add(project.getInvestProgress(),add),4));
project.setInvestProgressMan(Arith.roundDown(Arith.add(project.getInvestProgressMan(),add),4));
getHibernateTemplate().save(project);
userDataService.saveInsvestBuy(partyId,amount);
return 0d;
}
@Override
public List<InvestOrders> listWaiteSettlements() {
DetachedCriteria query = DetachedCriteria.forClass(InvestOrders.class);
query.add( Property.forName("status").eq(0) );
query.add( Property.forName("nextWill").lt(System.currentTimeMillis()) );
return (List<InvestOrders>) getHibernateTemplate().findByCriteria(query,0,100);
}
@Override
public void updateSettlementsOrders(String investOrdersId) {
InvestOrders orders= this.getHibernateTemplate().get(InvestOrders.class, investOrdersId);
if(orders==null||orders.getStatus()!=0){
return;
}
if(orders.getType()==2&&orders.getNextWill()<orders.getSucessWill()){
orders.setNextWill(orders.getNextWill()+3600000L);
this.getHibernateTemplate().update(orders);
return;
}
if(orders.getType()==4&&orders.getNextWill()<orders.getSucessWill()){
orders.setNextWill(orders.getNextWill()+3600000L*24);
this.getHibernateTemplate().update(orders);
return;
}
String lockKey = InvestRedisKeys.INVEST_ORDER_USER_LOCK+orders.getPartyId();
if(!redisHandler.lock(lockKey,20)){
return ;
}
try {
double ben = 0;
double prize ;
double rebate ;
if(orders.getType()==1){
prize = Arith.mul(orders.getAmount(),orders.getBonusRateVip());
prize = Arith.roundDown(prize,2);
rebate = prize;
if(orders.getNextWill()>=orders.getSucessWill()){
prize = Arith.add(orders.getAmount(),prize);
orders.setStatus(2);
ben = orders.getAmount();
}else{
orders.setNextWill(orders.getNextWill()+3600000L);
}
}else if(orders.getType()==3){
prize = Arith.mul(orders.getAmount(),orders.getBonusRateVip());
prize = Arith.roundDown(prize,2);
rebate = prize;
if(orders.getNextWill()>=orders.getSucessWill()){
prize = Arith.add(orders.getAmount(),prize);
orders.setStatus(2);
ben = orders.getAmount();
}else{
orders.setNextWill(orders.getNextWill()+3600000L*24);
}
}else {
prize = orders.getIncomeWill();
rebate = prize;
prize = Arith.add(orders.getAmount(),prize);
orders.setStatus(2);
ben = orders.getAmount();
}
orders.setIncome(Arith.add(orders.getIncome(),rebate));
orders.setUpTime(System.currentTimeMillis());
this.getHibernateTemplate().update(orders);
Wallet wallet = walletService.saveWalletByPartyId(orders.getPartyId());
double amount_before = wallet.getMoney();
wallet.setMoney(Arith.roundDown(Arith.add(wallet.getMoney(), prize),2));
wallet.setRebate(Arith.add(wallet.getRebate(), prize));
walletService.update(wallet);
InvestRebate rabate0 = new InvestRebate();
rabate0.setPartyId(orders.getPartyId());
rabate0.setRebate(rebate);
rabate0.setStatus(0);
rabate0.setCreateTime(DateUtils.getLongDate(new Date()));
rabate0.setRealTime(rabate0.getCreateTime());
rabate0.setLevel(0);
rabate0.setOrderId(orders.getId().toString());
rabate0.setOrderPartyId(orders.getPartyId());
rabate0.setAmount(orders.getAmount());
this.getHibernateTemplate().save(rabate0);
double add = Arith.sub(prize,ben);
MoneyLog moneyLog = new MoneyLog();
moneyLog.setCategory(Constants.MONEYLOG_CATEGORY_COIN);
moneyLog.setAmount_before(amount_before);
moneyLog.setAmount(add);
moneyLog.setAmount_after(Arith.add(amount_before,add));
moneyLog.setLog("投资收益[" + orders.getId() + "]");
moneyLog.setPartyId(orders.getPartyId());
moneyLog.setWallettype(Constants.WALLET);
moneyLog.setContent_type(Constants.MONEYLOG_CONTNET_BONUS);
moneyLogService.save(moneyLog);
if(ben>0){
amount_before = moneyLog.getAmount_after();
moneyLog = new MoneyLog();
moneyLog.setAmount_before(amount_before);
moneyLog.setAmount(ben);
moneyLog.setAmount_after(wallet.getMoney());
moneyLog.setLog("投资返本[" + orders.getId() + "]");
moneyLog.setPartyId(orders.getPartyId());
moneyLog.setWallettype(Constants.WALLET);
moneyLog.setContent_type(Constants.MONEYLOG_CONTNET_RETURNS);
moneyLogService.save(moneyLog);
}
userDataService.saveBrushRebate(orders.getPartyId(),add,0,ben);
}catch (Exception e){
logger.error("分红失败"+orders,e);
}finally {
redisHandler.remove(lockKey);
}
}
@Override
public List<InvestRebate> listWaiteRebate() {
DetachedCriteria query = DetachedCriteria.forClass(InvestRebate.class);
query.add( Property.forName("status").eq(1) );
return (List<InvestRebate>) getHibernateTemplate().findByCriteria(query,0,100);
}
@Override
public boolean updateRebate(String rebateId) {
InvestRebate rebate = this.getHibernateTemplate().get(InvestRebate.class, rebateId);
if(rebate==null||rebate.getStatus()!=1){
logger.error("发佣状态不对");
return false;
}
String lockKey = InvestRedisKeys.INVEST_ORDER_USER_LOCK+rebate.getPartyId();
if(!redisHandler.lock(lockKey,20)){
logger.error("发佣操作并发");
return false;
}
try {
InvestOrders orders = this.getHibernateTemplate().get(InvestOrders.class, rebate.getOrderId());
if(orders ==null){
logger.error("原始订单为空");
return false;
}
Party party = partyService.cachePartyBy(rebate.getPartyId(),false);
Vip vip = vipService.selectById(party.getVip_level());
if(vip==null){
return false;
}
double prize ;
if(rebate.getLevel()==1){
prize = Arith.mul(orders.getAmount(),vip.getRebate1());
}else{
prize = Arith.mul(orders.getAmount(),vip.getRebate2());
}
String nowString = DateUtils.getLongDate(new Date());
rebate.setRealTime(nowString);
rebate.setStatus(0);
rebate.setRebate(prize);
getHibernateTemplate().update(rebate);
Wallet wallet = walletService.saveWalletByPartyId(rebate.getPartyId());
double amount_before = wallet.getMoney();
wallet.setMoney(Arith.roundDown(Arith.add(wallet.getMoney(), prize),2));
wallet.setRebate(Arith.add(wallet.getRebate(), prize));
walletService.update(wallet);
MoneyLog moneyLog = new MoneyLog();
moneyLog.setCategory(Constants.MONEYLOG_CATEGORY_COIN);
moneyLog.setAmount_before(amount_before);
moneyLog.setAmount(Arith.add(0, prize));
moneyLog.setAmount_after(wallet.getMoney());
moneyLog.setLog(rebate.getLevel()+"级佣金[" + rebate.getOrderId() + "]");
moneyLog.setPartyId(rebate.getPartyId());
moneyLog.setWallettype(Constants.WALLET);
moneyLog.setContent_type(Constants.MONEYLOG_CONTNET_REBATE);
moneyLogService.save(moneyLog);
userDataService.saveBrushRebate(rebate.getPartyId(),prize,rebate.getLevel(),0);
if(rebate.getLevel()==1){
vipService.updatePartyVip(rebate.getPartyId());
}
return true;
}catch ( Exception e){
throw new BusinessException(e);
}
finally {
redisHandler.remove(lockKey);
}
}
@Override
public JSONObject getTeamInfo(String partyId) {
ChildrenLever childrenLever = userDataService.getCacheChildrenLever4(partyId);
JSONObject object = new JSONObject();
String sql = "select IFNULL(sum(REBATE),0) from T_INVEST_REBATE where PARTY_ID=?0 and `STATUS` = 0 and `LEVEL`>0";
NativeQuery<Object[]> nativeQuery = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createNativeQuery(sql);
nativeQuery.setParameter(0,partyId);
Object result = nativeQuery.getSingleResult();
object.put("income_already", Arith.round(Double.parseDouble(result.toString()),2));
Date d = new Date();
sql = "select IFNULL(sum(REBATE),0) from T_INVEST_REBATE where PARTY_ID=?0 and `STATUS` = 0 and `LEVEL`>0 and REAL_TIME >?1 and REAL_TIME <=?2";
nativeQuery = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createNativeQuery(sql);
nativeQuery.setParameter(0,partyId);
nativeQuery.setParameter(1,DateUtils.getDayStartString(d));
nativeQuery.setParameter(2,DateUtils.getDayEndString(d));
object.put("income_today", nativeQuery.getSingleResult());
sql = "select count(DISTINCT ORDER_ID) from T_INVEST_REBATE where PARTY_ID=?0 and `LEVEL`>0";
nativeQuery = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createNativeQuery(sql);
nativeQuery.setParameter(0,partyId);
object.put("count_order", nativeQuery.getSingleResult());
object.put("count_people", childrenLever.getLever1().size() + childrenLever.getLever2().size());
object.put("count_people_level1", childrenLever.getLever1().size() );
object.put("count_people_level2", childrenLever.getLever2().size());
sql = "select IFNULL(sum(REBATE),0) from T_INVEST_REBATE where PARTY_ID=?0 and `LEVEL`= 1 ";
nativeQuery = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createNativeQuery(sql);
nativeQuery.setParameter(0,partyId);
result = nativeQuery.getSingleResult();
object.put("rebate_level1", Arith.round(Double.parseDouble(result.toString()),2));
sql = "select IFNULL(sum(REBATE),0) from T_INVEST_REBATE where PARTY_ID=?0 and `LEVEL`= 2 ";
nativeQuery = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createNativeQuery(sql);
nativeQuery.setParameter(0,partyId);
result = nativeQuery.getSingleResult();
object.put("rebate_level2", Arith.round(Double.parseDouble(result.toString()),2));
return object;
}
@Override
public JSONArray listRebateByLevel(String partyId, int level, int pageNum, int pageSize) {
JSONArray jsonArray = new JSONArray();
for(Map<String, Object> rebateMap : userDataService.getChildrenLevelPagedForBrush(pageNum,pageSize,partyId,level)){
JSONObject o = new JSONObject();
String username = rebateMap.get("username").toString();
if(username.length()>3){
username = username.substring(0, 3) + "***" + username.substring(username.length() - 3);
}
o.put("username", username);
o.put("regTime",rebateMap.get("createTime"));
o.put("rebate",Arith.roundDown(Double.parseDouble(rebateMap.get("rebate").toString()),2));
o.put("avatar", rebateMap.get("avatar"));
o.put("countOrder",rebateMap.get("countOrder"));
jsonArray.add(o);
}
return jsonArray;
}
public void setWalletService(WalletService walletService) {
this.walletService = walletService;
}
public void setMoneyLogService(MoneyLogService moneyLogService) {
this.moneyLogService = moneyLogService;
}
public void setPartyService(PartyService partyService) {
this.partyService = partyService;
}
public void setVipService(VipService vipService) {
this.vipService = vipService;
}
public void setUserRecomService(UserRecomService userRecomService) {
this.userRecomService = userRecomService;
}
public void setUserDataService(UserDataService userDataService) {
this.userDataService = userDataService;
}
public void setRedisHandler(RedisHandler redisHandler) {
this.redisHandler = redisHandler;
}
}

View File

@@ -0,0 +1,72 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="project.invest.project.model.ExchangeOrder" table="T_EXCHANGE_ORDER">
<id name="id" type="java.lang.String">
<column name="UUID" />
<generator class="uuid.hex" />
</id>
<property name="partyId" type="java.lang.String">
<column name="PARTY_ID" />
</property>
<property name="symbol" type="java.lang.String">
<column name="SYMBOL" />
</property>
<property name="symbolValue" type="double">
<column name="SYMBOL_VALUE" />
</property>
<property name="symbolPrice" type="double">
<column name="SYMBOL_PRICE" />
</property>
<property name="rata" type="double">
<column name="RATA" />
</property>
<property name="orderPriceType" type="java.lang.String">
<column name="ORDER_PRICE_TYPE" />
</property>
<property name="orderPriceAmount" type="double">
<column name="ORDER_PRICE_AMOUNT" />
</property>
<property name="currency_symbol" type="java.lang.String" update="false">
<column name="CURRENCY_SYMBOL" />
</property>
<property name="payType" type="java.lang.Integer">
<column name="PAY_TYPE" />
</property>
<property name="bankName" type="java.lang.String">
<column name="BANK_NAME" />
</property>
<property name="bankAccount" type="java.lang.String">
<column name="BANK_ACCOUNT" />
</property>
<property name="remark" type="java.lang.String">
<column name="REMARK" />
</property>
<property name="staus" type="java.lang.Integer">
<column name="STAUS" />
</property>
<property name="realAmount" type="double">
<column name="REAL_AMOUNT" />
</property>
<property name="reviewTime" type="timestamp">
<column name="REVIEW_TIME" />
</property>
<property name="createTime" type="timestamp">
<column name="CREATE_TIME" />
</property>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,90 @@
package project.invest.project.model;
import kernel.bo.EntityObject;
import lombok.Data;
import java.util.Date;
@Data
public class ExchangeOrder extends EntityObject {
/**
* 用户id
*/
private String partyId;
/**
* 出售币种(虚拟币)
*/
private String symbol;
/**
* 出售币种数量
*/
private double symbolValue;
/**
* 出售币种单价
*/
private double symbolPrice;
/**
* 汇率
*/
private double rata;
/**
* 驳回原因
*/
private String remark;
/**
* 购买币种(法币)
*/
private String orderPriceType;
/**
* 购买数量
*/
private double orderPriceAmount;
/**
* 货币符号
*/
private String currency_symbol;
/**
* 0=银行卡
*/
private Integer payType;
/**
* 开户行名称
*/
private String bankName;
/**
* 卡号
*/
private String bankAccount;
/**
* 0=处理中1=成功2=失败
*/
private Integer staus;
/**
* 到账金额
*/
private double realAmount;
/**
* 审核时间
*/
private Date reviewTime;
/**
* 创建时间
*/
private Date createTime;
}

View File

@@ -0,0 +1,69 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="project.invest.project.model.InvestOrders" table="T_INVEST_ORDERS">
<id name="id" type="java.lang.String">
<column name="UUID" />
<generator class="uuid.hex" />
</id>
<property name="projectId" type="java.lang.String">
<column name="PROJECT_ID" />
</property>
<property name="partyId" type="java.lang.String">
<column name="PARTY_ID" />
</property>
<property name="amount" type="double">
<column name="AMOUNT" />
</property>
<property name="createTime" type="timestamp">
<column name="CREATE_TIME" />
</property>
<property name="auditsTime" type="timestamp">
<column name="AUDITS_TIME" />
</property>
<property name="upTime" type="long">
<column name="UP_TIME" />
</property>
<property name="status" type="java.lang.Integer">
<column name="STATUS" />
</property>
<property name="bonusRate" type="double">
<column name="BONUS_RATE" />
</property>
<property name="bonusRateVip" type="double">
<column name="BONUS_RATE_VIP" />
</property>
<property name="bonus" type="java.lang.Integer">
<column name="BONUS" />
</property>
<property name="type" type="java.lang.Integer">
<column name="TYPE" />
</property>
<property name="income" type="double">
<column name="INCOME" />
</property>
<property name="incomeWill" type="double">
<column name="INCOME_WILL" />
</property>
<property name="sucessWill" type="java.lang.Long">
<column name="SUCESS_WILL" />
</property>
<property name="nextWill" type="java.lang.Long">
<column name="NEXT_WILL" />
</property>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,91 @@
package project.invest.project.model;
import kernel.bo.EntityObject;
import lombok.Data;
import java.util.Date;
@Data
public class InvestOrders extends EntityObject {
private static final long serialVersionUID = -6585270719884278L;
/**
* 项目ID
*/
private String projectId;
/**
* 会员ID
*/
private String partyId;
/**
* 投资金额
*/
private double amount;
/**
* 创建时间
*/
private Date createTime;
/**
* 最后审批时间
*/
private Date auditsTime;
/**
* 状态:(-1=取消0=进行中1=关闭2=已完成)
*/
private int status;
/**
* 分红比例
*/
private double bonusRate;
/**
* 分红比例+Vip
*/
private double bonusRateVip;
/**
* 锁仓期限
*/
private Integer bonus;
/**
* 1=按小时付收益,到期返本;
* 2=按小时算收益,到期返本+分红;
* 3=按天付收益,到期返本;
* 4=按天算收益,到期返本+分红
*/
private Integer type;
/**
* 收益
*/
private double income;
/**
* 预计产值
*/
private double incomeWill;
/**
* 结束时间
*/
private Long sucessWill;
/**
* 下次分红时间(可能尾付)
*/
private Long nextWill;
/**
* 最后分红时间
*/
private long upTime;
}

View File

@@ -0,0 +1,48 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="project.invest.project.model.InvestRebate" table="T_INVEST_REBATE">
<id name="id" type="java.lang.String">
<column name="UUID" />
<generator class="uuid.hex" />
</id>
<property name="partyId" type="java.lang.String">
<column name="PARTY_ID" />
</property>
<property name="orderPartyId" type="java.lang.String">
<column name="ORDER_PARTY_ID" />
</property>
<property name="status" type="java.lang.Integer">
<column name="STATUS" />
</property>
<property name="rebate" type="double">
<column name="REBATE" />
</property>
<property name="amount" type="double">
<column name="AMOUNT" />
</property>
<property name="level" type="java.lang.Integer">
<column name="LEVEL" />
</property>
<property name="orderId" type="java.lang.String">
<column name="ORDER_ID" />
</property>
<property name="createTime" type="java.lang.String">
<column name="CREATE_TIME" />
</property>
<property name="realTime" type="java.lang.String">
<column name="REAL_TIME" />
</property>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,39 @@
package project.invest.project.model;
import kernel.bo.EntityObject;
import lombok.Data;
@Data
public class InvestRebate extends EntityObject {
private static final long serialVersionUID = -324021713418425625L;
private String partyId;
private String orderPartyId;
/**
* 佣金
*/
private double rebate;
/**
* 投资金额
*/
private double amount;
private String orderId;
/**
* 0=已发放1=待发送
*/
private int status;
private int level;
private String createTime;
private String realTime;
}

View File

@@ -0,0 +1,68 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="project.invest.project.model.Project" table="T_INVEST_PROJECT">
<id name="id" type="java.lang.String">
<column name="UUID" />
<generator class="uuid.hex" />
</id>
<property name="bonusRate" type="double">
<column name="BONUS_RATE" />
</property>
<property name="bonus" type="java.lang.Integer">
<column name="BONUS" />
</property>
<property name="ending" type="java.lang.Integer">
<column name="ENDING" />
</property>
<property name="status" type="java.lang.Integer">
<column name="STATUS" />
</property>
<property name="type" type="java.lang.Integer">
<column name="TYPE" />
</property>
<property name="baseId" type="java.lang.String">
<column name="BASE_ID" />
</property>
<property name="iconImg" type="java.lang.String">
<column name="ICON_IMG" />
</property>
<property name="sort" type="int">
<column name="SORT" />
</property>
<property name="investSize" type="double">
<column name="INVEST_SIZE" />
</property>
<property name="investProgress" type="double">
<column name="INVEST_PROGRESS" />
</property>
<property name="investProgressMan" type="double">
<column name="INVEST_PROGRESS_MAN" />
</property>
<property name="investSellAdd" type="double">
<column name="INVEST_SELL_ADD" />
</property>
<property name="investMin" type="double">
<column name="INVEST_MIN" />
</property>
<property name="investMax" type="double">
<column name="INVEST_MAX" />
</property>
<property name="pointRate" type="double">
<column name="POINT_RATE" />
</property>
<property name="recTime" type="java.lang.Long">
<column name="REC_TIME" />
</property>
<property generated="never" name="repeating" type="yes_no">
<column name="REPEATING" />
</property>
<property name="upTime" type="java.lang.Long">
<column name="UP_TIME" />
</property>
<property name="createTime" type="timestamp">
<column name="CREATE_TIME" />
</property>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,260 @@
package project.invest.project.model;
import kernel.bo.EntityObject;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
public class Project extends EntityObject {
/**
* 分红比例
*/
private double bonusRate;
/**
* 锁仓期限
*/
private Integer bonus;
/**
* 状态0-进行中 1-结束
*/
private Integer ending;
/**
* 状态0-启用 1-禁用
*/
private Integer status;
/**
* 1=按小时付收益,到期返本;
* 2=按小时算收益,到期返本+分红;
* 3=按天付收益,到期返本;
* 4=按天算收益,到期返本+分红
*/
private Integer type;
/**
* 父类类型ID
*/
private String baseId;
/**
* 图标
*/
private String iconImg;
/**
* 排序
*/
private Integer sort;
/**
* 投资规模
*/
private double investSize;
/**
* 投资进度
*/
private double investProgress;
/**
* 虚假进度
*/
private double investProgressMan;
/**
* 已售增量
*/
private double investSellAdd;
/**
* 起投金额
*/
private double investMin;
/**
* 最大投资
*/
private double investMax;
/**
* 积分赠送比例
*/
private double pointRate;
/**
* 推荐时间0=不推荐)
*/
private long recTime;
/**
* 是否重投
*/
private boolean repeating;
/**
* 更新时间
*/
private long upTime;
/**
* 创建时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
public double getBonusRate() {
return bonusRate;
}
public void setBonusRate(double bonusRate) {
this.bonusRate = bonusRate;
}
public Integer getBonus() {
return bonus;
}
public void setBonus(Integer bonus) {
this.bonus = bonus;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getBaseId() {
return baseId;
}
public void setBaseId(String baseId) {
this.baseId = baseId;
}
public String getIconImg() {
return iconImg;
}
public void setIconImg(String iconImg) {
this.iconImg = iconImg;
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public double getInvestSize() {
return investSize;
}
public void setInvestSize(double investSize) {
this.investSize = investSize;
}
public double getInvestProgress() {
return investProgress;
}
public void setInvestProgress(double investProgress) {
this.investProgress = investProgress;
}
public double getInvestProgressMan() {
return investProgressMan;
}
public void setInvestProgressMan(double investProgressMan) {
this.investProgressMan = investProgressMan;
}
public double getInvestSellAdd() {
return investSellAdd;
}
public void setInvestSellAdd(double investSellAdd) {
this.investSellAdd = investSellAdd;
}
public double getInvestMin() {
return investMin;
}
public void setInvestMin(double investMin) {
this.investMin = investMin;
}
public double getInvestMax() {
return investMax;
}
public void setInvestMax(double investMax) {
this.investMax = investMax;
}
public double getPointRate() {
return pointRate;
}
public void setPointRate(double pointRate) {
this.pointRate = pointRate;
}
public long getRecTime() {
return recTime;
}
public void setRecTime(long recTime) {
this.recTime = recTime;
}
public boolean isRepeating() {
return repeating;
}
public void setRepeating(boolean repeating) {
this.repeating = repeating;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Integer getEnding() {
return ending;
}
public void setEnding(Integer ending) {
this.ending = ending;
}
public long getUpTime() {
return upTime;
}
public void setUpTime(long upTime) {
this.upTime = upTime;
}
}

View File

@@ -0,0 +1,32 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="project.invest.project.model.ProjectLang" table="T_INVEST_PROJECT_LANG">
<id name="id" type="java.lang.String">
<column name="UUID" />
<generator class="uuid.hex" />
</id>
<property name="projectId" type="java.lang.String">
<column name="PROJECT_ID" />
</property>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="lang" type="java.lang.String">
<column name="LANG" />
</property>
<property name="guarantyAgency" type="java.lang.String">
<column name="GUARANTY_AGENCY" />
</property>
<property name="desSettle" type="java.lang.String">
<column name="DES_SETTLE" />
</property>
<property name="desUse" type="java.lang.String">
<column name="DES_USE" />
</property>
<property name="desSafe" type="java.lang.String">
<column name="DES_SAFE" />
</property>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,101 @@
package project.invest.project.model;
import kernel.bo.EntityObject;
import java.util.Date;
public class ProjectLang extends EntityObject {
/**
* 项目ID
*/
private String projectId;
/**
* 名称
*/
private String name;
/**
* 语言
*/
private String lang;
/**
* 担保机构
*/
private String guarantyAgency;
/**
* 结算时间
*/
private String desSettle;
/**
* 资金用途
*/
private String desUse;
/**
* 安全保障
*/
private String desSafe;
public String getProjectId() {
return projectId;
}
public void setProjectId(String projectId) {
this.projectId = projectId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLang() {
return lang;
}
public void setLang(String lang) {
this.lang = lang;
}
public String getGuarantyAgency() {
return guarantyAgency;
}
public void setGuarantyAgency(String guarantyAgency) {
this.guarantyAgency = guarantyAgency;
}
public String getDesSettle() {
return desSettle;
}
public void setDesSettle(String desSettle) {
this.desSettle = desSettle;
}
public String getDesUse() {
return desUse;
}
public void setDesUse(String desUse) {
this.desUse = desUse;
}
public String getDesSafe() {
return desSafe;
}
public void setDesSafe(String desSafe) {
this.desSafe = desSafe;
}
}

View File

@@ -0,0 +1,59 @@
package project.invest.task;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import project.invest.project.ProjectService;
import project.invest.project.model.InvestOrders;
import project.invest.project.model.InvestRebate;
import java.util.List;
/**
* 60秒
*/
public class InvestOrdersJob {
protected ProjectService projectService;
private static Log logger = LogFactory.getLog(InvestOrdersJob.class);
/**
* 分红
*/
public void taskSettlementsJob() {
long start = System.currentTimeMillis();
logger.error("**********分红订单开始**********");
List<InvestOrders> list = projectService.listWaiteSettlements();
for(InvestOrders brushOrders:list){
//异步
projectService.updateSettlementsOrders(brushOrders.getId().toString());
}
logger.error("分红单数:"+list.size()+",花费时间:"+(System.currentTimeMillis()-start)+"ms");
}
/**
* 推广佣金(1.2级)
*/
public void taskPromoteJob() {
long start = System.currentTimeMillis();
logger.error("**********佣金发送开始**********");
List<InvestRebate> list = projectService.listWaiteRebate();
for(InvestRebate rebate:list){
try {
projectService.updateRebate(rebate.getId().toString());
}catch (Exception e){
logger.error("定时分佣异常",e);
}
//异步
}
logger.error("佣金发送单数:"+list.size()+",花费时间:"+(System.currentTimeMillis()-start)+"ms");
}
public void setProjectService(ProjectService projectService) {
this.projectService = projectService;
}
}

View File

@@ -0,0 +1,14 @@
package project.invest.vip;
import kernel.web.Page;
import project.invest.vip.model.Vip;
import project.mall.seller.model.MallLevel;
public interface AdminVipService {
Page pagedQuery();
MallLevel findById(String id);
void update(MallLevel mallLevel);
}

View File

@@ -0,0 +1,27 @@
package project.invest.vip;
import project.invest.platform.BrushClient;
import project.invest.vip.model.Vip;
import project.party.model.Party;
import util.TwoValues;
import java.util.List;
import java.util.Map;
public interface VipService {
List<Vip> listVip();
Vip selectById(int vip_level);
TwoValues<Integer,Double> getInvestPromotion(String partyId);
void updatePartyVip(String partyId);
BrushClient getBrushClient(String id);
}

View File

@@ -0,0 +1,37 @@
package project.invest.vip.impl;
import kernel.web.Page;
import kernel.web.PagedQueryDao;
import org.hibernate.Criteria;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import project.invest.vip.AdminVipService;
import project.invest.vip.model.Vip;
import project.mall.seller.model.MallLevel;
public class AdminVipServiceImpl extends HibernateDaoSupport implements AdminVipService {
private PagedQueryDao pagedQueryDao;
@Override
public Page pagedQuery() {
Criteria criteria = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(MallLevel.class);
Page page = new Page();
page.setElements(criteria.list());
return page;
}
@Override
public MallLevel findById(String id) {
return this.getHibernateTemplate().get(MallLevel.class, id);
}
@Override
public void update(MallLevel mallLevel) {
this.getHibernateTemplate().update(mallLevel);
}
public void setPagedQueryDao(PagedQueryDao pagedQueryDao) {
this.pagedQueryDao = pagedQueryDao;
}
}

View File

@@ -0,0 +1,131 @@
package project.invest.vip.internal;
import kernel.util.Arith;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.query.NativeQuery;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import org.springframework.stereotype.Service;
import project.invest.platform.BrushClient;
import project.invest.vip.VipService;
import project.invest.vip.model.Vip;
import project.log.MoneyLogService;
import project.party.PartyService;
import project.party.model.Party;
import project.user.ChildrenLever;
import project.user.UserDataService;
import project.wallet.WalletService;
import util.TwoValues;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@Service
public class VipServiceImpl extends HibernateDaoSupport implements VipService {
private JdbcTemplate jdbcTemplate;
private WalletService walletService;
private MoneyLogService moneyLogService;
private PartyService partyService;
private UserDataService userDataService;
@Override
public List<Vip> listVip() {
DetachedCriteria query = DetachedCriteria.forClass(Vip.class);
return (List<Vip>) getHibernateTemplate().findByCriteria(query);
}
@Override
public Vip selectById(int vip_level) {
Vip vip = this.getHibernateTemplate().get(Vip.class, vip_level + "");
return vip;
}
@Override
public TwoValues<Integer, Double> getInvestPromotion(String partyId) {
ChildrenLever childrenLever = userDataService.getCacheChildrenLever4(partyId);
TwoValues<Integer, Double> rn = new TwoValues<Integer, Double>();
rn.setOne(childrenLever.getLever1().size());
String sql = "select IFNULL(sum(AMOUNT),0) from T_INVEST_REBATE where PARTY_ID=?0 and `LEVEL`= 1";
NativeQuery<Object[]> nativeQuery = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createNativeQuery(sql);
nativeQuery.setParameter(0,partyId);
Object result = nativeQuery.getSingleResult();
rn.setTwo(Arith.round(Double.parseDouble(result.toString()),2));
return rn;
}
@Override
public void updatePartyVip(String partyId) {
Party party = partyService.cachePartyBy(partyId, false);
Vip v = selectById(party.getVip_level()+1);
if(v==null){
return;
}
TwoValues<Integer, Double> in = getInvestPromotion(partyId);
if(in.getOne()>=v.getSubCount()&&in.getTwo()>=v.getSubSales()){
party.setVip_level(party.getVip_level()+1);
partyService.update(party);
}
}
@Override
public BrushClient getBrushClient(String id) {
BrushClient client = this.getHibernateTemplate().get(BrushClient.class, id);
return client;
}
public static Date beforeOrAfterNumberDay(int day) {
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, day);
return calendar.getTime();
}
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public WalletService getWalletService() {
return walletService;
}
public void setWalletService(WalletService walletService) {
this.walletService = walletService;
}
public MoneyLogService getMoneyLogService() {
return moneyLogService;
}
public void setMoneyLogService(MoneyLogService moneyLogService) {
this.moneyLogService = moneyLogService;
}
public PartyService getPartyService() {
return partyService;
}
public void setPartyService(PartyService partyService) {
this.partyService = partyService;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void setUserDataService(UserDataService userDataService) {
this.userDataService = userDataService;
}
}

View File

@@ -0,0 +1,63 @@
package project.invest.vip.model;
import kernel.bo.EntityObject;
import lombok.Data;
@Data
public class Vip extends EntityObject {
/**
* VIP名称
*/
private String name;
/**
* 推广人数
*/
private int subCount = 0;
/**
* 直接推总业绩
*/
private double subSales;
/**
* 佣金(自己)
*/
private double rebate0;
/**
* 佣金(1级)
*/
private double rebate1;
/**
* 佣金(2级)
*/
private double rebate2;
/**
* 每日提现次数
*/
private int mustNumber;
/**
* 最小提现金额
*/
private int withdrawalMin;
/**
* 最大提现金额
*/
private int withdrawalMax;
/**
* 大图标
*/
private String iconBig;
/**
* '是否启用 0-启用1-禁用'
*/
private int status;
}

View File

@@ -0,0 +1,45 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="project.invest.vip.model.Vip" table="T_INVEST_VIP">
<id name="id" type="java.lang.String">
<column name="UUID" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="subSales" type="java.lang.Double">
<column name="SUB_SALES" />
</property>
<property name="subCount" type="java.lang.Integer">
<column name="SUB_COUNT" />
</property>
<property name="rebate0" type="java.lang.Double">
<column name="REBATE_0" />
</property>
<property name="rebate1" type="java.lang.Double">
<column name="REBATE_1" />
</property>
<property name="rebate2" type="java.lang.Double">
<column name="REBATE_2" />
</property>
<property name="mustNumber" type="java.lang.Integer">
<column name="MUST_NUMBER" />
</property>
<property name="withdrawalMin" type="java.lang.Integer">
<column name="WITHDRAWAL_MIN" />
</property>
<property name="withdrawalMax" type="java.lang.Integer">
<column name="WITHDRAWAL_MAX" />
</property>
<property name="iconBig" type="java.lang.String">
<column name="ICON_BIG" />
</property>
<property name="status" type="java.lang.Integer">
<column name="STATUS" />
</property>
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,11 @@
package project.invest.walletday;
import kernel.web.Page;
public interface WalletDayService {
Page pagedQuery(int pageNo, int pageSize);
void updateWalletDay(double amount);
}

View File

@@ -0,0 +1,59 @@
package project.invest.walletday.impl;
import kernel.util.UUIDGenerator;
import kernel.web.Page;
import kernel.web.PagedQueryDao;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import project.invest.walletday.WalletDayService;
import project.wallet.WalletDay;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class WalletDayServiceImpl extends HibernateDaoSupport implements WalletDayService {
private Logger log = LoggerFactory.getLogger(WalletDayServiceImpl.class);
private PagedQueryDao pagedQueryDao;
@Override
public Page pagedQuery(int pageNo, int pageSize) {
StringBuffer queryString = new StringBuffer();
queryString.append("SELECT t.AMOUNT amount, t.CREATE_TIME createTime FROM T_WALLET_DAY t ORDER BY t.CREATE_TIME DESC ");
Map<String, Object> parameters = new HashMap<String, Object>();
Page page = pagedQueryDao.pagedQuerySQL(pageNo, pageSize, queryString.toString(), parameters);
List<Map> list = page.getElements();
for (Map map : list) {
map.put("amount", new BigDecimal((Double) map.get("amount")).setScale(8, RoundingMode.FLOOR).toPlainString());
}
return page;
}
/**
* 每日凌晨更新汇总用户余额
* @param amount
*/
@Override
public void updateWalletDay(double amount) {
WalletDay walletDay = new WalletDay();
walletDay.setId(UUIDGenerator.getUUID());
walletDay.setAmount(amount);
walletDay.setCreateTime(new Date());
getHibernateTemplate().save(walletDay);
}
public PagedQueryDao getPagedQueryDao() {
return pagedQueryDao;
}
public void setPagedQueryDao(PagedQueryDao pagedQueryDao) {
this.pagedQueryDao = pagedQueryDao;
}
}

View File

@@ -0,0 +1,308 @@
package project.web.admin;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import kernel.exception.BusinessException;
import kernel.util.Arith;
import kernel.util.JsonUtils;
import kernel.web.PageActionSupport;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.checkerframework.checker.units.qual.A;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.security.providers.encoding.PasswordEncoder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import project.Constants;
import project.invest.goods.model.GoodsLang;
import project.invest.vip.AdminVipService;
import project.invest.vip.model.Vip;
import project.log.LogService;
import project.mall.seller.constant.UpgradeMallLevelCondParamTypeEnum;
import project.mall.seller.dto.MallLevelCondExpr;
import project.mall.seller.dto.MallLevelDTO;
import project.mall.seller.dto.QueryMallLevelDTO;
import project.mall.seller.model.MallLevel;
import project.user.googleauth.GoogleAuthService;
import security.SecUser;
import security.internal.SecUserService;
import util.DateUtil;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* vip配置
*/
@Slf4j
@RestController
@RequestMapping("/brush/vip")
public class AdminVipController extends PageActionSupport {
private static Log logger = LogFactory.getLog(AdminVipController.class);
@Resource
protected AdminVipService adminVipService;
@Resource
private SecUserService secUserService;
@Resource
protected LogService logService;
@Resource
protected PasswordEncoder passwordEncoder;
@Resource
protected GoogleAuthService googleAuthService;
@RequestMapping("/list.action")
public ModelAndView list(HttpServletRequest request) {
this.checkAndSetPageNo(request.getParameter("pageNo"));
this.pageSize = 30;
String message = request.getParameter("message");
String error = request.getParameter("error");
this.page = this.adminVipService.pagedQuery();
ModelAndView model = new ModelAndView();
List<QueryMallLevelDTO> levelInfoList = new ArrayList();
List<MallLevel> list = page.getElements();
for (MallLevel mallLevel : list) {
mallLevel.setProfitRationMin(Arith.mul(mallLevel.getProfitRationMin(),100));
mallLevel.setProfitRationMax(Arith.mul(mallLevel.getProfitRationMax(),100));
mallLevel.setSellerDiscount(Arith.mul(mallLevel.getSellerDiscount(),100));
MallLevelCondExpr mallLevelCondExpr = JsonUtils.json2Object(mallLevel.getCondExpr(), MallLevelCondExpr.class);
List<MallLevelCondExpr.Param> params = mallLevelCondExpr.getParams();
QueryMallLevelDTO oneDto = new QueryMallLevelDTO();
BeanUtil.copyProperties(mallLevel, oneDto);
params.forEach(e ->{
if (e.getCode().equals(UpgradeMallLevelCondParamTypeEnum.RECHARGE_AMOUNT.getCode())){
oneDto.setRechargeAmount(Long.parseLong(e.getValue()));
}
if (e.getCode().equals(UpgradeMallLevelCondParamTypeEnum.POPULARIZE_UNDERLING_NUMBER.getCode())){
oneDto.setPopularizeUserCount(Long.parseLong(e.getValue()));
}
});
levelInfoList.add(oneDto);
}
model.addObject("page", levelInfoList);
model.addObject("message", message);
model.addObject("error", error);
model.setViewName("admin_vip_list");
return model;
}
/**
* 跳转修改页面
*/
@RequestMapping(value = "/toUpdate.action")
public ModelAndView toUpdate(HttpServletRequest request) {
ModelAndView model = new ModelAndView();
MallLevel mallLevel;
model.setViewName("admin_vip_update");
try {
String id = request.getParameter("id");
if( id == null ){
throw new BusinessException("系统错误");
}
mallLevel = adminVipService.findById(id);
if(mallLevel == null) {
throw new BusinessException("刷新重试");
}
mallLevel.setProfitRationMin(Arith.mul(mallLevel.getProfitRationMin(),100));
mallLevel.setProfitRationMax(Arith.mul(mallLevel.getProfitRationMax(),100));
mallLevel.setSellerDiscount(Arith.mul(mallLevel.getSellerDiscount(),100));
if (null !=mallLevel.getCondExpr()){
MallLevelCondExpr mallLevelCondExpr = JsonUtils.json2Object(mallLevel.getCondExpr(), MallLevelCondExpr.class);
List<MallLevelCondExpr.Param> params = mallLevelCondExpr.getParams();
params.forEach(e ->{
if (e.getCode().equals(UpgradeMallLevelCondParamTypeEnum.RECHARGE_AMOUNT.getCode())){
model.addObject("rechargeAmount",e.getValue());
}
if (e.getCode().equals(UpgradeMallLevelCondParamTypeEnum.POPULARIZE_UNDERLING_NUMBER.getCode())){
model.addObject("popularizeUserCount",e.getValue());
}
if (e.getCode().equals(UpgradeMallLevelCondParamTypeEnum.TEAM_NUM.getCode())){
model.addObject("teamNum",e.getValue());
}
});
}
} catch (BusinessException e) {
model.addObject("error", e.getMessage());
return model;
} catch (Throwable t) {
logger.error(" error ", t);
model.addObject("error", "[ERROR] " + t.getMessage());
return model;
}
model.addObject("mallLevel",mallLevel);
return model;
}
/**
* 修改游戏
* @return
*/
@RequestMapping(value = "/update.action")
public ModelAndView update(@RequestParam Map<String, String> paramMap, MallLevel mallLevel) {
String login_safeword = paramMap.get("login_safeword");
ModelAndView model = new ModelAndView();
String rechargeAmount = paramMap.get("rechargeAmount");
String popularizeUserCount = paramMap.get("popularizeUserCount");
String teamNum = paramMap.get("teamNum");
try {
if(null == mallLevel ||mallLevel.getId()==null) {
throw new BusinessException("参数错误");
}
SecUser sec = this.secUserService.findUserByLoginName(this.getUsername_login());
// checkGoogleAuthCode(sec,google_auth_code);
checkLoginSafeword(sec,this.getUsername_login(),login_safeword);
MallLevel data = adminVipService.findById(mallLevel.getId().toString());
if(null == data){
throw new BusinessException("此会员等级不存在,请刷新页面");
}
rechargeAmount = rechargeAmount == null ? "1" : rechargeAmount;
popularizeUserCount = popularizeUserCount == null ? "1" : popularizeUserCount;
MallLevelCondExpr mallLevelCondExpr = new MallLevelCondExpr();
List<MallLevelCondExpr.Param> paramList = new ArrayList<>();
paramList.add(new MallLevelCondExpr.Param(UpgradeMallLevelCondParamTypeEnum.RECHARGE_AMOUNT.getCode(),UpgradeMallLevelCondParamTypeEnum.RECHARGE_AMOUNT.getTitle(),rechargeAmount));
paramList.add(new MallLevelCondExpr.Param(UpgradeMallLevelCondParamTypeEnum.POPULARIZE_UNDERLING_NUMBER.getCode(),UpgradeMallLevelCondParamTypeEnum.POPULARIZE_UNDERLING_NUMBER.getTitle(),popularizeUserCount));
paramList.add(new MallLevelCondExpr.Param(UpgradeMallLevelCondParamTypeEnum.TEAM_NUM.getCode(),UpgradeMallLevelCondParamTypeEnum.TEAM_NUM.getTitle(),teamNum));
mallLevelCondExpr.setParams(paramList);
StringBuilder expression = new StringBuilder();
if ("0".equals(teamNum)) {//如果团队人数为0就未开启团队人数校验
//popularizeUserCount >= 3 || rechargeAmount >= 5000
expression.append("#"+UpgradeMallLevelCondParamTypeEnum.POPULARIZE_UNDERLING_NUMBER.getCode());
expression.append(" >= ").append(popularizeUserCount).append(" || ");
expression.append("#"+UpgradeMallLevelCondParamTypeEnum.RECHARGE_AMOUNT.getCode());
expression.append(" >= ").append(rechargeAmount);
}else {
// ( #popularizeUserCount >= 1 && #teamNum >= 2 ) || #rechargeAmount >= 5000
expression.append("(#"+UpgradeMallLevelCondParamTypeEnum.POPULARIZE_UNDERLING_NUMBER.getCode()).append(" >= ").append(popularizeUserCount)
.append(" && ").append("#"+UpgradeMallLevelCondParamTypeEnum.TEAM_NUM.getCode()).append(" >= ").append(teamNum).append(")");
expression.append(" || ");
expression.append("#"+UpgradeMallLevelCondParamTypeEnum.RECHARGE_AMOUNT.getCode());
expression.append(" >= ").append(rechargeAmount);
}
mallLevelCondExpr.setExpression(expression.toString());
mallLevel.setTeamNum(Integer.parseInt(teamNum));
mallLevel.setUpdateBy(getUsername_login());
mallLevel.setUpdateTime(new Date());
mallLevel.setProfitRationMin(Arith.div(mallLevel.getProfitRationMin(),100));
mallLevel.setProfitRationMax(Arith.div(mallLevel.getProfitRationMax(),100));
mallLevel.setSellerDiscount(Arith.div(mallLevel.getSellerDiscount(),100));
mallLevel.setCondExpr(JsonUtils.bean2Json(mallLevelCondExpr));
adminVipService.update(mallLevel);
project.log.Log log = new project.log.Log();
log.setCategory(Constants.LOG_CATEGORY_OPERATION);
log.setUsername(sec.getUsername());
log.setOperator(this.getUsername_login());
double rechargeAmounts = 0;
Long popularizeUserCounts = null;
Long teamNums = null;
if (null != data.getCondExpr()){
MallLevelCondExpr mallLevelCondExprs = JsonUtils.json2Object(mallLevel.getCondExpr(), MallLevelCondExpr.class);
List<MallLevelCondExpr.Param> params = mallLevelCondExprs.getParams();
for (MallLevelCondExpr.Param param : params) {
if (param.getCode().equals(UpgradeMallLevelCondParamTypeEnum.RECHARGE_AMOUNT.getCode())){
rechargeAmounts = Double.parseDouble(param.getValue());
}
if (param.getCode().equals(UpgradeMallLevelCondParamTypeEnum.POPULARIZE_UNDERLING_NUMBER.getCode())){
popularizeUserCounts = Long.parseLong(param.getValue());
}
if (param.getCode().equals(UpgradeMallLevelCondParamTypeEnum.TEAM_NUM.getCode())){
teamNums = Long.parseLong(param.getValue());
}
}
}
String logs = MessageFormat.format("ip:" + this.getIp() + ",修改会员等级:{0}前参数,累计充值:{1},推广有效人数:{2},团队人数:{3},全球到货时间:{4}," +
"卖家优惠折扣:{5},利润比例:{6},每日流量:{7},每小时最小流量:{8},每小时流量波动范围:{9},升级礼金:{10},专属客服:{11},首页推荐:{12}",
data.getLevel(), rechargeAmounts, popularizeUserCounts,teamNums,data.getDeliveryDays(),Arith.mul(data.getSellerDiscount(),100),
Arith.mul(data.getProfitRationMin(),100)-Arith.mul(data.getProfitRationMax(),100),data.getPromoteViewDaily(),data.getAwardBaseView(),
data.getAwardViewMin()-data.getAwardViewMax(),data.getUpgradeCash(),data.getHasExclusiveService(),data.getRecommendAtFirstPage());
log.setLog(logs);
logService.saveSync(log);
project.log.Log log2 = new project.log.Log();
log2.setCategory(Constants.LOG_CATEGORY_OPERATION);
log2.setUsername(sec.getUsername());
log2.setOperator(this.getUsername_login());
String logs2 = MessageFormat.format("ip:" + this.getIp() + ",修改会员等级:{0}后参数,累计充值:{1},推广有效人数:{2},团队人数:{3},全球到货时间:{4}," +
"卖家优惠折扣:{5},利润比例:{6},每日流量:{7},每小时最小流量:{8},每小时流量波动范围:{9},升级礼金:{10},专属客服:{11},首页推荐:{12}",
mallLevel.getLevel(), rechargeAmount, popularizeUserCount,teamNum,mallLevel.getDeliveryDays(),Arith.mul(mallLevel.getSellerDiscount(),100),
Arith.mul(mallLevel.getProfitRationMin(),100)-Arith.mul(mallLevel.getProfitRationMax(),100),mallLevel.getPromoteViewDaily(),mallLevel.getAwardBaseView(),
mallLevel.getAwardViewMin()-mallLevel.getAwardViewMax(),mallLevel.getUpgradeCash(),mallLevel.getHasExclusiveService(),mallLevel.getRecommendAtFirstPage());
log2.setLog(logs2);
logService.saveSync(log2);
} catch (BusinessException e) {
model.addObject("error", e.getMessage());
model.setViewName("admin_vip_update");
model.addObject("mallLevel",mallLevel);
return model;
} catch (Throwable t) {
logger.error(" error ", t);
model.addObject("error", "[ERROR] " + t.getMessage());
model.setViewName("admin_vip_update");
model.addObject("mallLevel",mallLevel);
model.addObject("mallLevel",mallLevel);
model.addObject("mallLevel",mallLevel);
return model;
}
String message = "操作成功";
model.addObject("message", message);
model.setViewName("redirect:/" + "brush/vip/list.action");
return model;
}
/**
* 验证登录人资金密码
* @param operatorUsername
* @param loginSafeword
*/
protected void checkLoginSafeword(SecUser secUser,String operatorUsername,String loginSafeword) {
// SecUser sec = this.secUserService.findUserByLoginName(operatorUsername);
String sysSafeword = secUser.getSafeword();
String safeword_md5 = passwordEncoder.encodePassword(loginSafeword, operatorUsername);
if (!safeword_md5.equals(sysSafeword)) {
throw new BusinessException("登录人资金密码错误");
}
}
/**
* 验证谷歌验证码
* @param code
*/
protected void checkGoogleAuthCode(SecUser secUser,String code) {
if(!secUser.isGoogle_auth_bind()) {
throw new BusinessException("请先绑定谷歌验证器");
}
boolean checkCode = googleAuthService.checkCode(secUser.getGoogle_auth_secret(), code);
if(!checkCode) {
throw new BusinessException("谷歌验证码错误");
}
}
}

View File

@@ -0,0 +1,326 @@
package project.web.admin.expert;
import kernel.exception.BusinessException;
import kernel.util.StringUtils;
import kernel.web.PageActionSupport;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.providers.encoding.PasswordEncoder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import project.Constants;
import project.invest.expert.AdminExpertService;
import project.invest.expert.model.Expert;
import project.log.LogService;
import project.news.AdminNewsService;
import security.SecUser;
import security.internal.SecUserService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.text.MessageFormat;
import java.util.Date;
import java.util.Map;
/**
* 专家管理
*/
@RestController
@RequestMapping("/invest/expert")
public class AdminExpertController extends PageActionSupport {
private Logger logger = LogManager.getLogger(AdminExpertController.class);
@Autowired
private SecUserService secUserService;
@Autowired
private LogService logService;
@Autowired
private PasswordEncoder passwordEncoder;
@Resource
private AdminExpertService adminExpertService;
/**
* 获取专家列表
*/
@RequestMapping("/list.action")
public ModelAndView list(HttpServletRequest request) {
String pageNo = request.getParameter("pageNo");
String message = request.getParameter("message");
String error = request.getParameter("error");
String name = request.getParameter("name");
String lang = request.getParameter("lang");
String startTime = request.getParameter("startTime");
String endTime = request.getParameter("endTime");
Integer status = request.getParameter("status") == null ? -2 : Integer.parseInt(request.getParameter("status"));
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("admin_expert_list");
try {
this.checkAndSetPageNo(pageNo);
this.pageSize = 20;
this.page = this.adminExpertService.pagedQuery(this.pageNo, this.pageSize, name, lang,startTime,endTime,status);
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
return modelAndView;
} catch (Throwable t) {
logger.error(" error ", t);
modelAndView.addObject("error", "[ERROR] " + t.getMessage());
return modelAndView;
}
modelAndView.addObject("pageNo", this.pageNo);
modelAndView.addObject("pageSize", this.pageSize);
modelAndView.addObject("page", this.page);
modelAndView.addObject("message", message);
modelAndView.addObject("error", error);
modelAndView.addObject("name", name);
modelAndView.addObject("lang", lang);
return modelAndView;
}
/**
* 新增专家页面
*/
@RequestMapping( "/toAdd.action")
public ModelAndView toAdd(HttpServletRequest request) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("pageNo",request.getParameter("pageNo"));
modelAndView.setViewName("admin_expert_add");
return modelAndView;
}
/**
* 新增 专家
*
*/
@RequestMapping("/add.action")
public ModelAndView add(HttpServletRequest request, @RequestParam Map<String, String> paramMap) {
String pageNo = request.getParameter("pageNo");
String name = request.getParameter("name");
String lang = request.getParameter("lang");
String iconImg = request.getParameter("iconImg");
String status = request.getParameter("status");
String sort = request.getParameter("sort");
String summary = request.getParameter("summary");
String content_text = request.getParameter("content");
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("pageNo", pageNo);
modelAndView.addObject("name", name);
modelAndView.addObject("content", content_text);
modelAndView.addObject("lang", lang);
modelAndView.addObject("status", status);
modelAndView.addObject("sort", sort);
modelAndView.addObject("iconImg", iconImg);
try {
String error = this.verif(name, content_text,iconImg,sort,summary);
if (!StringUtils.isNullOrEmpty(error)) {
throw new BusinessException(error);
}
String userNameLogin = this.getUsername_login();
Expert expert = new Expert();
expert.setName(name);
expert.setCreateTime(new Date());
expert.setIconImg(iconImg);
expert.setStatus(Integer.parseInt(status));
expert.setContent(content_text);
expert.setLang(lang);
expert.setSort(Integer.parseInt(sort));
expert.setSummary(summary);
this.adminExpertService.save(expert);
SecUser sec = this.secUserService.findUserByLoginName(userNameLogin);
String log = MessageFormat.format("ip:" + this.getIp() + ",管理员新增新闻,id:{0},标题:{1},语言:{2},内容:{3}",
expert.getId(), expert.getName(), expert.getLang(),expert.getContent());
this.saveLog(sec, userNameLogin, log);
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
modelAndView.setViewName("admin_expert_add");
return modelAndView;
} catch (Throwable t) {
logger.error(" error ", t);
modelAndView.addObject("error", "[ERROR] " + t.getMessage());
modelAndView.setViewName("admin_expert_add");
return modelAndView;
}
modelAndView.addObject("message", "操作成功");
modelAndView.setViewName("redirect:/" + "invest/expert/list.action");
return modelAndView;
}
private String verif(String name, String content_text, String iconImg, String sort, String summary) {
if(StringUtils.isEmptyString(name)){
throw new BusinessException("昵称不能为空");
}
if(StringUtils.isEmptyString(content_text)){
throw new BusinessException("内容不能为空");
}
if(StringUtils.isEmptyString(iconImg)){
throw new BusinessException("请选择照片");
}
if(StringUtils.isEmptyString(sort)){
throw new BusinessException("请输入排序");
}
if(StringUtils.isEmptyString(summary)){
throw new BusinessException("请输入专家简介");
}
return null;
}
/**
* 修改专家页面
*
*/
@RequestMapping( "/toUpdate.action")
public ModelAndView toUpdate(HttpServletRequest request) {
String id = request.getParameter("id");
ModelAndView modelAndView = new ModelAndView();
try {
Expert expert = this.adminExpertService.findById(id);
modelAndView.addObject("expert", expert);
// modelAndView.addObject("title", news.getTitle());
// modelAndView.addObject("content", news.getContent());
// modelAndView.addObject("lang", news.getLang());
// modelAndView.addObject("status", news.getStatus());
// modelAndView.addObject("sort", news.getSort());
// modelAndView.addObject("iconImg", iconImg);
// modelAndView.addObject("releaseTime", releaseTime);
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
modelAndView.setViewName("redirect:/" + "invest/expert/list.action");
return modelAndView;
} catch (Throwable t) {
logger.error(" error ", t);
modelAndView.addObject("error", "[ERROR] " + t.getMessage());
modelAndView.setViewName("redirect:/" + "invest/expert/list.action");
return modelAndView;
}
modelAndView.setViewName("admin_expert_update");
return modelAndView;
}
/**
* 修改 专家
*
*/
@RequestMapping( "/update.action")
public ModelAndView update(HttpServletRequest request, Expert expert) {
ModelAndView modelAndView = new ModelAndView();
String content_text = request.getParameter("content");
try {
String error = this.verif(expert.getName(),content_text,expert.getIconImg(),expert.getSort().toString(),expert.getSummary());
if (!StringUtils.isNullOrEmpty(error)) {
throw new BusinessException(error);
}
String userNameLogin = this.getUsername_login();
SecUser sec = this.secUserService.findUserByLoginName(userNameLogin);
Expert bean = this.adminExpertService.findById(expert.getId().toString());
expert.setCreateTime(bean.getCreateTime());
expert.setContent(content_text);
this.adminExpertService.update(expert);
String log = MessageFormat.format(",昵称:{0},新语言:{1},新内容:{3}",
expert.getName(), expert.getLang(), content_text);
this.saveLog(sec, userNameLogin, log);
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
modelAndView.addObject("expert", expert);
modelAndView.setViewName("admin_expert_update");
return modelAndView;
} catch (Throwable t) {
logger.error(" error ", t);
modelAndView.addObject("error", "[ERROR] " + t.getMessage());
modelAndView.addObject("expert", expert);
modelAndView.setViewName("admin_expert_update");
return modelAndView;
}
modelAndView.addObject("message", "操作成功");
modelAndView.setViewName("redirect:/" + "invest/expert/list.action");
return modelAndView;
}
/**
* 删除 专家
*/
@RequestMapping( "/delete.action")
public ModelAndView delete(HttpServletRequest request) {
String id = request.getParameter("id");
String login_safeword = request.getParameter("login_safeword");
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("redirect:/" + "invest/expert/list.action");
try {
String userNameLogin = this.getUsername_login();
SecUser sec = this.secUserService.findUserByLoginName(userNameLogin);
this.checkLoginSafeword(sec, userNameLogin, login_safeword);
Expert expert = this.adminExpertService.findById(id);
String log = MessageFormat.format("ip:" + this.getIp() + ",管理员删除新闻,id:{0},原标题:{1},原语言:{2},原内容:{3}",
expert.getId(), expert.getName(), expert.getLang(), expert.getContent());
this.saveLog(sec, userNameLogin, log);
this.adminExpertService.delete(expert);
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
return modelAndView;
} catch (Throwable t) {
logger.error("update error ", t);
modelAndView.addObject("error", "程序错误");
return modelAndView;
}
modelAndView.addObject("message", "操作成功");
return modelAndView;
}
/**
* 验证登录人资金密码
*/
protected void checkLoginSafeword(SecUser secUser, String operatorUsername, String loginSafeword) {
// SecUser sec = this.secUserService.findUserByLoginName(operatorUsername);
String sysSafeword = secUser.getSafeword();
String safeword_md5 = this.passwordEncoder.encodePassword(loginSafeword, operatorUsername);
if (!safeword_md5.equals(sysSafeword)) {
throw new BusinessException("登录人资金密码错误");
}
}
public void saveLog(SecUser secUser, String operator, String context) {
project.log.Log log = new project.log.Log();
log.setCategory(Constants.LOG_CATEGORY_OPERATION);
log.setOperator(operator);
log.setUsername(secUser.getUsername());
log.setPartyId(secUser.getPartyId());
log.setLog(context);
log.setCreateTime(new Date());
this.logService.saveSync(log);
}
}

View File

@@ -0,0 +1,193 @@
package project.web.admin.goods;
import kernel.exception.BusinessException;
import kernel.util.StringUtils;
import kernel.web.PageActionSupport;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.security.providers.encoding.PasswordEncoder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import project.Constants;
import project.invest.goods.AdminGoodsBuyService;
import project.log.LogService;
import project.party.PartyService;
import security.SecUser;
import security.internal.SecUserService;
import util.DateUtil;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
/**
* 积分兑换记录
*/
@Slf4j
@RestController
@RequestMapping("/invest/goodsBuy")
public class AdminGoodsBuyController extends PageActionSupport {
private static Log logger = LogFactory.getLog(AdminGoodsBuyController.class);
@Resource
protected PartyService partyService;
@Resource
protected LogService logService;
@Resource
protected SecUserService secUserService;
@Resource
protected PasswordEncoder passwordEncoder;
@Resource
private AdminGoodsBuyService adminGoodsBuyService;
/**
* 积分兑换记录列表
* @param request
* @return
*/
@RequestMapping("/list.action")
public ModelAndView list(HttpServletRequest request) {
this.pageSize = 20;
String error = request.getParameter("error");
String id = request.getParameter("id");
String userCode = request.getParameter("userCode");
String phone = request.getParameter("phone");
String userName = request.getParameter("userName");
String startTime = request.getParameter("startTime");
String endTime = request.getParameter("endTime");
Integer status = request.getParameter("status") == null ? -2 : Integer.parseInt(request.getParameter("status"));
String message = request.getParameter("message");
ModelAndView model = new ModelAndView("goods_buy_list");
model.addObject("pageNo",pageNo);
model.addObject("id",id);
model.addObject("userCode",userCode);
model.addObject("phone",phone);
model.addObject("userName",userName);
model.addObject("startTime",startTime);
model.addObject("endTime",endTime);
model.addObject("message",message);
model.addObject("status",status);
model.addObject("error",error);
try {
this.checkAndSetPageNo(request.getParameter("pageNo"));
this.page = adminGoodsBuyService.pagedQuery(this.pageNo, this.pageSize, id, userCode, userName, phone, status, startTime, endTime);
model.addObject("page",this.page);
return model;
} catch (BusinessException e) {
model.addObject("error", error);
return model;
} catch (Throwable t) {
logger.error(" error ", t);
model.addObject("error", "[ERROR] " + t.getMessage());
return model;
}
}
/**
* 余额兑换记录列表
* @param request
* @return
*/
@RequestMapping("/point/exchange/list.action")
public ModelAndView exchangeList(HttpServletRequest request) {
this.pageSize = 20;
String error = request.getParameter("error");
String id = request.getParameter("id");
String userCode = request.getParameter("userCode");
String phone = request.getParameter("phone");
String userName = request.getParameter("userName");
String startTime = request.getParameter("startTime");
String endTime = request.getParameter("endTime");
// Integer status = request.getParameter("status") == null ? -2 : Integer.parseInt(request.getParameter("status"));
String message = request.getParameter("message");
ModelAndView model = new ModelAndView("point_exchange_list");
model.addObject("pageNo",pageNo);
model.addObject("id",id);
model.addObject("userCode",userCode);
model.addObject("phone",phone);
model.addObject("userName",userName);
model.addObject("startTime",startTime);
model.addObject("endTime",endTime);
model.addObject("message",message);
// model.addObject("status",status);
model.addObject("error",error);
try {
this.checkAndSetPageNo(request.getParameter("pageNo"));
this.page = adminGoodsBuyService.pagedQueryExchange(this.pageNo, this.pageSize, id, userCode, userName, phone, startTime, endTime);
model.addObject("page",this.page);
return model;
} catch (BusinessException e) {
model.addObject("error", error);
return model;
} catch (Throwable t) {
logger.error(" error ", t);
model.addObject("error", "[ERROR] " + t.getMessage());
return model;
}
}
/**
* 发货或取消
*/
@RequestMapping(value = "/updateStatus.action")
public ModelAndView updateStatus(HttpServletRequest request) {
String pageNo = request.getParameter("pageNo");
String message = request.getParameter("message");
String error = request.getParameter("error");
String id = request.getParameter("sid");
String login_safeword = request.getParameter("login_safeword");
String type = request.getParameter("type");
String remark = request.getParameter("remark");
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("pageNo", pageNo);
try {
if(StringUtils.isEmptyString(id)){
throw new BusinessException("系统错误");
}
SecUser sec = this.secUserService.findUserByLoginName(this.getUsername_login());
checkLoginSafeword(sec,this.getUsername_login(),login_safeword);
this.adminGoodsBuyService.updateStatus(id,type,remark);
this.message = "操作成功";
project.log.Log log = new project.log.Log();
log.setCategory(Constants.LOG_CATEGORY_OPERATION);
log.setUsername(sec.getUsername());
log.setPartyId(sec.getPartyId());
log.setOperator(this.getUsername_login());
log.setLog("管理员手动兑换["+ id +"] 操作ip:["+this.getIp(getRequest())+"]" + " 操作时间 [" + DateUtil.DatetoString(new Date(),"yyyy-MM-dd HH:mm:ss")+ "]");
logService.saveSync(log);
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
modelAndView.setViewName("redirect:/" + "invest/goodsBuy/list.action");
return modelAndView;
} catch (Throwable t) {
logger.error(" error ", t);
modelAndView.addObject("error", "[ERROR] " + t.getMessage());
modelAndView.setViewName("redirect:/" + "invest/goodsBuy/list.action");
return modelAndView;
}
modelAndView.addObject("message", message);
modelAndView.addObject("error", error);
modelAndView.setViewName("redirect:/" + "invest/goodsBuy/list.action");
return modelAndView;
}
/**
* 验证登录人资金密码
* @param operatorUsername
* @param loginSafeword
*/
protected void checkLoginSafeword(SecUser secUser, String operatorUsername, String loginSafeword) {
String sysSafeword = secUser.getSafeword();
String safeword_md5 = passwordEncoder.encodePassword(loginSafeword, operatorUsername);
if (!safeword_md5.equals(sysSafeword)) {
throw new BusinessException("登录人资金密码错误");
}
}
}

View File

@@ -0,0 +1,329 @@
package project.web.admin.goods;
import kernel.exception.BusinessException;
import kernel.util.StringUtils;
import kernel.web.PageActionSupport;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.security.providers.encoding.PasswordEncoder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import project.Constants;
import project.invest.goods.AdminGoodsService;
import project.invest.goods.model.Goods;
import project.invest.goods.model.GoodsLang;
import project.invest.platform.AdminPlatformService;
import project.invest.platform.Platfrom;
import project.log.LogService;
import project.party.PartyService;
import security.SecUser;
import security.internal.SecUserService;
import util.DateUtil;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
/**
* 商品管理
*/
@Slf4j
@RestController
@RequestMapping("/invest/goods")
public class AdminGoodsController extends PageActionSupport {
private static Log logger = LogFactory.getLog(AdminGoodsController.class);
@Resource
protected AdminGoodsService adminGoodsService;
@Resource
protected PartyService partyService;
@Resource
protected LogService logService;
@Resource
protected SecUserService secUserService;
@Resource
protected PasswordEncoder passwordEncoder;
/**
* 商品列表
*/
private Map<String, String> platforms = new LinkedHashMap<String, String>();
@RequestMapping("/list.action")
public ModelAndView list(HttpServletRequest request) {
this.pageSize = 20;
Integer status = null;
String error = request.getParameter("error");
String name = request.getParameter("name");
if(StringUtils.isNotEmpty(request.getParameter("status"))){
status = Integer.valueOf(request.getParameter("status"));
}
String startTime = request.getParameter("startTime");
String endTime = request.getParameter("endTime");
String message = request.getParameter("message");
ModelAndView model = new ModelAndView("admin_goods_list");
model.addObject("name",name);
model.addObject("status",status);
model.addObject("message",message);
model.addObject("pageNo",pageNo);
try {
this.checkAndSetPageNo(request.getParameter("pageNo"));
this.page = adminGoodsService.pagedQuery(this.pageNo, this.pageSize, name , status, startTime, endTime);
model.addObject("page",this.page);
return model;
} catch (BusinessException e) {
model.addObject("error", error);
return model;
} catch (Throwable t) {
logger.error(" error ", t);
model.addObject("error", "[ERROR] " + t.getMessage());
return model;
}
}
/**
* 新增用户活动订单
*
* @param request
* @return
*/
@RequestMapping(value = "/toAdd.action")
public ModelAndView toAdd(HttpServletRequest request) {
String error = request.getParameter("error");
String name = request.getParameter("name");
String status = request.getParameter("status");
String pageNo = request.getParameter("pageNo");
ModelAndView model = new ModelAndView();
model.setViewName("admin_goods_add");
model.addObject("error", error);
model.addObject("platforms",platforms);
model.addObject("name",name);
model.addObject("status",status);
model.addObject("pageNo",pageNo);
return model;
}
@RequestMapping(value = "/add.action")
public ModelAndView add(HttpServletRequest request) {
String pageNo = request.getParameter("pageNo");
String name = request.getParameter("name");
ModelAndView model = new ModelAndView();
model.addObject("name", name);
model.addObject("pageNo", pageNo);
try {
if(StringUtils.isEmptyString(name)){
throw new BusinessException("商品名称不能为空");
}
adminGoodsService.save(name);
} catch (BusinessException e) {
model.addObject("error", e.getMessage());
model.setViewName("admin_goods_add");
return model;
} catch (Exception e) {
logger.error("error ", e);
model.setViewName("admin_goods_add");
return model;
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("message", "操作成功");
modelAndView.addObject("PageNo", pageNo);
modelAndView.setViewName("redirect:/" + "invest/goods/list.action");
return modelAndView;
}
@RequestMapping(value = "/toUpdate.action")
public ModelAndView toUpdate(HttpServletRequest request) {
String goodsId = request.getParameter("goodsId");
String lang = request.getParameter("lang");
String message = request.getParameter("message");
ModelAndView model = new ModelAndView();
try {
Goods goods = this.adminGoodsService.findById(goodsId);
List<GoodsLang> goodsLanList = adminGoodsService.findLanByGoodsId(goodsId, lang);
if(CollectionUtils.isEmpty(goodsLanList)){
model.addObject("goodsLanId",null);
model.addObject("name",null);
model.addObject("des",null);
} else {
GoodsLang goodsLan = goodsLanList.get(0);
model.addObject("goodsLanId",goodsLan.getId());
model.addObject("name",goodsLan.getName());
model.addObject("des",goodsLan.getDes());
}
model.addObject("error", error);
model.addObject("goodsId",goodsId);
model.addObject("iconImg",goods.getIconImg());
model.addObject("prize",goods.getPrize());
model.addObject("status",goods.getStatus());
model.addObject("sort",goods.getSort());
model.addObject("payWay",goods.getPayWay());
model.addObject("total",goods.getTotal());
model.addObject("lastAmount",goods.getLastAmount());
model.addObject("exchangeAmount",goods.getExchangeAmount());
model.addObject("lang",lang);
model.addObject("pageNo",pageNo);
model.addObject("message",message);
} catch (BusinessException e) {
model.addObject("error", e.getMessage());
model.setViewName("redirect:/" + "invest/goods/list");
return model;
} catch (Throwable t) {
logger.error(" error ", t);
model.addObject("error", "[ERROR] " + t.getMessage());
model.setViewName("redirect:/" + "invest/goods/list");
return model;
}
model.setViewName("admin_goods_update");
return model;
}
@RequestMapping(value = "/update.action")
public ModelAndView update(HttpServletRequest request) {
String pageNo = request.getParameter("pageNo");
String name = request.getParameter("name");
String goodsId = request.getParameter("goodsId");
String goodsLanId = request.getParameter("goodsLanId");
String iconImg = request.getParameter("iconImg");
String prize = request.getParameter("prize");
String status = request.getParameter("status");
String lang = request.getParameter("lang");
String sort = request.getParameter("sort");
String total = request.getParameter("total");
String lastAmount = request.getParameter("lastAmount");
String des_text = request.getParameter("content");
ModelAndView model = new ModelAndView();
model.addObject("name", name);
model.addObject("iconImg", iconImg);
model.addObject("prize", prize);
model.addObject("status", status);
model.addObject("pageNo", pageNo);
model.addObject("sort", sort);
model.addObject("total", total);
model.addObject("lastAmount", lastAmount);
model.addObject("goodsId", goodsId);
model.addObject("goodsLanId", goodsLanId);
model.addObject("lang", lang);
model.addObject("des", des_text);
try {
String error = verification(name, iconImg, prize, des_text, status);
if (!StringUtils.isNullOrEmpty(error)) {
throw new BusinessException(error);
}
adminGoodsService.update(name,iconImg,prize,goodsId,goodsLanId,status,des_text,lang,sort,total,lastAmount);
} catch (BusinessException e) {
model.addObject("error", e.getMessage());
model.setViewName("admin_goods_update");
return model;
} catch (Throwable t) {
logger.error("update error ", t);
model.addObject("error", "程序错误");
model.setViewName("admin_goods_update");
return model;
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("message", "操作成功");
modelAndView.addObject("pageNo", pageNo);
modelAndView.addObject("goodsId", goodsId);
modelAndView.addObject("goodsLanId", goodsLanId);
modelAndView.addObject("lang", lang);
modelAndView.setViewName("redirect:/" + "invest/goods/toUpdate.action");
return modelAndView;
}
private String verification(String name, String iconImg, String prize, String des, String status) {
if (StringUtils.isEmptyString(name)){
return "请输入商品名称";
}
if (StringUtils.isEmptyString(iconImg)){
return "请选择商品封面图";
}
if (StringUtils.isEmptyString(prize)){
return "请输入商品价格";
}
if (StringUtils.isEmptyString(des)){
return "请输入商品介绍";
}
if (StringUtils.isEmptyString(status)){
return "请选中商品状态";
}
return null;
}
@RequestMapping(value = "/delete.action")
public ModelAndView delete(HttpServletRequest request) {
ModelAndView model = new ModelAndView();
try {
String login_safeword = request.getParameter("login_safeword");
if (StringUtils.isNullOrEmpty(login_safeword)) {
model.addObject("error", "请输入登录人资金密码");
model.setViewName("redirect:/" + "invest/goods/list.action");
return model;
}
SecUser sec = this.secUserService.findUserByLoginName(this.getUsername_login());
checkLoginSafeword(sec,this.getUsername_login(), login_safeword);
String id = request.getParameter("id");
List<GoodsLang> lanByGoodsId = adminGoodsService.findLanByGoodsId(id, null);
this.adminGoodsService.delete(id,lanByGoodsId);
project.log.Log log = new project.log.Log();
log.setCategory(Constants.LOG_CATEGORY_OPERATION);
log.setUsername(sec.getUsername());
log.setPartyId(sec.getPartyId());
log.setOperator(this.getUsername_login());
lanByGoodsId.forEach(e ->{
if(e.getLang().equals("cn")){
log.setLog("管理员手动删除商品["+e.getName() +"] 操作ip:["+this.getIp(getRequest())+"]" + "Time [" + DateUtil.DatetoString(new Date(),"yyyy-MM-dd HH:mm:ss")+ "]");
}
});
logService.saveSync(log);
model.addObject("message", "操作成功");
model.setViewName("redirect:/" + "invest/goods/list.action");
return model;
} catch (BusinessException e) {
model.addObject("error", e.getMessage());
model.setViewName("redirect:/" + "invest/goods/list.action");
return model;
} catch (Throwable t) {
logger.error("update error ", t);
model.addObject("error", "程序错误");
model.setViewName("redirect:/" + "invest/goods/list.action");
return model;
}
}
/**
* 验证登录人资金密码
* @param operatorUsername
* @param loginSafeword
*/
protected void checkLoginSafeword(SecUser secUser,String operatorUsername,String loginSafeword) {
// SecUser sec = this.secUserService.findUserByLoginName(operatorUsername);
String sysSafeword = secUser.getSafeword();
String safeword_md5 = passwordEncoder.encodePassword(loginSafeword, operatorUsername);
if (!safeword_md5.equals(sysSafeword)) {
throw new BusinessException("登录人资金密码错误");
}
}
}

View File

@@ -0,0 +1,184 @@
package project.web.admin.order;
import kernel.exception.BusinessException;
import kernel.util.StringUtils;
import kernel.util.ThreadUtils;
import kernel.web.PageActionSupport;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import project.Constants;
import project.invest.order.AdminExchangeOrderService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@RestController
@RequestMapping("/exchange/order")
public class AdminExchangeOrderController extends PageActionSupport {
private Logger logger = LogManager.getLogger(AdminExchangeOrderController.class);
@Resource
private AdminExchangeOrderService adminExchangeOrderService;
private Map<String, Object> session = new HashMap<String, Object>();
private final static Object obj = new Object();
/**
* 获取 otc订单 列表
*/
@RequestMapping("/list.action")
public ModelAndView list(HttpServletRequest request) {
String pageNo = request.getParameter("pageNo");
String message = request.getParameter("message");
String error = request.getParameter("error");
String name_para = request.getParameter("name_para");
String id = request.getParameter("id");
String phone = request.getParameter("phone");
String roleName = request.getParameter("roleName");
String succeeded_para = request.getParameter("succeeded_para");
String startTime = request.getParameter("startTime");
String endTime = request.getParameter("endTime");
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("order_exchange_list");
try {
this.checkAndSetPageNo(pageNo);
this.pageSize = 20;
String session_token = UUID.randomUUID().toString();
this.session.put("session_token", session_token);
Integer status = null;
if (!StringUtils.isEmptyString(succeeded_para)) {
status = Integer.valueOf(succeeded_para).intValue();
}
this.page = this.adminExchangeOrderService.pagedQuery(this.pageNo, this.pageSize,name_para,phone,id,roleName,status,startTime,endTime);
List<Map> list = this.page.getElements();
for (int i = 0; i < list.size(); i++) {
Map map = list.get(i);
if (null == map.get("roleName")) {
map.put("roleNameDesc", "");
} else {
String rolename = map.get("roleName").toString();
map.put("roleNameDesc", Constants.ROLE_MAP.containsKey(rolename) ? Constants.ROLE_MAP.get(rolename) : rolename);
}
map.put("symbolValue", new BigDecimal(map.get("symbolValue").toString()).toPlainString());
}
modelAndView.addObject("session_token", session_token);
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
return modelAndView;
} catch (Throwable t) {
logger.error(" error ", t);
modelAndView.addObject("error", "[ERROR] " + t.getMessage());
return modelAndView;
}
modelAndView.addObject("pageNo", this.pageNo);
modelAndView.addObject("pageSize", this.pageSize);
modelAndView.addObject("page", this.page);
modelAndView.addObject("message", message);
modelAndView.addObject("error", error);
modelAndView.addObject("succeeded_para", succeeded_para);
modelAndView.addObject("roleName", roleName);
modelAndView.addObject("phone", phone);
modelAndView.addObject("startTime", startTime);
modelAndView.addObject("endTime", endTime);
modelAndView.addObject("id", id);
modelAndView.addObject("name_para", name_para);
return modelAndView;
}
/**
* 处理一个代付
*/
@RequestMapping( "/success.action")
public ModelAndView success(HttpServletRequest request) {
String session_token = request.getParameter("session_token");
String id = request.getParameter("id");
String safeword = request.getParameter("safeword");
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("redirect:/" + "exchange/order/list.action");
try {
Object object = this.session.get("session_token");
this.session.remove("session_token");
if (null == object || StringUtils.isNullOrEmpty(session_token) || !session_token.equals((String) object)) {
throw new BusinessException("请稍后再试");
}
synchronized (obj) {
// 统一处理成功接口
this.adminExchangeOrderService.saveSucceeded(id, safeword, this.getUsername_login());
ThreadUtils.sleep(300);
}
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
return modelAndView;
} catch (Throwable t) {
logger.error("update error ", t);
modelAndView.addObject("error", "程序错误");
return modelAndView;
}
modelAndView.addObject("message", "操作成功");
return modelAndView;
}
/**
* 驳回
*/
@RequestMapping("/reject.action")
public ModelAndView reject(HttpServletRequest request) {
String session_token = request.getParameter("session_token");
String id = request.getParameter("id");
String failure_msg = request.getParameter("failure_msg");
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("redirect:/" + "exchange/order/list.action");
try {
Object object = this.session.get("session_token");
this.session.remove("session_token");
if (null == object || StringUtils.isNullOrEmpty(session_token) || !session_token.equals((String) object)) {
throw new BusinessException("请稍后再试");
}
synchronized (obj) {
// 统一处理失败接口
this.adminExchangeOrderService.saveReject(id, failure_msg, this.getUsername_login());
ThreadUtils.sleep(300);
}
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
return modelAndView;
} catch (Throwable t) {
logger.error("update error ", t);
modelAndView.addObject("error", "程序错误");
return modelAndView;
}
modelAndView.addObject("message", "操作成功");
return modelAndView;
}
}

View File

@@ -0,0 +1,228 @@
package project.web.admin.order;
import com.alibaba.druid.support.logging.Log;
import com.alibaba.druid.support.logging.LogFactory;
import kernel.exception.BusinessException;
import kernel.util.Arith;
import kernel.util.StringUtils;
import kernel.web.PageActionSupport;
import org.springframework.security.providers.encoding.PasswordEncoder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import project.Constants;
import project.invest.order.AdminOrderService;
import project.invest.project.model.InvestOrders;
import project.log.LogService;
import project.user.googleauth.GoogleAuthService;
import security.SecUser;
import security.internal.SecUserService;
import util.DateUtil;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@RestController
@RequestMapping("/adminOrder")
public class AdminOrderController extends PageActionSupport {
private static Log logger = LogFactory.getLog(AdminOrderController.class);
@Resource
protected LogService logService;
@Resource
private AdminOrderService adminOrderService;
@Resource
private SecUserService secUserService;
@Resource
private PasswordEncoder passwordEncoder;
@Resource
private GoogleAuthService googleAuthService;
/**
*
* 列表查询
*/
@RequestMapping(value = "/list.action")
public ModelAndView list(HttpServletRequest request) {
String pageNo = request.getParameter("pageNo");
String message = request.getParameter("message");
String error = request.getParameter("error");
String id = request.getParameter("id");
String userCode = request.getParameter("userCode");
String phone = request.getParameter("phone");
String userName = request.getParameter("userName");
String roleName = request.getParameter("roleName");
String startTime = request.getParameter("startTime");
String endTime = request.getParameter("endTime");
Integer status = request.getParameter("status") == null ? -2 : Integer.parseInt(request.getParameter("status"));
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("admin_order_list");
try {
this.checkAndSetPageNo(pageNo);
this.pageSize = 20;
this.page = this.adminOrderService.pagedQuery(this.pageNo, this.pageSize,id,userCode,
userName,phone,roleName,startTime,endTime,status);
List<Map> list = page.getElements();
for (int i = 0; i < list.size(); i++) {
Map map=list.get(i);
Double bonusRate = (Double) map.get("bonusRate");
Double bonusRateVip = (Double) map.get("bonusRateVip");
map.put("sucessWill", DateUtil.DatetoString(new Date((long)map.get("sucessWill")),"yyyy-MM-dd HH:mm:ss") );
map.put("bonusRate", Arith.mul(bonusRate,100));
map.put("bonusRateVip", Arith.mul(bonusRateVip,100));
}
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
return modelAndView;
} catch (Throwable t) {
logger.error(" error ", t);
modelAndView.addObject("error", "[ERROR] " + t.getMessage());
return modelAndView;
}
modelAndView.addObject("pageNo", this.pageNo);
modelAndView.addObject("pageSize", this.pageSize);
modelAndView.addObject("page", this.page);
modelAndView.addObject("message", message);
modelAndView.addObject("error", error);
modelAndView.addObject("id", id);
modelAndView.addObject("userCode", userCode);
modelAndView.addObject("phone", phone);
modelAndView.addObject("userName", userName);
modelAndView.addObject("roleName", roleName);
modelAndView.addObject("startTime", startTime);
modelAndView.addObject("endTime", endTime);
modelAndView.addObject("status", status);
return modelAndView;
}
/**
* 订单取消
*/
@RequestMapping(value = "/cancel.action")
public ModelAndView cancel(HttpServletRequest request) {
String pageNo = request.getParameter("pageNo");
String message = request.getParameter("message");
String error = request.getParameter("error");
String id = request.getParameter("sid");
String login_safeword = request.getParameter("login_safeword");
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("pageNo", pageNo);
try {
if(StringUtils.isEmptyString(id)){
throw new BusinessException("系统错误");
}
SecUser sec = this.secUserService.findUserByLoginName(this.getUsername_login());
checkLoginSafeword(sec,this.getUsername_login(),login_safeword);
this.adminOrderService.updateCancel(id);
this.message = "订单取消成功";
project.log.Log log = new project.log.Log();
log.setCategory(Constants.LOG_CATEGORY_OPERATION);
log.setUsername(sec.getUsername());
log.setPartyId(sec.getPartyId());
log.setOperator(this.getUsername_login());
log.setLog("管理员手动取消任务订单["+ id +"] 操作ip:["+this.getIp(getRequest())+"]" + " 操作时间 [" + DateUtil.DatetoString(new Date(),"yyyy-MM-dd HH:mm:ss")+ "]");
logService.saveSync(log);
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
modelAndView.setViewName("redirect:/" + "adminOrder/list.action");
return modelAndView;
} catch (Throwable t) {
logger.error(" error ", t);
modelAndView.addObject("error", "[ERROR] " + t.getMessage());
modelAndView.setViewName("redirect:/" + "adminOrder/list.action");
return modelAndView;
}
modelAndView.addObject("message", message);
modelAndView.addObject("error", error);
modelAndView.setViewName("redirect:/" + "adminOrder/list.action");
return modelAndView;
}
/**
* 订单关闭
*/
@RequestMapping(value = "/closure.action")
public ModelAndView closure(HttpServletRequest request) {
String pageNo = request.getParameter("pageNo");
String error = request.getParameter("error");
String id = request.getParameter("sid");
String login_safeword = request.getParameter("login_safeword");
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("pageNo", pageNo);
try {
if(StringUtils.isEmptyString(id)){
throw new BusinessException("系统错误");
}
SecUser sec = this.secUserService.findUserByLoginName(this.getUsername_login());
checkLoginSafeword(sec,this.getUsername_login(),login_safeword);
project.log.Log log = new project.log.Log();
InvestOrders order = adminOrderService.findOrdersById(id);
if(Objects.isNull(order)) {
throw new BusinessException("订单不存在");
}
adminOrderService.updateClosure(order);
this.message = "操作成功";
log.setCategory(Constants.LOG_CATEGORY_OPERATION);
log.setUsername(sec.getUsername());
log.setPartyId(sec.getPartyId());
log.setOperator(this.getUsername_login());
log.setLog("管理员手动关闭订单["+ id +"] 操作ip:["+this.getIp(getRequest())+"]" + " 操作时间 [" + DateUtil.DatetoString(new Date(),"yyyy-MM-dd HH:mm:ss")+ "]");
logService.saveSync(log);
} catch (BusinessException e) {
modelAndView.addObject("error", e.getMessage());
modelAndView.setViewName("redirect:/" + "adminOrder/list.action");
return modelAndView;
} catch (Throwable t) {
logger.error(" error ", t);
modelAndView.addObject("error", "[ERROR] " + t.getMessage());
modelAndView.setViewName("redirect:/" + "adminOrder/list.action");
return modelAndView;
}
modelAndView.addObject("message", this.message);
modelAndView.addObject("error", error);
modelAndView.setViewName("redirect:/" + "adminOrder/list.action");
return modelAndView;
}
/**
* 验证登录人资金密码
* @param operatorUsername
* @param loginSafeword
*/
protected void checkLoginSafeword(SecUser secUser, String operatorUsername, String loginSafeword) {
String sysSafeword = secUser.getSafeword();
String safeword_md5 = passwordEncoder.encodePassword(loginSafeword, operatorUsername);
if (!safeword_md5.equals(sysSafeword)) {
throw new BusinessException("登录人资金密码错误");
}
}
/**
* 验证谷歌验证码
* @param code
*/
protected void checkGoogleAuthCode(SecUser secUser,String code) {
if(!secUser.isGoogle_auth_bind()) {
throw new BusinessException("请先绑定谷歌验证器");
}
boolean checkCode = googleAuthService.checkCode(secUser.getGoogle_auth_secret(), code);
if(!checkCode) {
throw new BusinessException("谷歌验证码错误");
}
}
}

View File

@@ -0,0 +1,199 @@
package project.web.admin.platform;
import kernel.exception.BusinessException;
import kernel.web.Page;
import kernel.web.PageActionSupport;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.security.providers.encoding.PasswordEncoder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import project.invest.platform.AdminPlatformService;
import project.user.googleauth.GoogleAuthService;
import security.SecUser;
import security.internal.SecUserService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@Slf4j
@RestController
@RequestMapping("/adminPlatform")
public class AdminPlatformController extends PageActionSupport {
private static Log logger = LogFactory.getLog(AdminPlatformController.class);
@Resource
private AdminPlatformService adminPlatformService;
@Resource
private PasswordEncoder passwordEncoder;
@Resource
private SecUserService secUserService;
@Resource
private GoogleAuthService googleAuthService;
/**
* 列表查询
*/
@RequestMapping("/list.action")
public ModelAndView list(HttpServletRequest request,ModelAndView model) {
String name = request.getParameter("name");
String startTime = request.getParameter("startTime");
String endTime = request.getParameter("endTime");
model.setViewName("admin_platform_list");
try {
this.checkAndSetPageNo(request.getParameter("pageNo"));
this.pageSize = 20;
Page page = adminPlatformService.findPlatformList(pageNo,pageSize,name,startTime,endTime);
model.addObject("pageNo",pageNo);
model.addObject("page", page);
model.addObject("name",name);
model.addObject("startTime",startTime);
model.addObject("endTime",endTime);
return model;
} catch (BusinessException e) {
model.addObject("page",page);
model.addObject("error", e.getMessage());
return model;
} catch (Throwable t) {
logger.error(" error ", t);
model.addObject("error", "[ERROR] " + t.getMessage());
return model;
}
}
@RequestMapping("/addOrModify.action")
public ModelAndView addOrModify(HttpServletRequest request) {
ModelAndView model = new ModelAndView();
String login_safeword = request.getParameter("login_safeword");
String name = request.getParameter("name");
Integer status = Integer.valueOf(request.getParameter("status"));
String createTime = request.getParameter("createTime");
String id = request.getParameter("id");
String fileName = request.getParameter("fileName");
try {
checkRequest(name);
// SecUser sec = this.secUserService.findUserByLoginName(this.getUsername_login());
// checkLoginSafeword(sec,this.getUsername_login(),login_safeword);
adminPlatformService.addOrModify(id,name,createTime,status);
model.addObject("pageNo",request.getParameter("PageNo"));
this.message = "操作成功";
model.addObject("message",message);
model.setViewName("redirect:/" + "adminPlatform/list.action");
return model;
} catch (BusinessException e) {
model.setViewName("admin_platform_update_add");
model.addObject("error", e.getMessage());
model.addObject("name",name);
model.addObject("status",status);
model.addObject("id",id);
model.addObject("fileName",fileName);
model.addObject("createTime",createTime);
return model;
} catch (Throwable t) {
logger.error(" error ", t);
model.setViewName("admin_platform_update_add");
model.addObject("error", "[ERROR] " + t.getMessage());
model.addObject("name",name);
model.addObject("status",status);
model.addObject("id",id);
model.addObject("fileName",fileName);
model.addObject("createTime",createTime);
return model;
}
}
private void checkRequest(String name) {
if(StringUtils.isBlank(name)){
throw new BusinessException("平台名称不能为空");
}
}
/**
* 跳转修改页面
*/
@RequestMapping("/toUpdateOrAdd.action")
public ModelAndView toUpdate(HttpServletRequest request) {
ModelAndView model = new ModelAndView("admin_platform_update_add");
String name = request.getParameter("name");
String status = request.getParameter("status");
String fileName = request.getParameter("fileName");
String createTime = request.getParameter("createTime");
String id = request.getParameter("id");
String pageNo = request.getParameter("pageNo");
model.addObject("name", name);
model.addObject("fileName", fileName);
model.addObject("pageNo", pageNo);
model.addObject("status", status);
model.addObject("id", id);
model.addObject("createTime", createTime);
// 限制提现
return model;
}
/**
* 删除
*/
@RequestMapping("/delete.action")
public ModelAndView delete(HttpServletRequest request) {
ModelAndView model = new ModelAndView();
String login_safeword = request.getParameter("login_safeword");
// String google_auth_code = request.getParameter("google_auth_code");
model.setViewName("redirect:/" + "adminPlatform/list.action");
try {
SecUser sec = this.secUserService.findUserByLoginName(this.getUsername_login());
// checkGoogleAuthCode(sec,google_auth_code);
checkLoginSafeword(sec,this.getUsername_login(),login_safeword);
adminPlatformService.delete(request.getParameter("id"));
this.message = "操作成功";
model.addObject("message",message);
return model;
} catch (BusinessException e) {
model.addObject("error", e.getMessage());
return model;
} catch (Throwable t) {
logger.error(" error ", t);
model.addObject("error", "[ERROR] " + t.getMessage());
return model;
}
// 限制提现
}
/**
* 验证登录人资金密码
* @param operatorUsername
* @param loginSafeword
*/
protected void checkLoginSafeword(SecUser secUser, String operatorUsername, String loginSafeword) {
String sysSafeword = secUser.getSafeword();
String safeword_md5 = passwordEncoder.encodePassword(loginSafeword, operatorUsername);
if (!safeword_md5.equals(sysSafeword)) {
throw new BusinessException("登录人资金密码错误");
}
}
/**
* 验证谷歌验证码
* @param code
*/
protected void checkGoogleAuthCode(SecUser secUser,String code) {
if(!secUser.isGoogle_auth_bind()) {
throw new BusinessException("请先绑定谷歌验证器");
}
boolean checkCode = googleAuthService.checkCode(secUser.getGoogle_auth_secret(), code);
if(!checkCode) {
throw new BusinessException("谷歌验证码错误");
}
}
}

View File

@@ -0,0 +1,59 @@
package project.web.admin.report;
import kernel.web.PageActionSupport;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import project.invest.walletday.WalletDayService;
import project.wallet.Wallet;
import project.wallet.WalletService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
/**
* 用户存量资金汇总
*
*/
@RestController
@RequestMapping("/brush/userMoney")
public class AdminMonitorUserMoneyStatisticsController extends PageActionSupport {
@Resource
protected WalletService walletService;
@Resource
protected WalletDayService walletDayService;
@RequestMapping("/list.action")
public ModelAndView list(HttpServletRequest request) {
List<Wallet> wallets = walletService.findAllWallet();
double amount = wallets.stream().mapToDouble(Wallet::getMoney).sum();
String amounts = new BigDecimal(amount).setScale(8, RoundingMode.FLOOR).toPlainString();
ModelAndView model = new ModelAndView();
model.addObject("amount", amounts);
model.setViewName("auto_monitor_statistics_user_money_list");
return model;
}
/**
* 详情
* @param request
* @return
*/
@RequestMapping("/walletDayList.action")
public ModelAndView walletDayList(HttpServletRequest request) {
this.pageSize = 20;
this.checkAndSetPageNo(request.getParameter("pageNo"));
this.page = walletDayService.pagedQuery(pageNo, pageSize);
ModelAndView model = new ModelAndView();
model.addObject("page", page);
model.addObject("pageNo", pageNo);
model.setViewName("admin_wallet_day_list");
return model;
}
}

View File

@@ -0,0 +1,211 @@
//package project.web.api;
//
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import kernel.exception.BusinessException;
//import kernel.util.StringUtils;
//import kernel.web.BaseAction;
//import kernel.web.ResultObject;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.logging.Log;
//import org.apache.commons.logging.LogFactory;
//import org.springframework.web.bind.annotation.CrossOrigin;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RestController;
//import project.invest.goods.GoodsService;
//import project.invest.goods.model.Useraddress;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//
//@Slf4j
//@RestController
//@CrossOrigin
//public class AddressController extends BaseAction {
//
//
// @Resource
// private GoodsService goodsService;
//
// private static Log logger = LogFactory.getLog(AddressController.class);
// private final String action = "/api/address!";
//
// /**
// * 添加
// * @return
// */
// @PostMapping( action+"add.action")
// public Object add(HttpServletRequest request){
// ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
// if (!"0".equals(resultObject.getCode())) {
// return resultObject;
// }
// String partyId = this.getLoginPartyId();
// String use = request.getParameter("use");
// int isUse = 0;
// if(use!=null){
// isUse = Integer.parseInt(use);
// }
// String phone = request.getParameter("phone");
//
// if(StringUtils.isEmptyString(phone)){
// resultObject.setCode("1");
// resultObject.setMsg("手机号不能为空");
// return resultObject;
// }
//
// String contacts = request.getParameter("contacts");
//
// if(StringUtils.isEmptyString(contacts)){
// resultObject.setCode("1");
// resultObject.setMsg("联系人不能为空");
// return resultObject;
// }
// String address = request.getParameter("address");
//
// if(StringUtils.isEmptyString(address)){
// resultObject.setCode("1");
// resultObject.setMsg("地址不能为空");
// return resultObject;
// }
//
// if(address.length()>100){
// resultObject.setCode("1");
// resultObject.setMsg("地址过长");
// return resultObject;
// }
//
// try {
// goodsService.saveAddress(partyId,isUse,phone,contacts,address);
// }catch (BusinessException e){
// e.printStackTrace();
// resultObject.setCode("1");
// resultObject.setMsg(e.getMessage());
// return resultObject;
// }catch (Exception e1){
// e1.printStackTrace();
// resultObject.setCode("1");
// resultObject.setMsg("添加失败");
// }
//
// return resultObject;
// }
//
// /**
// * 修改
// * @return
// */
// @PostMapping( action+"edit.action")
// public Object edit(HttpServletRequest request){
// ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
// if (!"0".equals(resultObject.getCode())) {
// return resultObject;
// }
// String id = request.getParameter("id");
// if(StringUtils.isEmptyString(id)){
// resultObject.setCode("1");
// resultObject.setMsg("非法请求");
// return resultObject;
// }
//
// String partyId = this.getLoginPartyId();
// String use = request.getParameter("use");
// int isUse = 0;
// if(use!=null){
// isUse = Integer.parseInt(use);
// }
// String phone = request.getParameter("phone");
//
// if(StringUtils.isEmptyString(phone)){
// resultObject.setCode("1");
// resultObject.setMsg("手机号不能为空");
// return resultObject;
// }
//
// String contacts = request.getParameter("contacts");
//
// if(StringUtils.isEmptyString(contacts)){
// resultObject.setCode("1");
// resultObject.setMsg("联系人不能为空");
// return resultObject;
// }
// String address = request.getParameter("address");
//
// if(StringUtils.isEmptyString(address)){
// resultObject.setCode("1");
// resultObject.setMsg("地址不能为空");
// return resultObject;
// }
//
// if(address.length()>100){
// resultObject.setCode("1");
// resultObject.setMsg("地址过长");
// return resultObject;
// }
// goodsService.updateAddress(id,partyId,isUse,phone,contacts,address);
//
// return resultObject;
// }
//
// /**
// * 删除
// * @return
// */
// @PostMapping( action+"del.action")
// public Object del(HttpServletRequest request){
// ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
// if (!"0".equals(resultObject.getCode())) {
// return resultObject;
// }
//
// String id = request.getParameter("id");
// if(StringUtils.isEmptyString(id)){
// resultObject.setCode("1");
// resultObject.setMsg("地址不存在,或者已删除");
// return resultObject;
// }
//
// try {
// goodsService.removeAddress(id);
// }catch (BusinessException e){
// e.printStackTrace();
// resultObject.setCode("1");
// resultObject.setMsg(e.getMessage());
// return resultObject;
// }catch (Exception e1){
// e1.printStackTrace();
// resultObject.setCode("1");
// resultObject.setMsg("删除失败");
// }
//
// return resultObject;
// }
//
// /**
// * 列表地址
// * @return
// */
// @PostMapping( action+"list.action")
// public Object list(){
// ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
// if (!"0".equals(resultObject.getCode())) {
// return resultObject;
// }
// String partyId = this.getLoginPartyId();
// JSONArray jsonArray = new JSONArray();
// for(Useraddress address: goodsService.listAddress(partyId)){
// JSONObject o = new JSONObject();
// o.put("id", address.getId().toString());
// o.put("use", address.getStatus());
// o.put("phone", address.getPhone());
// o.put("contacts", address.getContacts());
// o.put("address", address.getAddress());
// jsonArray.add(o);
// }
//
// JSONObject object = new JSONObject();
// object.put("pageList", jsonArray);
// resultObject.setData(object);
// return resultObject;
// }
//}

View File

@@ -0,0 +1,356 @@
package project.web.api;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import kernel.exception.BusinessException;
import kernel.util.Arith;
import kernel.util.PageInfo;
import kernel.util.StringUtils;
import kernel.web.BaseAction;
import kernel.web.ResultObject;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import project.invest.InvestRedisKeys;
import project.invest.goods.GoodsService;
import project.invest.goods.model.*;
import project.invest.project.model.ProjectLang;
import project.redis.RedisHandler;
import project.syspara.SysparaService;
import project.wallet.WalletExtend;
import project.wallet.WalletService;
import util.DateUtils;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@RestController
@CrossOrigin
public class GoodsController extends BaseAction {
@Resource
private WalletService walletService;
@Resource
private GoodsService goodsService;
@Resource
protected RedisHandler redisHandler;
@Resource
private SysparaService sysparaService;
private static Log logger = LogFactory.getLog(GoodsController.class);
private final String action = "/api/goods!";
@PostMapping( action+"points.action")
public Object getPoint(HttpServletRequest request){
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String partyId = this.getLoginPartyId();
Double point = walletService.getInvestPointBuyPartyId(partyId);
JSONObject object = new JSONObject();
object.put("points", point.intValue());
object.put("rule", sysparaService.find("invest_order_rule").getValue());
resultObject.setData(object);
return resultObject;
}
/**
* 在售
* @return
*/
@PostMapping( action+"list.action")
public Object list(HttpServletRequest request){
ResultObject resultObject = new ResultObject();
PageInfo pageInfo = getPageInfo(request);
String lang = this.getLanguage(request);
JSONArray jsonArray = new JSONArray();
for(Goods pl : goodsService.listGoodsSell(pageInfo.getPageNum(),pageInfo.getPageSize())){
JSONObject o = new JSONObject();
String js = redisHandler.getString(InvestRedisKeys.INVEST_GOODS_LANG+lang+":"+pl.getId().toString());
if(StringUtils.isEmptyString(js)){
continue;
}
GoodsLang pLang = JSONArray.parseObject(js, GoodsLang.class);
if(pLang.getType()==1){
continue;
}
o.put("goodsId", pLang.getGoodsId());
o.put("iconImg",pl.getIconImg());
o.put("name", pLang.getName());
o.put("des", pLang.getDes());
o.put("prize", pl.getPrize());
o.put("lastAmount", pl.getLastAmount());
jsonArray.add(o);
}
JSONObject object = new JSONObject();
object.put("pageInfo", pageInfo);
object.put("pageList", jsonArray);
resultObject.setData(object);
return resultObject;
}
@PostMapping( action+"info.action")
public Object goodsInfo(HttpServletRequest request){
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String goodsId = request.getParameter("goodsId");
Goods pl = goodsService.findById(goodsId);
JSONObject o = new JSONObject();
String lang = this.getLanguage(request);
String js = redisHandler.getString(InvestRedisKeys.INVEST_GOODS_LANG+lang+":"+pl.getId().toString());
GoodsLang pLang = JSONArray.parseObject(js, GoodsLang.class);
o.put("goodsId", pLang.getGoodsId());
o.put("iconImg",pl.getIconImg());
o.put("name", pLang.getName());
o.put("des", pLang.getDes());
o.put("prize", pl.getPrize());
o.put("total", pl.getTotal());
o.put("lastAmount", pl.getLastAmount());
o.put("scale", sysparaService.find("invest_point_exchange_val").getValue());
if(pl.getStatus()!=0){
o.put("lastAmount", 0);
}
o.put("address", "");//地址
o.put("phone", "");//手机号
o.put("contacts", "");//联系人
List<Useraddress> useraddressList = goodsService.getAddressUse(this.getLoginPartyId());
if(useraddressList.size()>0){
o.put("address", useraddressList.get(0).getAddress());//地址
o.put("phone", useraddressList.get(0).getPhone());//手机号
o.put("contacts", useraddressList.get(0).getContacts());//联系人
}
resultObject.setData(o);
return resultObject;
}
/**
* 项目购买
* @return
*/
@PostMapping( action+"goodsBuy.action")
public Object buy(HttpServletRequest request){
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String phone = request.getParameter("phone");
if(StringUtils.isEmptyString(phone)){
resultObject.setCode("1");
resultObject.setMsg("手机号不能为空");
return resultObject;
}
String contacts = request.getParameter("contacts");
if(StringUtils.isEmptyString(contacts)){
resultObject.setCode("1");
resultObject.setMsg("联系人不能为空");
return resultObject;
}
String address = request.getParameter("address");
if(StringUtils.isEmptyString(address)){
resultObject.setCode("1");
resultObject.setMsg("地址不能为空");
return resultObject;
}
String goodsId = request.getParameter("goodsId");
String goodsNum = request.getParameter("goodsNum");
int amount = Integer.parseInt(goodsNum);
if(amount<=0||amount>999999){
resultObject.setCode("1");
resultObject.setMsg("非法请求");
return resultObject;
}
String partyId = this.getLoginPartyId();
try {
goodsService.updateBuyGoods(partyId,goodsId,amount,phone,contacts,address);
}catch (BusinessException e){
resultObject.setCode(String.valueOf(e.getSign()));
resultObject.setMsg(e.getMessage());
return resultObject;
}catch (Exception e1){
e1.printStackTrace();
logger.error("购买失败",e1);
resultObject.setCode("1");
resultObject.setMsg("购买失败,联系客服");
}
return resultObject;
}
/**
* u兑换
* @return
*/
@PostMapping( action+"uExchange.action")
public Object exchange(HttpServletRequest request){
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String goodsId = request.getParameter("goodsId");
String goodsNum = request.getParameter("goodsNum");
String partyId = this.getLoginPartyId();
String lockKey = InvestRedisKeys.INVEST_ORDER_USER_LOCK+partyId;
if(!redisHandler.lock(lockKey,10)){
resultObject.setCode("1");
resultObject.setMsg("正在购买");
return resultObject;
}
try {
goodsService.updateExchangeUsdt(partyId,goodsId,Integer.parseInt(goodsNum),sysparaService.find("invest_point_exchange_val").getLong());
}catch (BusinessException e){
resultObject.setCode(String.valueOf(e.getSign()));
resultObject.setMsg(e.getMessage());
return resultObject;
}catch (Exception e1){
e1.printStackTrace();
logger.error("购买失败",e1);
resultObject.setCode("1");
resultObject.setMsg("购买失败,联系客服");
}
finally {
redisHandler.remove(lockKey);
}
return resultObject;
}
/**
* 兑换记录
* @return
*/
@PostMapping( action+"recordsList.action")
public Object recordsList(HttpServletRequest request){
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String partyId = this.getLoginPartyId();
String type = request.getParameter("type");
PageInfo pageInfo = getPageInfo(request);
JSONObject object = new JSONObject();
object.put("pageInfo", pageInfo);
if(type!=null&&type.equals("0")){
object.put("pageList", pageGoodsBuy(partyId,pageInfo));
}else{
object.put("pageList", pagePointExchange(partyId,pageInfo));
}
resultObject.setData(object);
return resultObject;
}
private JSONArray pageGoodsBuy(String partyId,PageInfo pageInfo ){
JSONArray jsonArray = new JSONArray();
for(GoodsBuy pl : goodsService.listGoodsBuy(partyId,pageInfo.getPageNum(),pageInfo.getPageSize())){
JSONObject o = new JSONObject();
o.put("id", pl.getId());
o.put("createTime", DateUtils.getLongDate(pl.getCreateTime()));
o.put("payVal", pl.getPayPoint());
o.put("status",pl.getStatus());
jsonArray.add(o);
}
return jsonArray;
}
private JSONArray pagePointExchange(String partyId,PageInfo pageInfo ){
JSONArray jsonArray = new JSONArray();
for(PointExchange pl : goodsService.listPointExchange(partyId,pageInfo.getPageNum(),pageInfo.getPageSize())){
JSONObject o = new JSONObject();
o.put("id", pl.getId());
o.put("createTime", DateUtils.getLongDate(pl.getCreateTime()));
o.put("payVal", pl.getPayPoint());
o.put("status",1);
jsonArray.add(o);
}
return jsonArray;
}
/**
* 兑换记录
* @return
*/
@PostMapping( action+"recordsInfo.action")
public Object recordsInfo(HttpServletRequest request){
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String lang = this.getLanguage(request);
String type = request.getParameter("type");
String id = request.getParameter("id");
JSONObject object = new JSONObject();
JSONObject o = new JSONObject();
if(type!=null&&type.equals("0")){
GoodsBuy pl = goodsService.findGoodsBuyById(id);
o.put("id", pl.getId());
o.put("createTime", DateUtils.getLongDate(pl.getCreateTime()));
o.put("payVal", pl.getPayPoint());
o.put("status",pl.getStatus());
Goods g = goodsService.findById(pl.getGoodsId());
String js = redisHandler.getString(InvestRedisKeys.INVEST_GOODS_LANG+lang+":"+pl.getGoodsId());
GoodsLang pLang = JSONArray.parseObject(js, GoodsLang.class);
o.put("goodsName", pLang.getName());
o.put("goodsPrize", g.getPrize());
o.put("goodsImg", g.getIconImg());
o.put("phone", pl.getPhone());
o.put("contacts", pl.getContacts());
o.put("address", pl.getAddress());
o.put("num", pl.getNum());
}else{
PointExchange pl = goodsService.findPointExchangeById(id);
o.put("id", pl.getId());
o.put("createTime", DateUtils.getLongDate(pl.getCreateTime()));
o.put("payVal", pl.getPayPoint());
o.put("status",1);
Goods g = goodsService.findById(pl.getGoodsId());
String js = redisHandler.getString(InvestRedisKeys.INVEST_GOODS_LANG+lang+":"+pl.getGoodsId());
GoodsLang pLang = JSONArray.parseObject(js, GoodsLang.class);
o.put("goodsName", pLang.getName());
o.put("goodsPrize", g.getPrize());
o.put("goodsImg", g.getIconImg());
o.put("num", pl.getNum());
o.put("usdt", pl.getUsdt());
o.put("scale", pl.getScale());
}
object.put("info", o);
resultObject.setData(object);
return resultObject;
}
}

View File

@@ -0,0 +1,151 @@
package project.web.api;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import kernel.util.Arith;
import kernel.util.PageInfo;
import kernel.util.StringUtils;
import kernel.web.BaseAction;
import kernel.web.ResultObject;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import project.invest.InvestRedisKeys;
import project.invest.expert.model.Expert;
import project.invest.project.ProjectService;
import project.invest.project.model.Project;
import project.invest.project.model.ProjectLang;
import project.news.NewsService;
import project.redis.RedisHandler;
import project.syspara.SysparaService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@RestController
@CrossOrigin
public class IndexController extends BaseAction {
@Resource
private NewsService newsService;
@Resource
protected ProjectService projectService;
@Resource
protected RedisHandler redisHandler;
@Resource
private SysparaService sysparaService;
private final String action = "api/index!";
/**
* 首页
* @return
*/
@PostMapping(action + "home.action")
public Object index(HttpServletRequest request){
ResultObject result = new ResultObject();
String lang = request.getParameter("lang");
if(StringUtils.isEmptyString(lang)){
lang = this.getLanguage(request);
}
List<String> announcements = this.newsService.selectAnnouncements(lang);
String links = this.sysparaService.find("index_banner_links").getValue();
JSONObject object = new JSONObject();
if(StringUtils.isNotEmpty(links)){
String[] split = links.split(",");
object.put("banner", split);
}
object.put("service_link", "www.google.com");//todo
object.put("announcement", announcements);
object.put("aboutus", sysparaService.find("invest_order_aboutus").getValue());
result.setData(object);
return result;
}
/**
* 下载连接
* @param request
* @return
*/
@PostMapping( action+"download-url.action")
public Object downloadUrl(HttpServletRequest request){
ResultObject resultObject = new ResultObject();
resultObject.setCode("0");
resultObject.setData(this.sysparaService.find("brush_order_download").getValue());
return resultObject;
}
/**
* 推荐项目
* @return
*/
@PostMapping( action+"homeProject.action")
public Object homeProject(HttpServletRequest request){
ResultObject resultObject = new ResultObject();
PageInfo pageInfo = getPageInfo(request);
String lang = this.getLanguage(request);
JSONArray jsonArray = new JSONArray();
for(Project pl : projectService.listProjectHome(pageInfo.getPageNum(),pageInfo.getPageSize())){
JSONObject o = new JSONObject();
String js = redisHandler.getString(InvestRedisKeys.INVEST_PROJECT_LANG+lang+":"+pl.getId().toString());
if(StringUtils.isEmptyString(js)){
continue;
}
ProjectLang pLang = JSONArray.parseObject(js, ProjectLang.class);
o.put("projectId", pLang.getProjectId());
o.put("type", pl.getType());
o.put("name", pLang.getName());
o.put("investMin", pl.getInvestMin());
o.put("bonusRate",pl.getPointRate());
o.put("bonus",pl.getBonus());
double progress = Arith.roundDown(pl.getInvestProgressMan(),4);
o.put("progress", progress);
o.put("isSellOut",progress>=1?1:0);
jsonArray.add(o);
}
JSONObject object = new JSONObject();
object.put("pageInfo", pageInfo);
object.put("pageList", jsonArray);
resultObject.setData(object);
return resultObject;
}
/**
* 专家分页
* @return
*/
@PostMapping( action+"list_expert.action")
public Object listExpert(HttpServletRequest request){
ResultObject resultObject = new ResultObject();
PageInfo pageInfo = getPageInfo(request);
String lang = this.getLanguage(request);
JSONArray jsonArray = new JSONArray();
for(Expert ns : newsService.listExpertPage(lang,pageInfo.getPageNum(),pageInfo.getPageSize())){
JSONObject o = new JSONObject();
o.put("iconImg", ns.getIconImg());
o.put("name", ns.getName());
o.put("summary", ns.getSummary());
o.put("content",ns.getContent());
jsonArray.add(o);
}
JSONObject object = new JSONObject();
object.put("pageInfo", pageInfo);
object.put("pageList", jsonArray);
resultObject.setData(object);
return resultObject;
}
}

View File

@@ -0,0 +1,357 @@
package project.web.api;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import kernel.exception.BusinessException;
import kernel.util.Arith;
import kernel.util.PageInfo;
import kernel.util.StringUtils;
import kernel.web.BaseAction;
import kernel.web.ResultObject;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import project.invest.InvestRedisKeys;
import project.invest.project.ProjectService;
import project.invest.project.model.InvestOrders;
import project.invest.project.model.InvestRebate;
import project.invest.project.model.Project;
import project.invest.project.model.ProjectLang;
import project.party.PartyService;
import project.party.model.Party;
import project.redis.RedisHandler;
import project.user.kyc.Kyc;
import project.user.kyc.KycService;
import util.DateUtils;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@RestController
@CrossOrigin
public class ProjectController extends BaseAction {
@Resource
protected ProjectService projectService;
@Resource
protected RedisHandler redisHandler;
@Resource
protected KycService kycService;
@Autowired
private PartyService partyService;
private static Log logger = LogFactory.getLog(ProjectController.class);
private final String action = "/api/project!";
/**
* 项目分类
* @return
*/
@PostMapping( action+"listCategory.action")
public Object listCategory(HttpServletRequest request){
ResultObject resultObject = new ResultObject();
JSONArray jsonArray = new JSONArray();
// for(Category category: projectService.listCategorys(this.getLanguage(request))){
// JSONObject o = new JSONObject();
// o.put("baseId", category.getBaseId());
// o.put("name", category.getName());
// jsonArray.add(o);
// }
JSONObject object = new JSONObject();
object.put("pageList", jsonArray);
resultObject.setData(object);
return resultObject;
}
/**
* 在售项目
* @return
*/
@PostMapping( action+"listProject.action")
public Object listProject(HttpServletRequest request){
ResultObject resultObject = new ResultObject();
String baseId = request.getParameter("baseId");
PageInfo pageInfo = getPageInfo(request);
String lang = this.getLanguage(request);
JSONArray jsonArray = new JSONArray();
for(Project pl : projectService.listProjectSell(baseId,pageInfo.getPageNum(),pageInfo.getPageSize())){
JSONObject o = new JSONObject();
String js = redisHandler.getString(InvestRedisKeys.INVEST_PROJECT_LANG+lang+":"+pl.getId().toString());
if(StringUtils.isEmptyString(js)){
continue;
}
ProjectLang pLang = JSONArray.parseObject(js, ProjectLang.class);
o.put("projectId", pLang.getProjectId());
o.put("type", pl.getType());
o.put("repeating", pl.isRepeating());
o.put("name", pLang.getName());
o.put("investMin", pl.getInvestMin());
o.put("bonusRate",pl.getBonusRate());
o.put("bonus",pl.getBonus());
double progress = Arith.roundDown(pl.getInvestProgressMan(),4);
o.put("progress", progress>1?1:progress);
o.put("isSellOut",progress>=1?1:0);
jsonArray.add(o);
}
JSONObject object = new JSONObject();
object.put("pageInfo", pageInfo);
object.put("pageList", jsonArray);
resultObject.setData(object);
return resultObject;
}
/**
* 项目详情
* @return
*/
@PostMapping( action+"projectInfo.action")
public Object projectInfo(HttpServletRequest request){
ResultObject resultObject = new ResultObject();
String projectId = request.getParameter("projectId");
String lang = this.getLanguage(request);
Project pl = projectService.getProject(projectId);
JSONObject o = new JSONObject();
String js = redisHandler.getString(InvestRedisKeys.INVEST_PROJECT_LANG+lang+":"+pl.getId().toString());
ProjectLang pLang = JSONArray.parseObject(js, ProjectLang.class);
o.put("projectId", pLang.getProjectId());
o.put("name", pLang.getName());
o.put("investSize", pl.getInvestSize());
o.put("investMin", pl.getInvestMin());
o.put("investMax", pl.getInvestMax());
o.put("bonusRate",pl.getBonusRate());
o.put("bonus",pl.getBonus());
double progress = Arith.roundDown(pl.getInvestProgressMan(),4);
o.put("progress", progress>1?1:progress);
o.put("isSellOut",progress>=1?1:0);
o.put("type",pl.getType());
o.put("repeating", pl.isRepeating());
o.put("pointRate",pl.getPointRate());
o.put("iconImg",pl.getIconImg());
o.put("guarantyAgency",pLang.getGuarantyAgency());
o.put("desSettle",pLang.getDesSettle());
o.put("desUse",pLang.getDesUse());
o.put("desSafe",pLang.getDesSafe());
JSONObject object = new JSONObject();
object.put("project", o);
resultObject.setData(object);
return resultObject;
}
/**
* 项目购买
* @return
*/
@PostMapping( action+"buy.action")
public Object buy(HttpServletRequest request){
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String partyId = this.getLoginPartyId();
String safeword = request.getParameter("safeword");
Party party = partyService.cachePartyBy(partyId, false);
String partySafeword = party.getSafeword();
if(StringUtils.isEmptyString(partySafeword)){
throw new BusinessException(999, "请设置资金密码");
}
if (StringUtils.isEmptyString(safeword)) {
throw new BusinessException("资金密码不能为空");
}
if (safeword.length() < 6 || safeword.length() > 12) {
throw new BusinessException("资金密码必须6-12位");
}
if (!this.partyService.checkSafeword(safeword, partyId)) {
throw new BusinessException("资金密码错误");
}
Kyc kyc = this.kycService.get(partyId);
if (null == kyc ) {
resultObject.setCode("800");
resultObject.setMsg("尚未KYC认证");
return resultObject;
}
if ( kyc.getStatus() != 2) {
resultObject.setCode("801");
resultObject.setMsg("KYC认证尚未通过");
return resultObject;
}
String projectId = request.getParameter("projectId");
double amount = Double.parseDouble(request.getParameter("amount"));
amount = Arith.roundDown(amount,2);
if(amount<=0||amount>999999){
resultObject.setCode("1");
resultObject.setMsg("非法请求");
return resultObject;
}
String lockKey = InvestRedisKeys.INVEST_ORDER_USER_LOCK+partyId;
if(!redisHandler.lock(lockKey,10)){
resultObject.setCode("1");
resultObject.setMsg("正在购买");
return resultObject;
}
try {
projectService.updateBuyProject(partyId,projectId,amount);
}catch (BusinessException e){
resultObject.setCode(String.valueOf(e.getSign()));
resultObject.setMsg(e.getMessage());
return resultObject;
}catch (Exception e1){
e1.printStackTrace();
logger.error("购买失败",e1);
resultObject.setCode("1");
resultObject.setMsg("购买失败,联系客服");
}
finally {
redisHandler.remove(lockKey);
}
JSONObject object = new JSONObject();
resultObject.setData(object);
return resultObject;
}
/**
* 我的投资
* @return
*/
@PostMapping( action+"investInfo.action")
public Object myInvestInfo(){
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
JSONObject object = new JSONObject();
object.put("investInfo", projectService.getMyInvestInfo(this.getLoginPartyId()));
resultObject.setData(object);
return resultObject;
}
/**
* 我的投资
* @return
*/
@PostMapping( action+"investList.action")
public Object myInvestList(HttpServletRequest request){
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String partyId = this.getLoginPartyId();
PageInfo pageInfo = getPageInfo(request);
String lang = this.getLanguage(request);
JSONArray jsonArray = new JSONArray();
for(InvestOrders pl : projectService.listProjectMy(partyId,pageInfo.getPageNum(),pageInfo.getPageSize())){
JSONObject o = new JSONObject();
String js = redisHandler.getString(InvestRedisKeys.INVEST_PROJECT_LANG+lang+":"+pl.getProjectId());
if(StringUtils.isEmptyString(js)){
continue;
}
ProjectLang pLang = JSONArray.parseObject(js, ProjectLang.class);
o.put("orderId", pl.getId());
o.put("name", pLang.getName());
o.put("status", pl.getStatus());
o.put("type", pl.getType());
o.put("createTime", DateUtils.getLongDate(pl.getCreateTime()));
long pass = System.currentTimeMillis()- pl.getCreateTime().getTime();
if(pl.getType()<=2){
pass /= 3600000L;
}else{
pass /= 86400000L;
}
if(pass>pl.getBonus()){
pass = pl.getBonus();
}
o.put("remainDays",pl.getBonus()-pass) ;
o.put("passDays",pass) ;
double valDay = Arith.mul(pl.getAmount(),pl.getBonusRateVip());
o.put("valDay", valDay);
o.put("valPassDay", Arith.roundDown(Arith.mul(valDay,pass),2));
o.put("incomeWill",pl.getIncomeWill());
jsonArray.add(o);
}
JSONObject object = new JSONObject();
object.put("pageInfo", pageInfo);
object.put("pageList", jsonArray);
resultObject.setData(object);
return resultObject;
}
/**
* 项目收益信息
* @return
*/
@PostMapping( action+"projectIncomeInfo.action")
public Object projectIncomeInfo(HttpServletRequest request){
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String orderId = request.getParameter("orderId");
JSONObject object = new JSONObject();
object.put("projectIncome", projectService.getProjectIncome(orderId));
resultObject.setData(object);
return resultObject;
}
/**
* 项目收益列表
* @return
*/
@PostMapping( action+"projectIncomeList.action")
public Object projectIncomeList(HttpServletRequest request){
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
PageInfo pageInfo = getPageInfo(request);
String orderId = request.getParameter("orderId");
JSONArray jsonArray = new JSONArray();
for(InvestRebate pl : projectService.listProjectIncome(orderId,pageInfo.getPageNum(),pageInfo.getPageSize())){
JSONObject o = new JSONObject();
o.put("realTime", pl.getRealTime());
o.put("income",pl.getRebate());
jsonArray.add(o);
}
JSONObject object = new JSONObject();
object.put("pageInfo", pageInfo);
object.put("pageList", jsonArray);
resultObject.setData(object);
return resultObject;
}
}

View File

@@ -0,0 +1,305 @@
package project.web.api;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import kernel.util.PageInfo;
import kernel.web.BaseAction;
import kernel.web.ResultObject;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import project.invest.platform.BrushClient;
import project.invest.project.ProjectService;
import project.invest.project.model.InvestRebate;
import project.invest.vip.VipService;
import project.invest.vip.model.Vip;
import project.party.PartyService;
import project.party.model.Party;
import project.syspara.SysparaService;
import util.TwoValues;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@RestController
@CrossOrigin
public class PromoteController extends BaseAction {
private static Log logger = LogFactory.getLog(PromoteController.class);
private final String action = "/api/promote!";
@Resource
private PartyService partyService;
@Resource
private SysparaService sysparaService;
@Resource
protected ProjectService projectService;
@Resource
private VipService vipService;
/**
* 我的推广
* @return
*/
@PostMapping( action+"my.action")
public Object stats(){
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String partyId = this.getLoginPartyId();
Party party = partyService.cachePartyBy(partyId,false);
JSONObject object = new JSONObject();
object.put("code", party.getUsercode());
object.put("rebate1", 0);
object.put("rebate2", 0);
Vip v = vipService.selectById(party.getVip_level());
if(v!=null){
object.put("rebate1", v.getRebate1());
object.put("rebate2", v.getRebate2());
}
object.put("download", sysparaService.find("invest_order_share").getValue());
resultObject.setData(object);
return resultObject;
}
/**
* vip 进度
* @return
*/
@PostMapping( action+"my_vip.action")
public Object myVip(){
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String partyId = this.getLoginPartyId();
Party party = partyService.cachePartyBy(partyId,false);
JSONObject object = new JSONObject();
object.put("vip_level", party.getVip_level());
Vip v = vipService.selectById(party.getVip_level());
object.put("vipName", v.getName());
object.put("subSales", 999999999);
object.put("subCount", 999999999);
object.put("rebate1", 0);
object.put("rebate2", 0);
object.put("rebate0", 0);
if(v!=null){
TwoValues<Integer,Double> rn = vipService.getInvestPromotion(partyId);
object.put("subSales", rn.getTwo());
object.put("subCount", rn.getOne());
object.put("rebate1", v.getRebate1());
object.put("rebate2", v.getRebate2());
object.put("rebate0", v.getRebate0());
}
resultObject.setData(object);
return resultObject;
}
/**
* vip 配置
*/
@PostMapping( action+"vip_configs.action")
public Object vipConfigs(){
ResultObject resultObject = new ResultObject();
JSONArray jsonArray = new JSONArray();
for(Vip vip : vipService.listVip()){
JSONObject o = new JSONObject();
o.put("vip", vip.getId());
o.put("name", vip.getName());
o.put("subSales", vip.getSubSales());
o.put("subCount", vip.getSubCount());
o.put("rebate1", vip.getRebate1());
o.put("rebate2", vip.getRebate2());
o.put("rebate0", vip.getRebate0());
jsonArray.add(o);
}
JSONObject object = new JSONObject();
object.put("pageList", jsonArray);
resultObject.setData(object);
return resultObject;
}
/**
* 佣金列表
* @return
*/
@PostMapping( action+"rebate_list.action")
public Object listRebate(HttpServletRequest request){
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String partyId = this.getLoginPartyId();
PageInfo pageInfo = getPageInfo(request);
List<InvestRebate> list = projectService.listInvestRebate(partyId,pageInfo.getPageNum(),pageInfo.getPageSize());
JSONArray jsonArray = new JSONArray();
for(InvestRebate rebate : list){
JSONObject o = new JSONObject();
o.put("orderId", rebate.getOrderId());
o.put("level", rebate.getLevel());
o.put("realTime",rebate.getRealTime());
o.put("rebate",rebate.getRebate());
jsonArray.add(o);
}
JSONObject object = new JSONObject();
object.put("pageInfo", pageInfo);
object.put("pageList", jsonArray);
resultObject.setData(object);
return resultObject;
}
/**
* 我的团队
* @return
*/
@PostMapping( action+"team_info.action")
public Object teamInfo(){
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String partyId = this.getLoginPartyId();
resultObject.setData(projectService.getTeamInfo(partyId));
return resultObject;
}
/**
* 三级推广
* @return
*/
@PostMapping( action+"team_level.action")
public Object teamLevel(HttpServletRequest request){
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String levelString = request.getParameter("level");
if(levelString==null){
levelString = "0";
}
Integer level = Integer.parseInt(levelString);
if(level==null||level<1||level>2){
level = 1;
}
String partyId = this.getLoginPartyId();
PageInfo pageInfo = getPageInfo(request);
if(pageInfo.getPageSize()>10){
pageInfo.setPageSize(10);
}
JSONObject object = new JSONObject();
object.put("pageInfo", pageInfo);
object.put("pageList", projectService.listRebateByLevel(partyId,level,pageInfo.getPageNum(),pageInfo.getPageSize()));
resultObject.setData(object);
return resultObject;
}
/**
* 客户端信息
* @return
*/
@PostMapping( action+"client.action")
public Object client(HttpServletRequest request){
ResultObject resultObject = new ResultObject();
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
JSONObject object = new JSONObject();
object.put("plantform", "0");
String id = request.getParameter("plantform");
if(id==null||!id.equals("1")&&!id.equals("2")){
resultObject.setData(object);
return resultObject;
}
String lang = request.getParameter("lang");
if(lang==null){
lang = "en";
}
BrushClient client =vipService.getBrushClient(id+lang);
if(client==null){
resultObject.setData(object);
return resultObject;
}
object.put("plantform", id);
object.put("latestVersion", client.getLatestVersion());
object.put("title", client.getTitle());
object.put("content", client.getContent());
object.put("downloadlink", client.getDownloadlink());
object.put("status", client.getStatus());
resultObject.setData(object);
return resultObject;
}
/**
* 学习
* @return
*/
@PostMapping( action+"learn.action")
public Object learn(HttpServletRequest request){
ResultObject resultObject = new ResultObject();
JSONObject object = new JSONObject();
object.put("lockTime", sysparaService.find("brush_order_luckminute").getInteger());
resultObject.setData(object);
return resultObject;
}
}