main
tamguo 7 years ago
parent e3a9ae252a
commit 848f311f64

@ -8,6 +8,8 @@
<link rel="stylesheet" th:href="${domainName + 'static/css/member/index.css'}" />
<link rel="stylesheet" th:href="${domainName + 'static/css/member/memberMain.css'}" />
<link type="favicon" rel="shortcut icon" th:href="${domainName + 'static/images/favicon.png'}" />
<!-- 引入样式 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/element-ui@2.4.2/lib/theme-chalk/index.css">
</head>
<body>
<!-- 头部-->
@ -51,7 +53,7 @@
</div>
</div>
<div class="PCshow hide" style="display: block;">
<div class="PCshow hide" style="display: block;" id="container">
<div class="examContent public">
<h2>
<img th:src="${domainName + 'static/images/member/index/face-xiao.png'}"
@ -87,9 +89,9 @@
<b style="margin-left:14px;color:#009688;" id="examCandsNum" th:text="${member.point + ' '}">1000</b>
</li>
<li style="padding-left: 24px;">余额:<b style="margin-left: 19px;color:#009688;" th:text="${#numbers.formatDecimal(member.amount,1,2) + ' '}">50</b></li>
<li style="padding-left: 21px;">最近登录时间:<b style="margin-left: 13px;" th:text="${#dates.format(member.lastLoginTime * 1000, 'yyyy/MM/ss HH:mm')}">2018-04-27 10:32</b></li>
<li style="padding-left: 21px;">最近登录时间:<b style="margin-left: 13px;" th:text="${#dates.format(member.lastLoginTime, 'yyyy/MM/ss HH:mm')}">2018-04-27 10:32</b></li>
</ul>
<a th:href="${domainName}" target="_blank" id="addMoney">我的钱包</a>
<a @click="withdrawMoney" target="_blank" id="addMoney">提现</a>
</div>
</div>
<!-- 右侧信息显示 -->
@ -130,5 +132,23 @@
<!-- 尾部-->
<div th:replace="include/footer :: footer"></div>
<!-- 引入组件库 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16"></script>
<script src="https://cdn.jsdelivr.net/npm/axios@0.18.0/dist/axios.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/element-ui@2.4.2/lib/index.js"></script>
<script type="text/javascript">
// Vue
var vm = new Vue({
el:'#container',
data:{
},
methods: {
withdrawMoney:function(){
this.$message.error('提现功能在开发中,可联系管理员提现。 微信号TamGooo ');
}
}
});
</script>
</body>
</html>

@ -30,6 +30,8 @@ public class BookEntity extends Model<BookEntity>{
private List<String> categoryIds;
@TableField(exist=false)
private String memberName;
@TableField(exist=false)
private String categoryName;
public String getId() {
return id;
@ -107,4 +109,10 @@ public class BookEntity extends Model<BookEntity>{
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public String getCategoryName() {
return categoryName;
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
}

@ -2,6 +2,7 @@ package com.tamguo.modules.member.model;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
@ -15,8 +16,6 @@ import com.tamguo.config.dao.SuperEntity;
public class MemberEntity extends SuperEntity<MemberEntity> implements Serializable {
private static final long serialVersionUID = 1L;
private String subjectId;
private String username;
private String nickName;
@ -33,7 +32,7 @@ public class MemberEntity extends SuperEntity<MemberEntity> implements Serializa
private BigDecimal amount;
private Long lastLoginTime;
private Date lastLoginTime;
private Integer paperNum;
@ -105,14 +104,6 @@ public class MemberEntity extends SuperEntity<MemberEntity> implements Serializa
this.amount = amount;
}
public Long getLastLoginTime() {
return lastLoginTime;
}
public void setLastLoginTime(Long lastLoginTime) {
this.lastLoginTime = lastLoginTime;
}
public Integer getPaperNum() {
return paperNum;
}
@ -161,14 +152,6 @@ public class MemberEntity extends SuperEntity<MemberEntity> implements Serializa
this.verifyCode = verifyCode;
}
public String getSubjectId() {
return subjectId;
}
public void setSubjectId(String subjectId) {
this.subjectId = subjectId;
}
public String getNowPassword() {
return nowPassword;
}
@ -176,4 +159,12 @@ public class MemberEntity extends SuperEntity<MemberEntity> implements Serializa
public void setNowPassword(String nowPassword) {
this.nowPassword = nowPassword;
}
public Date getLastLoginTime() {
return lastLoginTime;
}
public void setLastLoginTime(Date lastLoginTime) {
this.lastLoginTime = lastLoginTime;
}
}

@ -0,0 +1,43 @@
package com.tamguo.modules.member.model.condition;
public class MemberCondition {
private Integer pageNo;
private Integer pageSize;
private String mobile;
private String username;
private String nickName;
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public Integer getPageNo() {
return pageNo;
}
public void setPageNo(Integer pageNo) {
this.pageNo = pageNo;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
}

@ -1,8 +1,12 @@
package com.tamguo.modules.member.service;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.tamguo.common.utils.Result;
import com.tamguo.modules.member.model.MemberEntity;
import com.tamguo.modules.member.model.condition.MemberCondition;
public interface IMemberService extends IService<MemberEntity>{
@ -53,5 +57,11 @@ public interface IMemberService extends IService<MemberEntity>{
/** 修改密码 */
public Result updatePwd(MemberEntity member);
/** 公司列表*/
public Page<MemberEntity> listData(MemberCondition condition);
/** 奖励*/
public void reward(String id , String bookId , Integer rewardPoint, BigDecimal rewardMoney);
}

@ -1,5 +1,7 @@
package com.tamguo.modules.member.service.impl;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import org.apache.commons.lang3.StringUtils;
@ -8,15 +10,20 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.aliyuncs.exceptions.ClientException;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.tamguo.common.utils.DateUtil;
import com.tamguo.common.utils.Result;
import com.tamguo.common.utils.SystemConstant;
import com.tamguo.config.redis.CacheService;
import com.tamguo.modules.book.model.BookEntity;
import com.tamguo.modules.book.service.IBookService;
import com.tamguo.modules.member.dao.MemberMapper;
import com.tamguo.modules.member.model.MemberEntity;
import com.tamguo.modules.member.model.condition.MemberCondition;
import com.tamguo.modules.member.service.IMemberService;
import com.tamguo.modules.sys.service.ISmsService;
@Service
public class MemberService extends ServiceImpl<MemberMapper, MemberEntity> implements IMemberService{
@ -25,6 +32,10 @@ public class MemberService extends ServiceImpl<MemberMapper, MemberEntity> imple
private MemberMapper memberMapper;
@Autowired
private CacheService cacheService;
@Autowired
private ISmsService iSmsService;
@Autowired
private IBookService iBookService;
@Override
public Result login(String username, String password) {
@ -108,7 +119,6 @@ public class MemberService extends ServiceImpl<MemberMapper, MemberEntity> imple
entity.setPassword(new Sha256Hash(member.getPassword()).toHex());
entity.setUsername(member.getUsername());
entity.setNickName(member.getUsername());
entity.setSubjectId(member.getSubjectId());
entity.setEmail(member.getEmail());
memberMapper.insert(entity);
return Result.result(200, entity, "注册成功");
@ -189,7 +199,6 @@ public class MemberService extends ServiceImpl<MemberMapper, MemberEntity> imple
entity.setAvatar(member.getAvatar());
entity.setEmail(member.getEmail());
entity.setMobile(member.getMobile());
entity.setSubjectId(member.getSubjectId());
entity.setNickName(member.getNickName());
memberMapper.updateById(entity);
@ -213,7 +222,7 @@ public class MemberService extends ServiceImpl<MemberMapper, MemberEntity> imple
@Override
public void updateLastLoginTime(String uid) {
MemberEntity member = memberMapper.selectById(uid);
member.setLastLoginTime(DateUtil.getTime());
member.setLastLoginTime(new Date());
memberMapper.updateById(member);
}
@ -237,5 +246,43 @@ public class MemberService extends ServiceImpl<MemberMapper, MemberEntity> imple
entity.setPassword(new Sha256Hash(member.getNowPassword()).toHex());
return Result.result(0, null, "修改成功");
}
@SuppressWarnings("unchecked")
@Transactional(readOnly=true)
@Override
public Page<MemberEntity> listData(MemberCondition condition) {
Page<MemberEntity> page = new Page<>(condition.getPageNo(), condition.getPageSize());
Condition query = Condition.create();
if(!StringUtils.isEmpty(condition.getMobile())) {
query.eq("mobile", condition.getMobile());
}
if(!StringUtils.isEmpty(condition.getNickName())) {
query.like("nick_name", condition.getNickName());
}
if(!StringUtils.isEmpty(condition.getUsername())) {
query.eq("username", condition.getUsername());
}
return this.selectPage(page, query);
}
@Transactional(readOnly=false)
@Override
public void reward(String id ,String bookId , Integer rewardPoint, BigDecimal rewardMoney) {
MemberEntity member = memberMapper.selectById(id);
// 更新记录
member.setPoint(member.getPoint() + rewardPoint);
member.setAmount(member.getAmount().add(rewardMoney));
this.updateById(member);
BookEntity book = iBookService.selectById(bookId);
// 发送短信
try {
iSmsService.sendRewardSms(member.getMobile(), member.getUsername(), book.getName(), rewardPoint, rewardMoney);
} catch (ClientException e) {
e.printStackTrace();
}
}
}

@ -1,5 +1,7 @@
package com.tamguo.modules.sys.service;
import java.math.BigDecimal;
import com.aliyuncs.exceptions.ClientException;
import com.tamguo.common.utils.Result;
@ -7,4 +9,6 @@ public interface ISmsService {
public Result sendFindPasswordSms(String mobile) throws ClientException;
public Result sendRewardSms(String mobile ,String name , String bookName , Integer point, BigDecimal money) throws ClientException;
}

@ -1,5 +1,7 @@
package com.tamguo.modules.sys.service.impl;
import java.math.BigDecimal;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -59,4 +61,42 @@ public class SmsServiceImpl implements ISmsService{
return Result.result(501, null, response.getMessage());
}
@Override
public Result sendRewardSms(String mobile , String name ,String bookName , Integer point, BigDecimal money) throws ClientException {
//可自助调整超时时间
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化acsClient,暂不支持region化
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", SystemConstant.ALIYUN_ACCESS_KEY_ID, SystemConstant.ALIYUN_ACCESS_KEY_SECRET);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "Dysmsapi", "dysmsapi.aliyuncs.com");
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象-具体描述见控制台-文档部分内容
SendSmsRequest request = new SendSmsRequest();
//必填:待发送手机号
request.setPhoneNumbers(mobile);
//必填:短信签名-可在短信控制台中找到
request.setSignName("探果网");
//必填:短信模板-可在短信控制台中找到
request.setTemplateCode("SMS_152285431");
Integer vcode = (int) ((Math.random()*9+1)*100000);
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
request.setTemplateParam("{\"name\":\""+vcode+"\"}");
//选填-上行短信扩展码(无特殊需求用户请忽略此字段)
//request.setSmsUpExtendCode("90997");
//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
request.setOutId("yourOutId");
//hint 此处可能会抛出异常注意catch
SendSmsResponse response = acsClient.getAcsResponse(request);
if("OK".equals(response.getCode())) {
cacheService.setObject(SystemConstant.ALIYUN_MOBILE_SMS_PREFIX + mobile , vcode.toString() , 10 * 60);
return Result.result(200, null, "发送成功");
}
return Result.result(501, null, response.getMessage());
}
}

@ -0,0 +1,89 @@
package com.tamguo.modules.tiku.web;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.plugins.Page;
import com.tamguo.common.utils.Result;
import com.tamguo.modules.book.model.BookCategoryEntity;
import com.tamguo.modules.book.model.BookEntity;
import com.tamguo.modules.book.service.IBookCategoryService;
import com.tamguo.modules.book.service.IBookService;
import com.tamguo.modules.member.model.MemberEntity;
import com.tamguo.modules.member.model.condition.MemberCondition;
import com.tamguo.modules.member.service.IMemberService;
@Controller
@RequestMapping(value="tiku/member")
public class MemberController {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
IMemberService iMemberService;
@Autowired
IBookService iBookService;
@Autowired
IBookCategoryService iBookCategoryService;
@RequestMapping(value="list")
public ModelAndView list(ModelAndView model) {
model.setViewName("modules/tiku/member/list");
return model;
}
@RequestMapping(value="listData" , method=RequestMethod.POST)
@ResponseBody
public Map<String, Object> listData(MemberCondition condition){
Page<MemberEntity> page = iMemberService.listData(condition);
return Result.jqGridResult(page.getRecords(), page.getTotal(), page.getSize(), page.getCurrent(), page.getPages());
}
@RequestMapping(value="reward" , method=RequestMethod.GET)
public ModelAndView reward(String id , ModelAndView model) {
model.setViewName("modules/tiku/member/reward");
model.addObject("member", iMemberService.selectById(id));
return model;
}
@SuppressWarnings("unchecked")
@RequestMapping(value="bookTreeData",method=RequestMethod.POST)
@ResponseBody
public List<BookEntity> bookTreeData(String memberId){
List<BookEntity> bookList = iBookService.selectList(Condition.create().eq("owner", memberId).orderDesc(Arrays.asList("create_date")));
if(!CollectionUtils.isEmpty(bookList)) {
for(int i=0 ; i<bookList.size() ; i++) {
BookEntity book = bookList.get(i);
BookCategoryEntity category = iBookCategoryService.selectById(book.getCategoryId());
book.setCategoryName(category.getName());
}
}
return bookList;
}
@RequestMapping(value="reward" , method=RequestMethod.POST)
@ResponseBody
public Result submitReward(String id , String bookId , Integer rewardPoint , BigDecimal rewardMoney) {
try {
iMemberService.reward(id , bookId , rewardPoint , rewardMoney);
return Result.result(0, null, "奖励成功!");
} catch (Exception e) {
logger.error(e.getMessage() , e);
return Result.result(1, null, "奖励失败!");
}
}
}

@ -1,7 +1,7 @@
domain.name=http://localhost/
static.domain=http://localhost/
domain.name=http://admin.tamguo.com/
static.domain=http://admin.tamguo.com/
version=V1.0.0
server.port=80
server.port=8082
jasypt.encryptor.password=tamguo
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
@ -13,14 +13,14 @@ spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
spring.datasource.maxWait=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.minIdle=5
spring.datasource.password=123456
spring.datasource.password=tanguo520pig
spring.datasource.poolPreparedStatements=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
spring.datasource.testWhileIdle=true
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/tamguo_20181110?useUnicode=true&characterEncoding=UTF-8&useSSL=false
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/tamguo?useUnicode=true&characterEncoding=UTF-8&useSSL=false
spring.datasource.username=root
spring.datasource.validationQuery=SELECT 1 FROM DUAL

@ -1 +1 @@
lang='zh_CN',ctx='http://localhost/',ctxPath='/',ctxAdmin='/',ctxFront='/f',ctxStatic='static',Global={SHOW:'1',HIDE:'0',OP_AUTH:'auth',OP_ADD:'add',FALSE:'false',USERFILES_BASE_URL:'/userfiles/',YES:'1',TRUE:'true',NO:'0',OP_EDIT:'edit',STATUS_DELETE:'1',STATUS_NORMAL:'0',STATUS_DRAFT:'9',STATUS_AUDIT_BACK:'5',STATUS_DISABLE:'2',STATUS_FREEZE:'3',STATUS_AUDIT:'4'}
lang='zh_CN',ctx='http://admin.tamguo.com/',ctxPath='/',ctxAdmin='/',ctxFront='/f',ctxStatic='static',Global={SHOW:'1',HIDE:'0',OP_AUTH:'auth',OP_ADD:'add',FALSE:'false',USERFILES_BASE_URL:'/userfiles/',YES:'1',TRUE:'true',NO:'0',OP_EDIT:'edit',STATUS_DELETE:'1',STATUS_NORMAL:'0',STATUS_DRAFT:'9',STATUS_AUDIT_BACK:'5',STATUS_DISABLE:'2',STATUS_FREEZE:'3',STATUS_AUDIT:'4'}

@ -10,7 +10,7 @@
<meta content="no-cache" http-equiv="Pragma" />
<meta http-equiv="Expires" content="0" />
<meta content="width=device-width, initial-scale=1, user-scalable=1" name="viewport" />
<title>登录 - Repas OMS</title>
<title>登录 - TamGuo OMS</title>
<script src="global.min.js?ctx=/js/a"></script>
<script th:src="${setting.staticDomain + 'jquery/jquery-1.12.4.min.js'}"></script>
<script th:src="${setting.staticDomain + 'jquery/jquery-migrate-1.4.1.min.js'}"></script>
@ -30,7 +30,7 @@
<link rel="stylesheet" th:href="${setting.staticDomain + 'modules/sys/sysLogin.css'}">
<div class="login-box">
<div class="login-logo">
<a th:href="${setting.domain}"><b>Repas OMS</b> <small th:text="${setting.version}">1.0.0</small></a>
<a th:href="${setting.domain}"><b>TamGuo OMS</b> <small th:text="${setting.version}">1.0.0</small></a>
</div>
<div class="login-box-body">
<form id="loginForm" th:action="${setting.domain + 'login'}" method="post">
@ -100,7 +100,7 @@
</div>
</div>
<div class="login-copyright">
&copy; 2018 Repas OMS - Powered By <a href="http://www.Repas.com" th:text="${'Repas OMS' + setting.version}">Repas
&copy; 2018 TamGuo OMS - Powered By <a href="https://www.tamguo.com" th:text="${'TamGuo OMS' + setting.version}">Repas
</a>
</div>
</div>
@ -118,7 +118,7 @@
<script th:src="${setting.staticDomain + 'common/jeesite.js'}"></script>
<script th:src="${setting.staticDomain + 'common/i18n/jeesite_zh_CN.js'}"></script>
<script th:src="${setting.staticDomain + 'common/common.js'}"></script>
<script>var secretKey = 'Repas,Repas,com';</script>
<script>var secretKey = 'Tamguo,Tamguo,com';</script>
<script th:src="${setting.staticDomain + 'jquery-toastr/2.0/toastr.min.js'}"></script>
<script th:src="${setting.staticDomain + 'common/des.js'}"></script>
<script th:src="${setting.staticDomain + 'modules/sys/sysLogin.js'}"></script>

@ -3,7 +3,7 @@ content="IE=edge"><meta name="keywords" content="PoweredByJeeSiteV4.0"/><meta ht
content="no-cache, no-store, must-revalidate"/><meta name="description" content="PoweredByJeeSiteV4.0"/><meta
content="no-cache" http-equiv="Pragma"/><meta http-equiv="Expires" content="0"/><meta
content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<title>章节管理 - JeeSite Demo</title>
<title>章节管理 - TamGuo OMS</title>
<script th:src="${setting.domain + 'global.min.js'}"></script>
<script th:src="${setting.domain + 'jquery/jquery-1.12.4.min.js'}"></script>
<script th:src="${setting.domain + 'jquery/jquery-migrate-1.4.1.min.js'}"></script>
@ -73,7 +73,7 @@ var setting = {view:{selectedMulti:false},data:{key:{title:"title"},simpleData:
win.page();
}}
}, tree, loadTree = function(){
js.ajaxSubmit(ctx + "tiku/book/treeData?___t=" + new Date().getTime(), {ctrlPermi:'2'/*1拥有的权限 2管理的权限*/}, function(data){
js.ajaxSubmit(ctx + "tiku/knowpoint/treeData?___t=" + new Date().getTime(), {ctrlPermi:'2'/*1拥有的权限 2管理的权限*/}, function(data){
tree = $.fn.zTree.init($("#tree"), setting, data);//.expandAll(true);
// 展开第一级节点
/* var nodes = tree.getNodesByParam("level", 0);

@ -7,7 +7,7 @@ content="IE=edge"><meta name="keywords" content="PoweredByJeeSiteV4.0"/><meta ht
content="no-cache, no-store, must-revalidate"/><meta name="description" content="PoweredByJeeSiteV4.0"/><meta
content="no-cache" http-equiv="Pragma"/><meta http-equiv="Expires" content="0"/><meta
content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<title>章节管理 - JeeSite Demo</title>
<title>章节管理 - Tamguo OMS</title>
<script th:src="${setting.domain + 'global.min.js?ctx=/js/a'}"></script>
<script th:src="${setting.domain + 'jquery/jquery-1.12.4.min.js'}"></script>
<script th:src="${setting.domain + 'jquery/jquery-migrate-1.4.1.min.js'}"></script>

@ -3,7 +3,7 @@ content="IE=edge"><meta name="keywords" content="PoweredByJeeSiteV4.0"/><meta ht
content="no-cache, no-store, must-revalidate"/><meta name="description" content="PoweredByJeeSiteV4.0"/><meta
content="no-cache" http-equiv="Pragma"/><meta http-equiv="Expires" content="0"/><meta
content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<title>科目管理 - JeeSite Demo</title>
<title>科目管理 - Tamguo</title>
<script th:src="${setting.domain + 'global.min.js'}"></script>
<script th:src="${setting.domain + 'jquery/jquery-1.12.4.min.js'}"></script>
<script th:src="${setting.domain + 'jquery/jquery-migrate-1.4.1.min.js'}"></script>
@ -57,7 +57,7 @@ content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<div class="col-sm-8">
<select id="subjectId" name="subjectId" class="form-control">
<option value="">&nbsp;</option>
<option th:value="${subject.uid}" th:each="subject,subjectStat:${subjectList}" th:text="${subject.name}">财务经理</option>
<option th:value="${subject.id}" th:each="subject,subjectStat:${subjectList}" th:text="${subject.name}">财务经理</option>
</select>
</div>
</div>

@ -3,7 +3,7 @@ content="IE=edge"><meta name="keywords" content="PoweredByJeeSiteV4.0"/><meta ht
content="no-cache, no-store, must-revalidate"/><meta name="description" content="PoweredByJeeSiteV4.0"/><meta
content="no-cache" http-equiv="Pragma"/><meta http-equiv="Expires" content="0"/><meta
content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<title>科目管理 - JeeSite Demo</title>
<title>科目管理 - Tamguo</title>
<script th:src="${setting.domain + 'global.min.js'}"></script>
<script th:src="${setting.domain + 'jquery/jquery-1.12.4.min.js'}"></script>
<script th:src="${setting.domain + 'jquery/jquery-migrate-1.4.1.min.js'}"></script>

@ -0,0 +1,104 @@
<!DOCTYPE html><html><head><meta charset="utf-8"><meta content="webkit" name="renderer"/><meta http-equiv="X-UA-Compatible"
content="IE=edge"><meta name="keywords" content="PoweredByJeeSiteV4.0"/><meta http-equiv="Cache-Control"
content="no-cache, no-store, must-revalidate"/><meta name="description" content="PoweredByJeeSiteV4.0"/><meta
content="no-cache" http-equiv="Pragma"/><meta http-equiv="Expires" content="0"/><meta
content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<title>会员管理 - Tamguo OMS</title>
<script th:src="${setting.domain + 'global.min.js'}"></script>
<script th:src="${setting.domain + 'jquery/jquery-1.12.4.min.js'}"></script>
<script th:src="${setting.domain + 'jquery/jquery-migrate-1.4.1.min.js'}"></script>
<!--[if lt IE 9]><script src="/js/static/common/h5fix.min.js"></script><![endif]-->
<link rel="stylesheet" th:href="${setting.domain + 'fonts/font-icons.min.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'bootstrap/css/bootstrap.min.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'select2/4.0/select2.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'icheck/1.0/minimal/grey.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'jqGrid/4.7/css/ui.jqgrid.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'adminlte/css/AdminLTE.min.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'common/jeesite.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'common/common.css'}">
</head><body class="hold-transition ">
<div class="wrapper"><div class="main-content">
<div class="box box-main">
<div class="box-header">
<div class="box-title">
<i class="fa icon-user"></i> 会员管理
</div>
<div class="box-tools pull-right">
<a href="#" class="btn btn-default" id="btnSearch" title="查询"><i class="fa fa-filter"></i> 查询</a>
</div>
</div>
<div class="box-body">
<form id="searchForm" th:action="${setting.domain + 'tiku/member/listData'}" method="post" class="form-inline " data-page-no="1" data-page-size="10" data-order-by="">
<div class="form-group">
<label class="control-label">手机号:</label>
<div class="control-inline">
<input type="text" id="mobile" name="mobile" value="" maxlength="100" class="form-control width-90"/>
</div>
</div>
<div class="form-group">
<label class="control-label">用户名:</label>
<div class="control-inline">
<input type="text" id="username" name="username" value="" maxlength="100" class="form-control width-90"/>
</div>
</div>
<div class="form-group">
<label class="control-label">昵称:</label>
<div class="control-inline">
<input type="text" id="nickName" name="nickName" value="" maxlength="100" class="form-control width-90"/>
</div>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-sm">查询</button>
<button type="reset" class="btn btn-default btn-sm">重置</button>
</div>
</form>
<table id="dataGrid"></table>
<div id="dataGridPage"></div>
</div>
</div>
</div>
</div>
<a id="scroll-up" href="#" class="btn btn-sm"><i class="fa fa-angle-double-up"></i></a>
<script th:src="${setting.domain + 'bootstrap/js/bootstrap.min.js'}"></script>
<script th:src="${setting.domain + 'select2/4.0/select2.js'}"></script>
<script th:src="${setting.domain + 'select2/4.0/i18n/zh_CN.js'}"></script>
<script th:src="${setting.domain + 'layer/3.1/layer.js'}"></script>
<script th:src="${setting.domain + 'my97/WdatePicker.js'}"></script>
<script th:src="${setting.domain + 'jqGrid/4.7/js/jquery.jqGrid.js'}"></script>
<script th:src="${setting.domain + 'jqGrid/4.7/js/jquery.jqGrid.extend.js'}"></script>
<script th:src="${setting.domain + 'jqGrid/4.7/js/i18n/zh_CN.js'}"></script>
<script th:src="${setting.domain + 'common/jeesite.js'}"></script>
<script th:src="${setting.domain + 'common/i18n/jeesite_zh_CN.js'}"></script>
<script th:src="${setting.domain + 'common/common.js'}"></script>
<script>
// 初始化DataGrid对象
$('#dataGrid').dataGrid({
searchForm: $("#searchForm"),
columnModel: [
{header:'会员编号', name:'id', index:'u.id', width:200, align:"center", frozen:true, formatter: function(val, obj, row, act){
return '<a href="tiku/member/update?id='+row.id+'&op=edit" class="btnList" data-title="编辑会员">'+(val||row.id)+'</a>';
}},
{header:'用户名', name:'username', index:'u.username', width:150, align:"center"},
{header:'昵称', name:'nickName', index:'u.nickName', width:150, align:"center"},
{header:'手机号', name:'mobile', index:'u.mobile', width:150, align:"center"},
{header:'邮箱', name:'email', index:'u.email', width:200, align:"center"},
{header:'积分', name:'point', index:'u.point', width:150, align:"center"},
{header:'余额', name:'amount', index:'u.amount', width:150, align:"center"},
{header:'最后登录时间', name:'lastLoginTime', index:'u.lastLoginTime', width:200, align:"center"},
{header:'操作', name:'actions', width:80, sortable:false, title:false, formatter: function(val, obj, row, act){
var actions = [];
actions.push('<a href="tiku/member/update?id='+row.id+'" class="btnList" title="编辑会员"><i class="fa fa-pencil"></i></a>&nbsp;');
actions.push('<a href="javascript:" class="btnMore" title="更多操作"><i class="fa fa-chevron-circle-right"></i></a>&nbsp;');
actions.push('<div class="moreItems">');
actions.push('<a href="tiku/member/reward?id='+row.id+'&op=auth" class="btn btn-default btn-xs btnList" title="奖励"><i class="fa fa-check-square-o"></i> 奖励</a>&nbsp;');
actions.push('</div>');
return actions.join('');
}}
],
// 加载成功后执行事件
ajaxSuccess: function(data){
}
});
</script>

@ -0,0 +1,151 @@
<!DOCTYPE html><html><head><meta charset="utf-8"><meta content="webkit" name="renderer"/><meta http-equiv="X-UA-Compatible"
content="IE=edge"><meta name="keywords" content="PoweredByJeeSiteV4.0"/><meta http-equiv="Cache-Control"
content="no-cache, no-store, must-revalidate"/><meta name="description" content="PoweredByJeeSiteV4.0"/><meta
content="no-cache" http-equiv="Pragma"/><meta http-equiv="Expires" content="0"/><meta
content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<title>奖励积分 - TamGuo OMS</title>
<script th:src="${setting.domain + 'global.min.js'}"></script>
<script th:src="${setting.domain + 'jquery/jquery-1.12.4.min.js'}"></script>
<script th:src="${setting.domain + 'jquery/jquery-migrate-1.4.1.min.js'}"></script>
<!--[if lt IE 9]><script src="/js/static/common/h5fix.min.js"></script><![endif]-->
<link rel="stylesheet" th:href="${setting.domain + 'fonts/font-icons.min.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'bootstrap/css/bootstrap.min.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'select2/4.0/select2.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'icheck/1.0/minimal/grey.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'jqGrid/4.7/css/ui.jqgrid.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'adminlte/css/AdminLTE.min.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'common/jeesite.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'common/common.css'}">
</head><body class="hold-transition ">
<div class="wrapper"><div class="main-content">
<div class="box box-main">
<div class="box-header with-border">
<div class="box-title">
<i class="fa icon-people"></i> 会员奖励积分
</div>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
</div>
</div>
<form id="inputForm" th:action="${setting.domain + 'tiku/member/reward'}" method="post" class="form-horizontal">
<input type="hidden" id="id" name="id" th:value="${member.id}"/>
<input type="hidden" id="bookId" name="bookId" value=""/>
<div class="box-body">
<br/> <div class="row">
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 会员账号:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<input type="text" id="username" name="username" th:value="${member.username}" minlength="4" maxlength="20" readonly="true" class="form-control required userName"/>
</div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 会员昵称:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<input type="text" id="nickName" name="nickName" th:value="${member.nickName}" maxlength="32" readonly="true" class="form-control required "/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 奖励积分:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<input type="text" id="rewardPoint" name="rewardPoint" value="" maxlength="20" class="form-control required"/>
</div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 奖励金额:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<input type="text" id="rewardMoney" name="rewardMoney" value="" maxlength="20" class="form-control required "/>
</div>
</div>
</div>
</div>
<div class="form-unit">会员书籍</div>
<div class="pl10 pb20">
<table id="bookGrid"></table>
</div>
</div>
<div class="box-footer">
<div class="row">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-sm btn-primary" id="btnSubmit"><i class="fa fa-check"></i> 保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-default" id="btnCancel" onclick="js.closeCurrentTabPage()"><i class="fa fa-reply-all"></i> 关 闭</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<a id="scroll-up" href="#" class="btn btn-sm"><i class="fa fa-angle-double-up"></i></a>
<script th:src="${setting.domain + 'bootstrap/js/bootstrap.min.js'}"></script>
<script th:src="${setting.domain + 'select2/4.0/select2.js'}"></script>
<script th:src="${setting.domain + 'select2/4.0/i18n/zh_CN.js'}"></script>
<script th:src="${setting.domain + 'layer/3.1/layer.js'}"></script>
<script th:src="${setting.domain + 'my97/WdatePicker.js'}"></script>
<script th:src="${setting.domain + 'jqGrid/4.7/js/jquery.jqGrid.js'}"></script>
<script th:src="${setting.domain + 'jqGrid/4.7/js/jquery.jqGrid.extend.js'}"></script>
<script th:src="${setting.domain + 'jqGrid/4.7/js/i18n/zh_CN.js'}"></script>
<script th:src="${setting.domain + 'jquery-validation/1.16/jquery.validate.js'}"></script>
<script th:src="${setting.domain + 'jquery-validation/1.16/localization/messages_zh_CN.js'}"></script>
<script th:src="${setting.domain + 'jquery-validation/1.16/jquery.validate.extend.js'}"></script>
<script th:src="${setting.domain + 'common/jeesite.js'}"></script>
<script th:src="${setting.domain + 'common/i18n/jeesite_zh_CN.js'}"></script>
<script th:src="${setting.domain + 'common/common.js'}"></script>
<script type="text/javascript" th:inline="javascript">
// 加载角色列表
var bookGrid = $("#bookGrid").dataGrid({
url: ctx + 'tiku/member/bookTreeData',
postData: [
{name:'memberId',value:$("#id").val()}
],
columnModel: [
{header:'书籍编码', name:'id', sortable:false, width:100, align:"center"},
{header:'书籍分类', name:'categoryName', sortable:false, width:100, align:"center"},
{header:'书籍名称', name:'name', sortable:false, width:100, align:"center"},
{header:'创建时间', name:'createDate', sortable:false, width:100, align:"center"}
],
showCheckbox: false,
autoGridHeight: function(){
return 'auto';
},
autoGridWidth: function(){
return $('#inputForm .box-body').width()-20;
},
ajaxSuccess: function(){
console.log("success");
}
});
$("#inputForm").validate({
submitHandler: function(form){
// 获取选中角色
var book = bookGrid.dataGrid('getSelectRow');
if(book == null){
js.showMessage("请选择获奖的书籍!");
return false;
}
$("#bookId").val(book);
js.ajaxSubmitForm($(form), function(data){
js.showMessage(data.message);
if(data.result == 0){
js.closeCurrentTabPage(function(contentWindow){
contentWindow.page();
});
}
}, "json");
}
});
</script>
Loading…
Cancel
Save